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 ff5d2905ee7f60f01e81d6927585617c0729bc3d..4df2de4c73425c2807d46e7d01d53d4839eb34af 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 ca1097d75771a13f6ff1af77edf30cb55b83c8d5..c862b254f5100430ac6f1f6fdd522511465864bb 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 9d95617c210484008aa836d6894cdcfbdb4e19e9..982a56b5f01c99c6fd451fe2579e1361de22f2b9 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 3daf06a6739796c053335cbddc9f79a37587ca7f..1ed84ced8bdd0a6662cb17d9d227c1b3a2a46b31 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 390737c28a28a76edc10fa6fe8b9e44519270239..51937dcb6d5bc30bec596b5514879c14fca79dcc 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 fae8d021d698cbb8c2dead8ecf0e789d97468c39..5c1c87686355ef766dc5ff2afabf7b04308bb28d 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 ff2443a53a10269a02cd9f210738e317ba2b7f79..ad4f7bd11d40c6444ba2fdbbc169cd0b81aff0f4 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 4d70986f632f6b67780bd12444d8bdd61916e907..9f47fc9511c867a415ced0e677eb486c083a970c 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 59075f400d6472a12e718ade672dde58d60ba851..8c8096d7df647918130510a8ac0fad54499064f7 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 a19ce64d7eaaa7d7163636dae46701ebf3b7aa00..1b5ea7e05416786b91861e5f79a247501076fed3 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 ea2d29cd9a61e729d6267d4029c14f6e13757d02..d525b273f7de7b9f8e79b596c4ff58b128e23796 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(); }); }); });