diff --git a/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.service.spec.ts b/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6bc5f3ca516ecb2bb914a45091682872f09a79f4 --- /dev/null +++ b/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.service.spec.ts @@ -0,0 +1,78 @@ +import { StateResource, createStateResource } from '@alfa-client/tech-shared'; +import { Mock, mock } from '@alfa-client/test-utils'; +import { TestBed } from '@angular/core/testing'; +import { singleCold } from 'libs/tech-shared/test/marbles'; +import { Observable } from 'rxjs'; +import { + createAggregationMapping, + createAggregationMappingListResource, + createAggregationMappingResource, +} from '../../test/aggregation-mapping'; +import { AggregationMappingListResourceService } from './aggregation-mapping-resource.service'; +import { AggregationMapping, AggregationMappingListResource, AggregationMappingResource } from './aggregation-mapping.model'; +import { AggregationMappingService } from './aggregation-mapping.service'; + +describe('AggregationMappingService', () => { + let service: AggregationMappingService; + let listResourceService: Mock<AggregationMappingListResourceService>; + + beforeEach(() => { + listResourceService = mock(AggregationMappingListResourceService); + + TestBed.configureTestingModule({ + providers: [AggregationMappingService, { provide: AggregationMappingListResourceService, useValue: listResourceService }], + }); + + service = TestBed.inject(AggregationMappingService); + }); + + it('should create', () => { + expect(service).toBeTruthy(); + }); + + describe('get list', () => { + const aggregationMappingListResource: AggregationMappingListResource = createAggregationMappingListResource(); + const aggregationMappingListStateResource: StateResource<AggregationMappingListResource> = + createStateResource(aggregationMappingListResource); + + beforeEach(() => { + listResourceService.getList = jest.fn().mockReturnValue(singleCold(aggregationMappingListStateResource)); + }); + it('should call listResourceService', () => { + service.getList(); + + expect(listResourceService.getList).toHaveBeenCalled(); + }); + + it('should return value', () => { + const loadedAggregationMappingListResource: Observable<StateResource<AggregationMappingListResource>> = service.getList(); + + expect(loadedAggregationMappingListResource).toBeObservable(singleCold(aggregationMappingListStateResource)); + }); + }); + + describe('create', () => { + const aggregationMappingResource: AggregationMappingResource = createAggregationMappingResource(); + const aggregationMappingStateResource: StateResource<AggregationMappingResource> = + createStateResource(aggregationMappingResource); + + const aggregationMapping: AggregationMapping = createAggregationMapping(); + + beforeEach(() => { + listResourceService.create = jest.fn().mockReturnValue(singleCold(aggregationMappingStateResource)); + }); + + it('should call resourceService', () => { + service.create(aggregationMapping); + + expect(listResourceService.create).toHaveBeenCalledWith(aggregationMapping); + }); + + it('should return value', () => { + const loadedAggregationMappingResource: Observable<StateResource<AggregationMappingResource>> = + service.create(aggregationMapping); + + expect(loadedAggregationMappingResource).toBeObservable(singleCold(aggregationMappingStateResource)); + }); + }); +});