diff --git a/alfa-client/libs/resource-redirect-shared/src/lib/resource-redirect.service.spec.ts b/alfa-client/libs/resource-redirect-shared/src/lib/resource-redirect.service.spec.ts index bca45d89e161b81187803dbcc54d51489ffd6adf..6db912563661d4518e0a159d7b966e86942048b7 100644 --- a/alfa-client/libs/resource-redirect-shared/src/lib/resource-redirect.service.spec.ts +++ b/alfa-client/libs/resource-redirect-shared/src/lib/resource-redirect.service.spec.ts @@ -40,44 +40,37 @@ describe('ResourceRedirectService', () => { }); describe('redirectToResource', () => { - it('should navigate to resource on success', () => { + it('should call getResolvedResource', () => { const resource: Resource = createDummyResource([ResourceLinkRel.VORGANG]); - const apiRoot: StateResource<ApiRootResource> = createStateResource(createApiRootResource([ApiRootLinkRel.RESOURCE])); - apiRootService.getApiRoot.mockReturnValue(of(apiRoot)); - repository.getResource.mockReturnValue(of(resource)); - - const spy = jest.spyOn(service, 'navigateToResource'); + service.getResolvedResource = jest.fn().mockReturnValue(of(resource)); service.redirectToResource(resourceUri); - expect(spy).toHaveBeenCalled(); + expect(service.getResolvedResource).toHaveBeenCalled(); }); - it('should handle empty api root resource', () => { - apiRootService.getApiRoot.mockReturnValue(of(createEmptyStateResource())); - - const spy = jest.spyOn(service, 'handleResolveError'); + it('should call navigateToResource on success', () => { + const resource: Resource = createDummyResource([ResourceLinkRel.VORGANG]); + service.getResolvedResource = jest.fn().mockReturnValue(of(resource)); + service.navigateToResource = jest.fn(); service.redirectToResource(resourceUri); - expect(spy).toHaveBeenCalled(); + expect(service.navigateToResource).toHaveBeenCalled(); }); - it('should handle resource repository error', () => { - const apiRoot: StateResource<ApiRootResource> = createStateResource(createApiRootResource([ApiRootLinkRel.RESOURCE])); - apiRootService.getApiRoot.mockReturnValue(of(apiRoot)); - repository.getResource.mockReturnValue(throwError(() => new Error('some error'))); - - const spy = jest.spyOn(service, 'handleResolveError'); + it('should call handleResolveError on error', () => { + service.getResolvedResource = jest.fn().mockReturnValue(throwError(() => new Error('some error'))); + service.handleResolveError = jest.fn(); service.redirectToResource(resourceUri); - expect(spy).toHaveBeenCalled(); + expect(service.handleResolveError).toHaveBeenCalled(); }); }); describe('getResolvedResource', () => { - it('should get api root', () => { + it('should call apiRootService getApiRoot', () => { const apiRoot: StateResource<ApiRootResource> = createStateResource(createApiRootResource()); apiRootService.getApiRoot.mockReturnValue(of(apiRoot)); @@ -86,7 +79,7 @@ describe('ResourceRedirectService', () => { }); }); - it('should return null observable on empty resource', () => { + it('should return null observable on empty api root resource', () => { apiRootService.getApiRoot.mockReturnValue(of(createEmptyStateResource())); service.getResolvedResource(resourceUri).subscribe((resolvedResource: Resource) => { @@ -94,12 +87,23 @@ describe('ResourceRedirectService', () => { }); }); - it('should call resource repository', () => { + it('should call repository getResource with result from buildResolveUri', () => { const apiRoot: StateResource<ApiRootResource> = createStateResource(createApiRootResource([ApiRootLinkRel.RESOURCE])); apiRootService.getApiRoot.mockReturnValue(of(apiRoot)); + service.buildResolveUri = jest.fn().mockReturnValue('some-uri'); service.getResolvedResource(resourceUri).subscribe(() => { - expect(repository.getResource).toHaveBeenCalled(); + expect(repository.getResource).toHaveBeenCalledWith('some-uri'); + }); + }); + + it('should return null observable on repository error', () => { + const apiRoot: StateResource<ApiRootResource> = createStateResource(createApiRootResource([ApiRootLinkRel.RESOURCE])); + apiRootService.getApiRoot.mockReturnValue(of(apiRoot)); + repository.getResource.mockReturnValue(throwError(() => new Error('some error'))); + + service.getResolvedResource(resourceUri).subscribe((resolvedResource: Resource) => { + expect(resolvedResource).toBeNull(); }); }); @@ -131,13 +135,13 @@ describe('ResourceRedirectService', () => { }); describe('handleResolveError', () => { - it('should show snackbar', () => { + it('should call snackbarService showInfo', () => { service.handleResolveError(); expect(snackbarService.showInfo).toHaveBeenCalledWith(Messages.HTTP_STATUS_RESOURCE_NOT_FOUND); }); - it('should navigate to vorgang list', () => { + it('should call navigationService navigateToVorgangList', () => { service.handleResolveError(); expect(navigationService.navigateToVorgangList).toHaveBeenCalled(); @@ -145,7 +149,7 @@ describe('ResourceRedirectService', () => { }); describe('navigateToResource', () => { - it('should navigate to vorgang', () => { + it('should call navigationService navigateToVorgang', () => { const resource: Resource = createDummyResource([ResourceLinkRel.VORGANG]); const resourceUri: ResourceUri = toResourceUri(resource, ResourceLinkRel.VORGANG);