From 2c228c3002a5464604f88513405fd96e826cf081 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Tue, 29 Oct 2024 15:32:04 +0100 Subject: [PATCH] OZG-6720 CR Kommentare --- ...sationseinheit-container.component.spec.ts | 10 +++++--- ...rganisationseinheit-container.component.ts | 4 +-- .../organisationseinheit-list.component.html | 2 +- ...rganisationseinheit-list.component.spec.ts | 25 ++++++++++--------- .../organisationseinheit-list.component.ts | 6 ++--- ...nseinheit-form-container.component.spec.ts | 13 +++++----- ...rganisationseinheit-form.component.spec.ts | 10 +++----- ...isationseinheit-signatur.component.spec.ts | 4 +-- .../postfach-form.component.spec.ts | 6 ++--- .../src/lib/resource/resource.service.ts | 14 +++++------ .../lib/service/formservice.abstract.spec.ts | 8 ++++-- 11 files changed, 52 insertions(+), 50 deletions(-) diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts index ff5d2905ee..4df2de4c73 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts @@ -21,9 +21,13 @@ describe('OrganisationsEinheitContainerComponent', () => { createAdminOrganisationsEinheitListResource(), ); + const listSelector: string = getDataTestIdOf('organisations-einheit-list'); + beforeEach(async () => { - organisationsEinheitService = mock(OrganisationsEinheitService); - organisationsEinheitService.getList = jest.fn().mockReturnValue(of(organisationsEinheitListStateResource)); + organisationsEinheitService = { + ...mock(OrganisationsEinheitService), + getList: jest.fn().mockReturnValue(of(organisationsEinheitListStateResource)), + }; await TestBed.configureTestingModule({ declarations: [ @@ -71,8 +75,6 @@ describe('OrganisationsEinheitContainerComponent', () => { describe('template', () => { describe('organisationsEinheiten list', () => { - const listSelector: string = getDataTestIdOf('organisations-einheit-list'); - it('should show list', () => { existsAsHtmlElement(fixture, listSelector); }); diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts index ca1097d757..c862b254f5 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts @@ -12,11 +12,11 @@ import { OrganisationsEinheitService } from '../organisationseinheit.service'; export class OrganisationsEinheitContainerComponent implements OnInit { organisationsEinheitListStateResource$: Observable<StateResource<AdminOrganisationsEinheitListResource>>; + public readonly organisationsEinheitListLinkRel = OrganisationsEinheitListLinkRel; + constructor(private organisationsEinheitService: OrganisationsEinheitService) {} ngOnInit(): void { this.organisationsEinheitListStateResource$ = this.organisationsEinheitService.getList(); } - - public readonly organisationsEinheitListLinkRel = OrganisationsEinheitListLinkRel; } diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html index 9d95617c21..982a56b5f0 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html @@ -1,7 +1,7 @@ <ods-list *ngIf="organisationsEinheitResources.length > 0" data-test-id="organisations-einheit-list"> <ods-list-item *ngFor="let organisationsEinheitResource of organisationsEinheitResources" - [routerLink]="organisationsEinheitResource | toResourceUri: OrganisationsEinheitLinkRel.SELF" + [routerLink]="organisationsEinheitResource | toResourceUri" [class.text-red-500]=" organisationsEinheitResource.syncResult === AdminOrganisationsEinheitSyncResult.NOT_FOUND_IN_PVOG || organisationsEinheitResource.syncResult === AdminOrganisationsEinheitSyncResult.ORGANISATIONSEINHEIT_ID_NOT_UNIQUE diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts index 3daf06a673..1ed84ced8b 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts @@ -3,6 +3,7 @@ import { ConvertForDataTestPipe, ToResourceUriPipe } from '@alfa-client/tech-sha import { existsAsHtmlElement, getElementFromFixture, + getElementFromFixtureByType, getElementsFromFixture, mock, notExistsAsHtmlElement, @@ -22,9 +23,13 @@ describe('OrganisationsEinheitListComponent', () => { const listSelector: string = getDataTestIdOf('organisations-einheit-list'); const listItemSelector: string = getDataTestIdOf('organisations-einheit-list-item'); + const organisationsEinheitNameSelector: string = getDataTestIdOf('organisations-einheit-name'); + const organisationsEinheitIdSelector: string = getDataTestIdOf('organisations-einheit-id'); - const organisationsEinheitResource: AdminOrganisationsEinheitResource = createAdminOrganisationsEinheitResource(); - organisationsEinheitResource.syncResult = AdminOrganisationsEinheitSyncResult.NOT_FOUND_IN_PVOG; + const organisationsEinheitResource: AdminOrganisationsEinheitResource = { + ...createAdminOrganisationsEinheitResource(), + syncResult: AdminOrganisationsEinheitSyncResult.NOT_FOUND_IN_PVOG, + }; beforeEach(async () => { await TestBed.configureTestingModule({ @@ -49,30 +54,26 @@ describe('OrganisationsEinheitListComponent', () => { describe('input', () => { describe('organisationsEinheitResources', () => { - let listItemElement: HTMLElement; - let nameElement: Element; - let idElement: Element; - let iconElement: Element; - beforeEach(() => { component.organisationsEinheitResources = [organisationsEinheitResource]; fixture.detectChanges(); - - listItemElement = getElementFromFixture(fixture, listItemSelector); - nameElement = listItemElement.querySelector('[data-test-id="organisations-einheit-name"]'); - idElement = listItemElement.querySelector('[data-test-id="organisations-einheit-id"]'); - iconElement = listItemElement.querySelector('ods-exclamation-icon'); }); it('should set organisationsEinheitResource name', () => { + const nameElement: HTMLElement = getElementFromFixture(fixture, organisationsEinheitNameSelector); + expect(nameElement.textContent).toBe(organisationsEinheitResource.name); }); it('should set organisationsEinheitResource organisationsEinheitId', () => { + const idElement: HTMLElement = getElementFromFixture(fixture, organisationsEinheitIdSelector); + expect(idElement.textContent).toBe(organisationsEinheitResource.organisationsEinheitId); }); it('should set exclamation icon', () => { + const iconElement: ExclamationIconComponent = getElementFromFixtureByType(fixture, ExclamationIconComponent); + expect(iconElement).toBeTruthy(); }); }); diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts index 390737c28a..51937dcb6d 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts @@ -1,6 +1,5 @@ import { AdminOrganisationsEinheitResource, AdminOrganisationsEinheitSyncResult } from '@admin-client/admin-settings'; import { Component, Input } from '@angular/core'; -import { OrganisationsEinheitLinkRel } from '../../organisations-einheit.linkrel'; @Component({ selector: 'admin-organisationseinheit-list', @@ -18,6 +17,8 @@ export class OrganisationsEinheitListComponent { this.moveChildrenIntoParentLevel(list); } + public readonly AdminOrganisationsEinheitSyncResult = AdminOrganisationsEinheitSyncResult; + moveChildrenIntoParentLevel(list: AdminOrganisationsEinheitResource[]): void { list.forEach((parent: AdminOrganisationsEinheitResource) => { this._organisationsEinheitResources.push(parent); @@ -30,7 +31,4 @@ export class OrganisationsEinheitListComponent { } }); } - - public readonly AdminOrganisationsEinheitSyncResult = AdminOrganisationsEinheitSyncResult; - public readonly OrganisationsEinheitLinkRel = OrganisationsEinheitLinkRel; } diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form-container.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form-container.component.spec.ts index fae8d021d6..5c1c876863 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form-container.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form-container.component.spec.ts @@ -18,9 +18,14 @@ describe('OrganisationsEinheitFormContainerComponent', () => { const organisationsEinheitStateResource: StateResource<AdminOrganisationsEinheitResource> = createStateResource(organisationsEinheitResource); + const headlineSelector: string = getDataTestIdOf('organisations-form-container-headline'); + const formSelector: string = getDataTestIdOf('organisations-form'); + beforeEach(async () => { - organisationsEinheitService = mock(OrganisationsEinheitService); - organisationsEinheitService.get = jest.fn().mockReturnValue(of(organisationsEinheitStateResource)); + organisationsEinheitService = { + ...mock(OrganisationsEinheitService), + get: jest.fn().mockReturnValue(of(organisationsEinheitStateResource)), + }; await TestBed.configureTestingModule({ declarations: [OrganisationsEinheitFormContainerComponent, MockComponent(OrganisationsEinheitFormComponent)], @@ -62,8 +67,6 @@ describe('OrganisationsEinheitFormContainerComponent', () => { describe('template', () => { describe('headline', () => { - const headlineSelector: string = getDataTestIdOf('organisations-form-container-headline'); - it('should show headline', () => { existsAsHtmlElement(fixture, headlineSelector); }); @@ -76,8 +79,6 @@ describe('OrganisationsEinheitFormContainerComponent', () => { }); describe('organisationsEinheit form', () => { - const formSelector: string = getDataTestIdOf('organisations-form'); - it('should show form', () => { existsAsHtmlElement(fixture, formSelector); }); diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts index ff2443a53a..ad4f7bd11d 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts @@ -21,6 +21,10 @@ describe('OrganisationsEinheitFormComponent', () => { let formService: OrganisationsEinheitFormService; let organisationsEinheitService: Mock<OrganisationsEinheitService>; + const signaturComponentSelector: string = getDataTestIdOf('organisations-einheit-signatur-component'); + const saveButtonSelector: string = getDataTestIdOf('save-button'); + const invalidMessageSpanSelector: string = getDataTestIdOf('invalid-empty-message-span'); + beforeEach(async () => { organisationsEinheitService = mock(OrganisationsEinheitService); @@ -84,24 +88,18 @@ describe('OrganisationsEinheitFormComponent', () => { describe('template', () => { describe('organisationsEinheit signatur component', () => { - const signaturComponentSelector: string = getDataTestIdOf('organisations-einheit-signatur-component'); - it('should show signatur component', () => { existsAsHtmlElement(fixture, signaturComponentSelector); }); }); describe('save button', () => { - const saveButtonSelector: string = getDataTestIdOf('save-button'); - it('should show save button', () => { existsAsHtmlElement(fixture, saveButtonSelector); }); }); describe('invalid message', () => { - const invalidMessageSpanSelector: string = getDataTestIdOf('invalid-empty-message-span'); - it('should show if form is invalid', () => { const problemDetail: ProblemDetail = { ...createProblemDetail(), diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-signatur/organisationseinheit-signatur.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-signatur/organisationseinheit-signatur.component.spec.ts index 4d70986f63..9f47fc9511 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-signatur/organisationseinheit-signatur.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit-signatur/organisationseinheit-signatur.component.spec.ts @@ -16,6 +16,8 @@ describe('OrganisationsEinheitSignaturComponent', () => { let fixture: ComponentFixture<OrganisationsEinheitSignaturComponent>; let formService: OrganisationsEinheitFormService; + const signaturTextareaSelector: string = getDataTestIdOf('signatur-text'); + beforeEach(async () => { formService = new OrganisationsEinheitFormService(new FormBuilder(), useFromMock(mock(OrganisationsEinheitService))); @@ -42,8 +44,6 @@ describe('OrganisationsEinheitSignaturComponent', () => { describe('template', () => { describe('ods-textarea-editor', () => { describe('input', () => { - const signaturTextareaSelector: string = getDataTestIdOf('signatur-text'); - it('should set signatur field', () => { const textAreaEditor: HTMLElement = getElementFromFixture(fixture, signaturTextareaSelector); diff --git a/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts index 59075f400d..8c8096d7df 100644 --- a/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts @@ -57,12 +57,12 @@ describe('PostfachFormComponent', () => { describe('set postfachStateResource', () => { it('should return resource', () => { - const updatePostfachResourceFn: jest.SpyInstance = jest.spyOn(component, 'updatePostfachResource'); - const postfachResource: PostfachResource = createPostfachResource(); + component.updatePostfachResource = jest.fn(); + const postfachResource: PostfachResource = createPostfachResource(); component.postfachStateResource = createStateResource(postfachResource); - expect(updatePostfachResourceFn).toHaveBeenCalledWith(postfachResource); + expect(component.updatePostfachResource).toHaveBeenCalledWith(postfachResource); }); }); diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts index a19ce64d7e..1b5ea7e054 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts @@ -120,19 +120,17 @@ export abstract class ResourceService<B extends Resource, T extends Resource> { } public save(toSave: unknown): Observable<StateResource<T>> { - return this.persist(this.doSave.bind(this), toSave); + const previousResource: T = this.stateResource.value.resource; + return this.handleSave(this.doSave(previousResource, toSave)); } public patch(toPatch: unknown): Observable<StateResource<T>> { - return this.persist(this.doPatch.bind(this), toPatch); + const previousResource: T = this.stateResource.value.resource; + return this.handleSave(this.doPatch(previousResource, toPatch)); } - private persist( - action: (previousResource: T, payload: unknown) => Observable<T>, - payload: unknown, - ): Observable<StateResource<T>> { - const previousResource: T = this.stateResource.value.resource; - return action(previousResource, payload).pipe( + private handleSave(response$: Observable<T>): Observable<StateResource<T>> { + return response$.pipe( tap((loadedResource: T) => this.stateResource.next(createStateResource(loadedResource))), map(() => this.stateResource.value), catchError((errorResponse: HttpErrorResponse) => this.handleError(errorResponse)), diff --git a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts index ea2d29cd9a..d525b273f7 100644 --- a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts @@ -167,13 +167,17 @@ describe('AbstractFormService', () => { describe('isInvalid', () => { it('should return false on valid state', () => { - expect(formService.isInvalid()).toBeFalsy(); + const isInvalid: boolean = formService.isInvalid(); + + expect(isInvalid).toBeFalsy(); }); it('should return true on invalid state', () => { formService.form.controls[TestFormService.FIELD].setErrors({ required: true }); - expect(formService.isInvalid()).toBeTruthy(); + const isInvalid: boolean = formService.isInvalid(); + + expect(isInvalid).toBeTruthy(); }); }); }); -- GitLab