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