From b4665ba0810973d33827a413bf428a6fe24cbb6e Mon Sep 17 00:00:00 2001
From: sebo <sebastian.bergandy@external.mgm-cp.com>
Date: Sun, 23 Mar 2025 19:19:51 +0100
Subject: [PATCH] OZG-7473 get embedded resource in template

Based on CR comment.
---
 .../admin-e2e/src/page-objects/main.po.ts     |  2 +-
 .../aggregation-mapping-list.component.html   |  4 +-
 ...aggregation-mapping-list.component.spec.ts | 58 +------------------
 .../aggregation-mapping-list.component.ts     | 22 ++-----
 4 files changed, 10 insertions(+), 76 deletions(-)

diff --git a/alfa-client/apps/admin-e2e/src/page-objects/main.po.ts b/alfa-client/apps/admin-e2e/src/page-objects/main.po.ts
index c982465ac9..e2b33614a9 100644
--- a/alfa-client/apps/admin-e2e/src/page-objects/main.po.ts
+++ b/alfa-client/apps/admin-e2e/src/page-objects/main.po.ts
@@ -31,7 +31,7 @@ export class MainPage {
   private readonly benutzerNavigationItem: string = 'link-path-benutzer';
   private readonly organisationEinheitNavigationItem: string = 'link-path-organisationseinheiten';
   private readonly postfachNavigationItem: string = 'link-path-postfach';
-  private readonly statistikNavigationItem: string = 'link-path-aggregation-mapping';
+  private readonly statistikNavigationItem: string = 'link-path-auswertung';
 
   public getBuildInfo(): BuildInfoE2EComponent {
     return this.buildInfo;
diff --git a/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.html b/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.html
index 521fc9e92d..fb306dc34f 100644
--- a/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.html
+++ b/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.html
@@ -1,6 +1,6 @@
-<ods-spinner [stateResource]="listStateResource">
+<ods-spinner [stateResource]="aggregationMappingListStateResource">
   <ods-list data-test-id="aggregation-mapping-list">
-    @for (aggregationMapping of aggregationMappings; track $index) {
+    @for (aggregationMapping of (aggregationMappingListStateResource.resource | toEmbeddedResources: AggregationMappingListLinkRel.LIST); track $index) {
       <admin-aggregation-mapping-list-item [aggregationMapping]="aggregationMapping" />
     }
   </ods-list>
diff --git a/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.spec.ts b/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.spec.ts
index 9500dffc91..1a6e2d40a4 100644
--- a/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.spec.ts
+++ b/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.spec.ts
@@ -1,11 +1,5 @@
 import { AggregationMappingListResource } from '@admin-client/reporting-shared';
-import {
-  createEmptyStateResource,
-  createLoadingStateResource,
-  createStateResource,
-  getEmbeddedResources,
-  StateResource,
-} from '@alfa-client/tech-shared';
+import { createStateResource, getEmbeddedResources, StateResource } from '@alfa-client/tech-shared';
 import { expectComponentExistsInTemplate, getElementFromFixtureByType } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { expect } from '@jest/globals';
@@ -33,6 +27,7 @@ describe('AggregationMappingListComponent', () => {
 
     fixture = TestBed.createComponent(AggregationMappingListComponent);
     component = fixture.componentInstance;
+    component.aggregationMappingListStateResource = createStateResource(createAggregationMappingListResource());
     fixture.detectChanges();
   });
 
@@ -40,55 +35,6 @@ describe('AggregationMappingListComponent', () => {
     expect(component).toBeTruthy();
   });
 
-  describe('component', () => {
-    const aggregationMappingListStateResource: StateResource<AggregationMappingListResource> = createStateResource(
-      createAggregationMappingListResource(),
-    );
-
-    it('should have initial state', () => {
-      expect(component.listStateResource).toEqual(createEmptyStateResource());
-      expect(component.aggregationMappings).toEqual([]);
-    });
-
-    describe('update', () => {
-      it('should set list state resource', () => {
-        component.aggregationMappingListStateResource = aggregationMappingListStateResource;
-
-        expect(component.listStateResource).toEqual(aggregationMappingListStateResource);
-      });
-
-      it('should set aggregation mappings if loaded and not nil', () => {
-        component.aggregationMappingListStateResource = aggregationMappingListStateResource;
-
-        expect(component.aggregationMappings).toEqual(
-          getEmbeddedResources(aggregationMappingListStateResource, AggregationMappingListLinkRel.LIST),
-        );
-      });
-
-      it('should NOT set aggregation mappings if nil', () => {
-        component.aggregationMappingListStateResource = null;
-
-        expect(component.aggregationMappings).toEqual([]);
-      });
-
-      it('should NOT set aggregation mappings if loading', () => {
-        component.aggregationMappingListStateResource = createLoadingStateResource();
-
-        expect(component.aggregationMappings).toEqual([]);
-      });
-    });
-
-    describe('set aggregation mapping list state resource', () => {
-      it('should update component state', () => {
-        component._update = jest.fn();
-
-        component.aggregationMappingListStateResource = aggregationMappingListStateResource;
-
-        expect(component._update).toHaveBeenCalledWith(aggregationMappingListStateResource);
-      });
-    });
-  });
-
   describe('template', () => {
     const aggregationMappingListStateResource: StateResource<AggregationMappingListResource> = createStateResource(
       createAggregationMappingListResource(),
diff --git a/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.ts b/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.ts
index 4adecffe51..ac2c343c47 100644
--- a/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.ts
+++ b/alfa-client/libs/admin/aggregation-mapping/src/lib/aggregation-mapping-list-container/aggregation-mapping-list/aggregation-mapping-list.component.ts
@@ -1,5 +1,5 @@
-import { AggregationMappingListResource, AggregationMappingResource } from '@admin-client/reporting-shared';
-import { createEmptyStateResource, getEmbeddedResources, isLoaded, isNotNil, StateResource } from '@alfa-client/tech-shared';
+import { AggregationMappingListResource } from '@admin-client/reporting-shared';
+import { StateResource, ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared';
 import { Component, Input } from '@angular/core';
 import { SpinnerComponent } from '@ods/component';
 import { ListComponent } from '@ods/system';
@@ -10,22 +10,10 @@ import { AggregationMappingListItemComponent } from './aggregation-mapping-list-
   selector: 'admin-aggregation-mapping-list',
   standalone: true,
   templateUrl: './aggregation-mapping-list.component.html',
-  imports: [SpinnerComponent, ListComponent, AggregationMappingListItemComponent],
+  imports: [SpinnerComponent, ListComponent, AggregationMappingListItemComponent, ToEmbeddedResourcesPipe],
 })
 export class AggregationMappingListComponent {
-  @Input({ required: true }) set aggregationMappingListStateResource(
-    stateResource: StateResource<AggregationMappingListResource>,
-  ) {
-    this._update(stateResource);
-  }
+  @Input({ required: true }) aggregationMappingListStateResource: StateResource<AggregationMappingListResource>;
 
-  public listStateResource: StateResource<AggregationMappingListResource> = createEmptyStateResource();
-  public aggregationMappings: AggregationMappingResource[] = [];
-
-  _update(stateResource: StateResource<AggregationMappingListResource>): void {
-    this.listStateResource = stateResource;
-    if (isNotNil(stateResource) && isLoaded(stateResource)) {
-      this.aggregationMappings = getEmbeddedResources(stateResource, AggregationMappingListLinkRel.LIST);
-    }
-  }
+  public readonly AggregationMappingListLinkRel = AggregationMappingListLinkRel;
 }
-- 
GitLab