From 8889f6419fe56a72ae5ed7f47151cd6da4683110 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 29 Oct 2024 13:44:05 +0100
Subject: [PATCH] OZG-6720 CR Kommentare

---
 ...anisationseinheit-container.component.html | 13 ++--
 ...sationseinheit-container.component.spec.ts | 72 +++++++++----------
 ...rganisationseinheit-container.component.ts | 23 ++----
 ...rganisationseinheit-form.component.spec.ts |  2 +-
 .../postfach-form.component.spec.ts           | 21 ++----
 5 files changed, 52 insertions(+), 79 deletions(-)

diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html
index 5dc954e2c9..4ce4f6d31a 100644
--- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html
+++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html
@@ -1,7 +1,10 @@
 <h1 class="heading-1 pb-4">Organisationseinheiten</h1>
 
-<admin-organisationseinheit-list
-  *ngIf="organisationsEinheitResources$ | async as organisationsEinheitResources"
-  [organisationsEinheitResources]="organisationsEinheitResources"
-  data-test-id="organisations-einheit-list"
-/>
+<ng-container *ngIf="organisationsEinheitListStateResource$ | async as organisationsEinheitListStateResource">
+  <ozgcloud-spinner [stateResource]="organisationsEinheitListStateResource"/>
+
+  <admin-organisationseinheit-list
+    [organisationsEinheitResources]="organisationsEinheitListStateResource.resource | toEmbeddedResources: organisationsEinheitListLinkRel.LIST"
+    data-test-id="organisations-einheit-list"
+  />
+</ng-container>
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 7c526c1f8f..ff5d2905ee 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
@@ -1,15 +1,14 @@
-import { AdminOrganisationsEinheitResource, OrganisationsEinheitContainerComponent } from '@admin-client/admin-settings';
-import { createStateResource } from '@alfa-client/tech-shared';
-import { Mock, existsAsHtmlElement, mock } from '@alfa-client/test-utils';
+import { AdminOrganisationsEinheitListResource, OrganisationsEinheitContainerComponent } from '@admin-client/admin-settings';
+import { StateResource, ToEmbeddedResourcesPipe, createStateResource } from '@alfa-client/tech-shared';
+import { Mock, existsAsHtmlElement, getMockComponent, mock } from '@alfa-client/test-utils';
+import { SpinnerComponent } from '@alfa-client/ui';
+import { OrganisationsEinheitListResource } from '@alfa-client/zustaendige-stelle-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
 import { MockComponent } from 'ng-mocks';
-import { Observable, of } from 'rxjs';
+import { of } from 'rxjs';
 import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
-import {
-  createAdminOrganisationsEinheitListResource,
-  createAdminOrganisationsEinheitResource,
-} from '../../../../test/organisations-einheit/organisations-einheit';
+import { createAdminOrganisationsEinheitListResource } from '../../../../test/organisations-einheit/organisations-einheit';
 import { OrganisationsEinheitService } from '../organisationseinheit.service';
 import { OrganisationsEinheitListComponent } from './organisationseinheit-list/organisationseinheit-list.component';
 
