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