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 db02b9a18f8e000c512b8339c441599529e7efe1..af9e427887e1482fe2ac76c1847bad1054597dc4 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 d2d2c83a291b42b2385a371660f1e095c572903e..cc26c3d85960d24eb9a08e75012038c78fcb6747 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)