@@ -18,14 +17,21 @@ describe('OrganisationsEinheitContainerComponent', () => {
   let fixture: ComponentFixture<OrganisationsEinheitContainerComponent>;
   let organisationsEinheitService: Mock<OrganisationsEinheitService>;
 
+  const organisationsEinheitListStateResource: StateResource<AdminOrganisationsEinheitListResource> = createStateResource(
+    createAdminOrganisationsEinheitListResource(),
+  );
+
   beforeEach(async () => {
     organisationsEinheitService = mock(OrganisationsEinheitService);
-    organisationsEinheitService.getList = jest
-      .fn()
-      .mockReturnValue(of(createStateResource(createAdminOrganisationsEinheitListResource())));
+    organisationsEinheitService.getList = jest.fn().mockReturnValue(of(organisationsEinheitListStateResource));
 
     await TestBed.configureTestingModule({
-      declarations: [OrganisationsEinheitContainerComponent, MockComponent(OrganisationsEinheitListComponent)],
+      declarations: [
+        OrganisationsEinheitContainerComponent,
+        MockComponent(OrganisationsEinheitListComponent),
+        MockComponent(SpinnerComponent),
+        ToEmbeddedResourcesPipe,
+      ],
       imports: [ButtonWithSpinnerComponent],
       providers: [{ provide: OrganisationsEinheitService, useValue: organisationsEinheitService }],
     }).compileComponents();
@@ -41,43 +47,26 @@ describe('OrganisationsEinheitContainerComponent', () => {
 
   describe('component', () => {
     describe('ngOnInit', () => {
-      beforeEach(() => {
-        component.loadOrganisationsEinheitResources = jest.fn().mockReturnValue(of([createAdminOrganisationsEinheitResource()]));
-      });
+      it('should call organisationsEinheitService getList', (done) => {
+        component.ngOnInit();
 
-      it('should call loadOrganisationsEinheitResources', () => {
-        component.organisationsEinheitResources$.subscribe(() => {
-          expect(component.loadOrganisationsEinheitResources).toHaveBeenCalled();
+        component.organisationsEinheitListStateResource$.subscribe(() => {
+          expect(organisationsEinheitService.getList).toHaveBeenCalled();
+          done();
         });
       });
 
-      it('should set organisationsEinheitResources', () => {
+      it('should set organisationsEinheitListStateResource$', (done) => {
         component.ngOnInit();
 
-        component.organisationsEinheitResources$.subscribe(
-          (organisationsEinheitResources: AdminOrganisationsEinheitResource[]) => {
-            expect(organisationsEinheitResources.length).toBe(1);
+        component.organisationsEinheitListStateResource$.subscribe(
+          (listStateResource: StateResource<OrganisationsEinheitListResource>) => {
+            expect(listStateResource).toBe(organisationsEinheitListStateResource);
+            done();
           },
         );
       });
     });
-
-    describe('loadOrganisationsEinheitResources', () => {
-      it('should call organisationsEinheitService getList', () => {
-        component.loadOrganisationsEinheitResources();
-
-        expect(organisationsEinheitService.getList).toHaveBeenCalled();
-      });
-
-      it('should set organisationsEinheitResources', () => {
-        const organisationsEinheitResources$: Observable<AdminOrganisationsEinheitResource[]> =
-          component.loadOrganisationsEinheitResources();
-
-        organisationsEinheitResources$.subscribe((organisationsEinheitResources: AdminOrganisationsEinheitResource[]) => {
-          expect(organisationsEinheitResources.length).toBe(1);
-        });
-      });
-    });
   });
 
   describe('template', () => {
@@ -87,6 +76,11 @@ describe('OrganisationsEinheitContainerComponent', () => {
       it('should show list', () => {
         existsAsHtmlElement(fixture, listSelector);
       });
+
+      it('should have organisationsEinheitResources', () => {
+        const listComponent: OrganisationsEinheitListComponent = getMockComponent(fixture, OrganisationsEinheitListComponent);
+        expect(listComponent.organisationsEinheitResources).toBeTruthy();
+      });
     });
   });
 });
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 ce5610b8b2..fa7e4dcaa5 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
@@ -1,8 +1,8 @@
-import { getEmbeddedResources, StateResource } from '@alfa-client/tech-shared';
+import { StateResource } from '@alfa-client/tech-shared';
 import { Component, OnInit } from '@angular/core';
-import { map, Observable } from 'rxjs';
+import { Observable } from 'rxjs';
 import { OrganisationsEinheitListLinkRel } from '../organisations-einheit.linkrel';
-import { AdminOrganisationsEinheitListResource, AdminOrganisationsEinheitResource } from '../organisations-einheit.model';
+import { AdminOrganisationsEinheitListResource } from '../organisations-einheit.model';
 import { OrganisationsEinheitService } from '../organisationseinheit.service';
 
 @Component({
@@ -10,24 +10,13 @@ import { OrganisationsEinheitService } from '../organisationseinheit.service';
   templateUrl: './organisationseinheit-container.component.html',
 })
 export class OrganisationsEinheitContainerComponent implements OnInit {
-  organisationsEinheitResources$: Observable<AdminOrganisationsEinheitResource[]>;
+  organisationsEinheitListStateResource$: Observable<StateResource<AdminOrganisationsEinheitListResource>>;
 
   constructor(private organisationsEinheitService: OrganisationsEinheitService) {}
 
   ngOnInit(): void {
-    this.organisationsEinheitResources$ = this.loadOrganisationsEinheitResources();
+    this.organisationsEinheitListStateResource$ = this.organisationsEinheitService.getList();
   }
 
-  loadOrganisationsEinheitResources(): Observable<AdminOrganisationsEinheitResource[]> {
-    return this.organisationsEinheitService
-      .getList()
-      .pipe(
-        map((organisationsEinheitListResource: StateResource<AdminOrganisationsEinheitListResource>) =>
-          getEmbeddedResources<AdminOrganisationsEinheitResource>(
-            organisationsEinheitListResource,
-            OrganisationsEinheitListLinkRel.LIST,
-          ),
-        ),
-      );
-  }
+  protected readonly organisationsEinheitListLinkRel = OrganisationsEinheitListLinkRel;
 }
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 9255e2cdbe..ff2443a53a 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
@@ -102,7 +102,7 @@ describe('OrganisationsEinheitFormComponent', () => {
     describe('invalid message', () => {
       const invalidMessageSpanSelector: string = getDataTestIdOf('invalid-empty-message-span');
 
-      it('should show if form invalidEmpty', () => {
+      it('should show if form is invalid', () => {
         const problemDetail: ProblemDetail = {
           ...createProblemDetail(),
           invalidParams: [{ ...createInvalidParam(), name: 'settingBody.signatur' }],
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 3470d76a49..59075f400d 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
@@ -1,15 +1,5 @@
-import {
-  createEmptyStateResource,
-  createStateResource,
-  ProblemDetail,
-} from '@alfa-client/tech-shared';
-import {
-  dispatchEventFromFixture,
-  existsAsHtmlElement,
-  Mock,
-  mock,
-  notExistsAsHtmlElement,
-} from '@alfa-client/test-utils';
+import { createEmptyStateResource, createStateResource, ProblemDetail } from '@alfa-client/tech-shared';
+import { dispatchEventFromFixture, existsAsHtmlElement, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 import { ButtonWithSpinnerComponent } from '@ods/component';
@@ -67,10 +57,7 @@ describe('PostfachFormComponent', () => {
 
   describe('set postfachStateResource', () => {
     it('should return resource', () => {
-      const updatePostfachResourceFn: jest.SpyInstance = jest.spyOn(
-        component,
-        'updatePostfachResource',
-      );
+      const updatePostfachResourceFn: jest.SpyInstance = jest.spyOn(component, 'updatePostfachResource');
       const postfachResource: PostfachResource = createPostfachResource();
 
       component.postfachStateResource = createStateResource(postfachResource);
@@ -152,7 +139,7 @@ describe('PostfachFormComponent', () => {
   });
 
   describe('invalid message', () => {
-    it('should show if form invalidEmpty', () => {
+    it('should show if form is invalid', () => {
       formService.setErrorByProblemDetail(createProblemDetailForAbsenderName());
 
       fixture.detectChanges();
-- 
GitLab