feat(return-review): create return review library and connect to routing

Initialize the return-review feature library with basic component structure
and connect it to the existing routing system in both return-process and
return-summary features. Update navigation in ReturnSummaryComponent to
redirect to the review page after successful return completion.

Ref: #4942
This commit is contained in:
Nino
2025-04-29 14:05:11 +02:00
parent 86ed379b38
commit 61d0030342
19 changed files with 207 additions and 5 deletions

View File

@@ -8,4 +8,9 @@ export const routes: Route[] = [
loadChildren: () => loadChildren: () =>
import('@isa/oms/feature/return-summary').then((feat) => feat.routes), import('@isa/oms/feature/return-summary').then((feat) => feat.routes),
}, },
{
path: 'review',
loadChildren: () =>
import('@isa/oms/feature/return-review').then((feat) => feat.routes),
},
]; ];

View File

@@ -0,0 +1,7 @@
# return-review
This library was generated with [Nx](https://nx.dev).
## Running unit tests
Run `nx test return-review` to execute the unit tests.

View File

@@ -0,0 +1,34 @@
import nx from '@nx/eslint-plugin';
import baseConfig from '../../../../eslint.config.mjs';
export default [
...baseConfig,
...nx.configs['flat/angular'],
...nx.configs['flat/angular-template'],
{
files: ['**/*.ts'],
rules: {
'@angular-eslint/directive-selector': [
'error',
{
type: 'attribute',
prefix: 'omsFeature',
style: 'camelCase',
},
],
'@angular-eslint/component-selector': [
'error',
{
type: 'element',
prefix: 'oms-feature',
style: 'kebab-case',
},
],
},
},
{
files: ['**/*.html'],
// Override or add rules here
rules: {},
},
];

View File

@@ -0,0 +1,21 @@
export default {
displayName: 'return-review',
preset: '../../../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
coverageDirectory: '../../../../coverage/libs/oms/feature/return-review',
transform: {
'^.+\\.(ts|mjs|js|html)$': [
'jest-preset-angular',
{
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
},
],
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment',
],
};

View File

@@ -0,0 +1,20 @@
{
"name": "return-review",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/oms/feature/return-review/src",
"prefix": "oms-feature",
"projectType": "library",
"tags": [],
"targets": {
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "libs/oms/feature/return-review/jest.config.ts"
}
},
"lint": {
"executor": "@nx/eslint:lint"
}
}
}

View File

@@ -0,0 +1 @@
export { routes } from './lib/routes';

View File

@@ -0,0 +1 @@
<p>ReturnReview works!</p>

View File

@@ -0,0 +1,21 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ReturnReviewComponent } from './return-review.component';
describe('ReturnReviewComponent', () => {
let component: ReturnReviewComponent;
let fixture: ComponentFixture<ReturnReviewComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [ReturnReviewComponent],
}).compileComponents();
fixture = TestBed.createComponent(ReturnReviewComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,10 @@
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
@Component({
selector: 'oms-feature-return-review',
imports: [CommonModule],
templateUrl: './return-review.component.html',
styleUrl: './return-review.component.scss',
})
export class ReturnReviewComponent {}

View File

@@ -0,0 +1,4 @@
import { Routes } from '@angular/router';
import { ReturnReviewComponent } from './return-review.component';
export const routes: Routes = [{ path: '', component: ReturnReviewComponent }];

View File

@@ -0,0 +1,6 @@
import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone';
setupZoneTestEnv({
errorOnUnknownElements: true,
errorOnUnknownProperties: true,
});

View File

@@ -0,0 +1,28 @@
{
"compilerOptions": {
"target": "es2022",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"extends": "../../../../tsconfig.base.json",
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
}
}

View File

@@ -0,0 +1,17 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": []
},
"exclude": [
"src/**/*.spec.ts",
"src/test-setup.ts",
"jest.config.ts",
"src/**/*.test.ts"
],
"include": ["src/**/*.ts"]
}

View File

@@ -0,0 +1,16 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../../dist/out-tsc",
"module": "commonjs",
"target": "es2016",
"types": ["jest", "node"]
},
"files": ["src/test-setup.ts"],
"include": [
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

View File

@@ -20,10 +20,12 @@ export const routes: Routes = [
}, },
{ {
path: 'receipt', path: 'receipt',
loadChildren: () => import('@isa/oms/feature/return-details').then((feat) => feat.routes), loadChildren: () =>
import('@isa/oms/feature/return-details').then((feat) => feat.routes),
}, },
{ {
path: 'process', path: 'process',
loadChildren: () => import('@isa/oms/feature/return-process').then((feat) => feat.routes), loadChildren: () =>
import('@isa/oms/feature/return-process').then((feat) => feat.routes),
}, },
]; ];

View File

@@ -113,8 +113,7 @@ export class ReturnSummaryComponent {
}); });
this.returnItemsAndPrintReciptStatus.set('success'); this.returnItemsAndPrintReciptStatus.set('success');
// TODO: Navigation to "Rückgabe war erfolgreich" page await this.#router.navigate(['../', 'review'], {
await this.#router.navigate(['../../'], {
relativeTo: this.#activatedRoute, relativeTo: this.#activatedRoute,
}); });
} catch (error) { } catch (error) {

View File

@@ -1,4 +1,11 @@
import { Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { ReturnSummaryComponent } from './return-summary.component'; import { ReturnSummaryComponent } from './return-summary.component';
export const routes: Routes = [{ path: '', component: ReturnSummaryComponent }]; export const routes: Routes = [
{ path: '', component: ReturnSummaryComponent },
{
path: 'review',
loadChildren: () =>
import('@isa/oms/feature/return-review').then((feat) => feat.routes),
},
];

View File

@@ -55,6 +55,9 @@
"@isa/oms/feature/return-process": [ "@isa/oms/feature/return-process": [
"libs/oms/feature/return-process/src/index.ts" "libs/oms/feature/return-process/src/index.ts"
], ],
"@isa/oms/feature/return-review": [
"libs/oms/feature/return-review/src/index.ts"
],
"@isa/oms/feature/return-search": [ "@isa/oms/feature/return-search": [
"libs/oms/feature/return-search/src/index.ts" "libs/oms/feature/return-search/src/index.ts"
], ],