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);