From 61d0030342536695d60f429e289a1cc9b315e8e1 Mon Sep 17 00:00:00 2001 From: Nino Date: Tue, 29 Apr 2025 14:05:11 +0200 Subject: [PATCH] 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 --- .../feature/return-process/src/lib/routes.ts | 5 +++ libs/oms/feature/return-review/README.md | 7 ++++ .../feature/return-review/eslint.config.mjs | 34 +++++++++++++++++++ libs/oms/feature/return-review/jest.config.ts | 21 ++++++++++++ libs/oms/feature/return-review/project.json | 20 +++++++++++ libs/oms/feature/return-review/src/index.ts | 1 + .../src/lib/return-review.component.html | 1 + .../src/lib/return-review.component.scss | 0 .../src/lib/return-review.component.spec.ts | 21 ++++++++++++ .../src/lib/return-review.component.ts | 10 ++++++ .../feature/return-review/src/lib/routes.ts | 4 +++ .../feature/return-review/src/test-setup.ts | 6 ++++ libs/oms/feature/return-review/tsconfig.json | 28 +++++++++++++++ .../feature/return-review/tsconfig.lib.json | 17 ++++++++++ .../feature/return-review/tsconfig.spec.json | 16 +++++++++ .../feature/return-search/src/lib/routes.ts | 6 ++-- .../src/lib/return-summary.component.ts | 3 +- .../feature/return-summary/src/lib/routes.ts | 9 ++++- tsconfig.base.json | 3 ++ 19 files changed, 207 insertions(+), 5 deletions(-) create mode 100644 libs/oms/feature/return-review/README.md create mode 100644 libs/oms/feature/return-review/eslint.config.mjs create mode 100644 libs/oms/feature/return-review/jest.config.ts create mode 100644 libs/oms/feature/return-review/project.json create mode 100644 libs/oms/feature/return-review/src/index.ts create mode 100644 libs/oms/feature/return-review/src/lib/return-review.component.html create mode 100644 libs/oms/feature/return-review/src/lib/return-review.component.scss create mode 100644 libs/oms/feature/return-review/src/lib/return-review.component.spec.ts create mode 100644 libs/oms/feature/return-review/src/lib/return-review.component.ts create mode 100644 libs/oms/feature/return-review/src/lib/routes.ts create mode 100644 libs/oms/feature/return-review/src/test-setup.ts create mode 100644 libs/oms/feature/return-review/tsconfig.json create mode 100644 libs/oms/feature/return-review/tsconfig.lib.json create mode 100644 libs/oms/feature/return-review/tsconfig.spec.json diff --git a/libs/oms/feature/return-process/src/lib/routes.ts b/libs/oms/feature/return-process/src/lib/routes.ts index 49ffe5b80..781e8c3f4 100644 --- a/libs/oms/feature/return-process/src/lib/routes.ts +++ b/libs/oms/feature/return-process/src/lib/routes.ts @@ -8,4 +8,9 @@ export const routes: Route[] = [ loadChildren: () => import('@isa/oms/feature/return-summary').then((feat) => feat.routes), }, + { + path: 'review', + loadChildren: () => + import('@isa/oms/feature/return-review').then((feat) => feat.routes), + }, ]; diff --git a/libs/oms/feature/return-review/README.md b/libs/oms/feature/return-review/README.md new file mode 100644 index 000000000..7464fa487 --- /dev/null +++ b/libs/oms/feature/return-review/README.md @@ -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. diff --git a/libs/oms/feature/return-review/eslint.config.mjs b/libs/oms/feature/return-review/eslint.config.mjs new file mode 100644 index 000000000..c4261d066 --- /dev/null +++ b/libs/oms/feature/return-review/eslint.config.mjs @@ -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: {}, + }, +]; diff --git a/libs/oms/feature/return-review/jest.config.ts b/libs/oms/feature/return-review/jest.config.ts new file mode 100644 index 000000000..75c4513b2 --- /dev/null +++ b/libs/oms/feature/return-review/jest.config.ts @@ -0,0 +1,21 @@ +export default { + displayName: 'return-review', + preset: '../../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../../coverage/libs/oms/feature/return-review', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/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', + ], +}; diff --git a/libs/oms/feature/return-review/project.json b/libs/oms/feature/return-review/project.json new file mode 100644 index 000000000..06dcfc281 --- /dev/null +++ b/libs/oms/feature/return-review/project.json @@ -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" + } + } +} diff --git a/libs/oms/feature/return-review/src/index.ts b/libs/oms/feature/return-review/src/index.ts new file mode 100644 index 000000000..a0bf081a1 --- /dev/null +++ b/libs/oms/feature/return-review/src/index.ts @@ -0,0 +1 @@ +export { routes } from './lib/routes'; diff --git a/libs/oms/feature/return-review/src/lib/return-review.component.html b/libs/oms/feature/return-review/src/lib/return-review.component.html new file mode 100644 index 000000000..a1a1dfc05 --- /dev/null +++ b/libs/oms/feature/return-review/src/lib/return-review.component.html @@ -0,0 +1 @@ +

ReturnReview works!

diff --git a/libs/oms/feature/return-review/src/lib/return-review.component.scss b/libs/oms/feature/return-review/src/lib/return-review.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/libs/oms/feature/return-review/src/lib/return-review.component.spec.ts b/libs/oms/feature/return-review/src/lib/return-review.component.spec.ts new file mode 100644 index 000000000..e95098a25 --- /dev/null +++ b/libs/oms/feature/return-review/src/lib/return-review.component.spec.ts @@ -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; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ReturnReviewComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(ReturnReviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/libs/oms/feature/return-review/src/lib/return-review.component.ts b/libs/oms/feature/return-review/src/lib/return-review.component.ts new file mode 100644 index 000000000..905844260 --- /dev/null +++ b/libs/oms/feature/return-review/src/lib/return-review.component.ts @@ -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 {} diff --git a/libs/oms/feature/return-review/src/lib/routes.ts b/libs/oms/feature/return-review/src/lib/routes.ts new file mode 100644 index 000000000..bd5bd6536 --- /dev/null +++ b/libs/oms/feature/return-review/src/lib/routes.ts @@ -0,0 +1,4 @@ +import { Routes } from '@angular/router'; +import { ReturnReviewComponent } from './return-review.component'; + +export const routes: Routes = [{ path: '', component: ReturnReviewComponent }]; diff --git a/libs/oms/feature/return-review/src/test-setup.ts b/libs/oms/feature/return-review/src/test-setup.ts new file mode 100644 index 000000000..ea414013f --- /dev/null +++ b/libs/oms/feature/return-review/src/test-setup.ts @@ -0,0 +1,6 @@ +import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; + +setupZoneTestEnv({ + errorOnUnknownElements: true, + errorOnUnknownProperties: true, +}); diff --git a/libs/oms/feature/return-review/tsconfig.json b/libs/oms/feature/return-review/tsconfig.json new file mode 100644 index 000000000..52a0866e0 --- /dev/null +++ b/libs/oms/feature/return-review/tsconfig.json @@ -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 + } +} diff --git a/libs/oms/feature/return-review/tsconfig.lib.json b/libs/oms/feature/return-review/tsconfig.lib.json new file mode 100644 index 000000000..912738705 --- /dev/null +++ b/libs/oms/feature/return-review/tsconfig.lib.json @@ -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"] +} diff --git a/libs/oms/feature/return-review/tsconfig.spec.json b/libs/oms/feature/return-review/tsconfig.spec.json new file mode 100644 index 000000000..6e5925e5c --- /dev/null +++ b/libs/oms/feature/return-review/tsconfig.spec.json @@ -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" + ] +} diff --git a/libs/oms/feature/return-search/src/lib/routes.ts b/libs/oms/feature/return-search/src/lib/routes.ts index 4c516f7e3..e3851e8c2 100644 --- a/libs/oms/feature/return-search/src/lib/routes.ts +++ b/libs/oms/feature/return-search/src/lib/routes.ts @@ -20,10 +20,12 @@ export const routes: Routes = [ }, { 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', - loadChildren: () => import('@isa/oms/feature/return-process').then((feat) => feat.routes), + loadChildren: () => + import('@isa/oms/feature/return-process').then((feat) => feat.routes), }, ]; diff --git a/libs/oms/feature/return-summary/src/lib/return-summary.component.ts b/libs/oms/feature/return-summary/src/lib/return-summary.component.ts index ee15acdcc..28b68585d 100644 --- a/libs/oms/feature/return-summary/src/lib/return-summary.component.ts +++ b/libs/oms/feature/return-summary/src/lib/return-summary.component.ts @@ -113,8 +113,7 @@ export class ReturnSummaryComponent { }); this.returnItemsAndPrintReciptStatus.set('success'); - // TODO: Navigation to "Rückgabe war erfolgreich" page - await this.#router.navigate(['../../'], { + await this.#router.navigate(['../', 'review'], { relativeTo: this.#activatedRoute, }); } catch (error) { diff --git a/libs/oms/feature/return-summary/src/lib/routes.ts b/libs/oms/feature/return-summary/src/lib/routes.ts index ac2b81365..ad591d6fa 100644 --- a/libs/oms/feature/return-summary/src/lib/routes.ts +++ b/libs/oms/feature/return-summary/src/lib/routes.ts @@ -1,4 +1,11 @@ import { Routes } from '@angular/router'; 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), + }, +]; diff --git a/tsconfig.base.json b/tsconfig.base.json index 81f79546a..7c27e2098 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -55,6 +55,9 @@ "@isa/oms/feature/return-process": [ "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": [ "libs/oms/feature/return-search/src/index.ts" ],