From dc151d22705fef75a986c058c3407f679fc79305 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 26 Nov 2024 13:36:15 +0100
Subject: [PATCH] OZG-6477 7187 load linked resource

---
 .../src/lib/resource/resource.service.spec.ts | 24 ++++++++++++++-----
 .../src/lib/resource/resource.service.ts      | 15 ++++++------
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts
index db02b9a18f..af9e427887 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts
@@ -363,22 +363,34 @@ describe('ResourceService', () => {
 
       expect(service.createIfNotExist).toHaveBeenCalled();
     });
+  });
 
-    it('should call loadLinkedResource if loading is required', () => {
+  describe('createIfNotExists', () => {
+    it('should create linked resource if none exists', () => {
+      service.createIfNotExist(linkedResourceUri);
+
+      expect(service.linkedResources[linkedResourceUri].value).toEqual(createEmptyStateResource());
+    });
+  });
+
+  describe('loadLinkedResourceIfRequired', () => {
+    it('should set Loading in Linked Resource', () => {
       service.createIfNotExist(linkedResourceUri);
+      service.setLinkedResourceLoading = jest.fn();
       service.loadLinkedResoure = jest.fn();
 
       service.getLinkedResoure(linkedResourceUri);
 
-      expect(service.loadLinkedResoure).toHaveBeenCalledWith(linkedResourceUri);
+      expect(service.setLinkedResourceLoading).toHaveBeenCalledWith(linkedResourceUri);
     });
-  });
 
-  describe('createIfNotExists', () => {
-    it('should create linked resource if none exists', () => {
+    it('should call loadLinkedResource if loading is required', () => {
       service.createIfNotExist(linkedResourceUri);
+      service.loadLinkedResoure = jest.fn();
 
-      expect(service.linkedResources[linkedResourceUri].value).toEqual(createEmptyStateResource());
+      service.getLinkedResoure(linkedResourceUri);
+
+      expect(service.loadLinkedResoure).toHaveBeenCalledWith(linkedResourceUri);
     });
   });
 
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 d2d2c83a29..cc26c3d859 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
@@ -115,13 +115,7 @@ export abstract class ResourceService<B extends Resource, T extends Resource> {
 
   public getLinkedResoure<F extends Resource>(resourceUri: ResourceUri): Observable<StateResource<F>> {
     this.createIfNotExist(resourceUri);
-
-    //todo: In Funktion auslagern
-    doIfLoadingRequired(this.linkedResources[resourceUri].value, () => {
-      this.setLinkedResourceLoading(resourceUri);
-      this.loadLinkedResoure(resourceUri);
-    });
-
+    this.loadLinkedResourceIfRequired(resourceUri);
     return this.linkedResources[resourceUri].asObservable();
   }
 
@@ -129,6 +123,13 @@ export abstract class ResourceService<B extends Resource, T extends Resource> {
     if (isNil(this.linkedResources[uri])) this.linkedResources[uri] = new BehaviorSubject(createEmptyStateResource());
   }
 
+  loadLinkedResourceIfRequired(resourceUri: ResourceUri): void {
+    doIfLoadingRequired(this.linkedResources[resourceUri].value, () => {
+      this.setLinkedResourceLoading(resourceUri);
+      this.loadLinkedResoure(resourceUri);
+    });
+  }
+
   loadLinkedResoure(resourceUri: ResourceUri): void {
     this.repository
       .getResource(resourceUri)
-- 
GitLab