diff --git a/alfa-client/libs/tech-shared/src/lib/resource/list-resource.service.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/list-resource.service.spec.ts index 648099dffa599d2eb7d5a2234bb056eb59e3fa90..def11057cef1266514b993ab56701985896498be 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/list-resource.service.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/list-resource.service.spec.ts @@ -28,13 +28,13 @@ import { Resource, ResourceUri } from '@ngxp/rest'; import { cold } from 'jest-marbles'; import { DummyLinkRel, DummyListLinkRel } from 'libs/tech-shared/test/dummy'; import { createDummyListResource, createDummyResource, createFilledDummyListResource } from 'libs/tech-shared/test/resource'; -import { BehaviorSubject, Observable, of } from 'rxjs'; +import { BehaviorSubject, Observable, of, throwError } from 'rxjs'; import { multipleCold, singleCold, singleColdCompleted, singleHot } from '../../../test/marbles'; import { ResourceListService } from './list-resource.service'; import { CreateResourceData, LinkRelationName, ListItemResource, ListResourceServiceConfig } from './resource.model'; import { ResourceRepository } from './resource.repository'; import * as ResourceUtil from './resource.util'; -import { createEmptyStateResource, createErrorStateResource, createStateResource, ListResource, StateResource } from './resource.util'; +import { createEmptyStateResource, createErrorStateResource, createLoadingStateResource, createStateResource, ListResource, StateResource } from './resource.util'; import { ProblemDetail } from '@alfa-client/tech-shared'; import { expect } from '@jest/globals'; @@ -351,6 +351,26 @@ describe('ListResourceService', () => { expect(createdResource).toBeObservable(multipleCold(createEmptyStateResource(true), createStateResource(returnResource))); }); + + it('should handle error', () => { + const error: ProblemDetail = createProblemDetail(); + service._handleError = jest.fn(); + resourceRepository.createResource.mockReturnValue(throwError(() => error)); + + service.create(toCreate).subscribe(); + + expect(service._handleError).toHaveBeenCalledWith(error); + }); + + it('should emit on error', () => { + const error: ProblemDetail = createProblemDetail(); + service._handleError = jest.fn().mockReturnValue(of(createErrorStateResource(error))); + resourceRepository.createResource.mockReturnValue(cold('-#', null, error)); + + expect(service.create(toCreate)).toBeObservable( + cold('a(b|)', { a: createLoadingStateResource(), b: createErrorStateResource(error) }), + ); + }); }); describe('handle error', () => {