diff --git a/src/Squidex/app/shared/services/event-consumers.service.spec.ts b/src/Squidex/app/shared/services/event-consumers.service.spec.ts new file mode 100644 index 000000000..04c9e503d --- /dev/null +++ b/src/Squidex/app/shared/services/event-consumers.service.spec.ts @@ -0,0 +1,109 @@ +/* + * Squidex Headless CMS + * + * @license + * Copyright (c) Sebastian Stehle. All rights reserved + */ + +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { inject, TestBed } from '@angular/core/testing'; + +import { + ApiUrlConfig, + EventConsumerDto, + EventConsumersService +} from './../'; + +describe('EventConsumersService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientTestingModule + ], + providers: [ + EventConsumersService, + { provide: ApiUrlConfig, useValue: new ApiUrlConfig('http://service/p/') } + ] + }); + }); + + afterEach(inject([HttpTestingController], (httpMock: HttpTestingController) => { + httpMock.verify(); + })); + + it('should make get request to get event consumers', + inject([EventConsumersService, HttpTestingController], (eventConsumersService: EventConsumersService, httpMock: HttpTestingController) => { + + let eventConsumers: EventConsumerDto[] | null = null; + + eventConsumersService.getEventConsumers().subscribe(result => { + eventConsumers = result; + }); + + const req = httpMock.expectOne('http://service/p/api/event-consumers'); + + expect(req.request.method).toEqual('GET'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush([ + { + name: 'event-consumer1', + position: '13', + isStopped: true, + isResetting: true, + error: 'an error 1' + }, + { + name: 'event-consumer2', + position: '29', + isStopped: true, + isResetting: true, + error: 'an error 2' + } + ]); + + expect(eventConsumers).toEqual([ + new EventConsumerDto('event-consumer1', true, true, 'an error 1', '13'), + new EventConsumerDto('event-consumer2', true, true, 'an error 2', '29') + ]); + })); + + it('should make put request to start event consumer', + inject([EventConsumersService, HttpTestingController], (eventConsumersService: EventConsumersService, httpMock: HttpTestingController) => { + + eventConsumersService.startEventConsumer('event-consumer1').subscribe(); + + const req = httpMock.expectOne('http://service/p/api/event-consumers/event-consumer1/start'); + + expect(req.request.method).toEqual('PUT'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({}); + })); + + it('should make put request to stop event consumer', + inject([EventConsumersService, HttpTestingController], (eventConsumersService: EventConsumersService, httpMock: HttpTestingController) => { + + eventConsumersService.stopEventConsumer('event-consumer1').subscribe(); + + const req = httpMock.expectOne('http://service/p/api/event-consumers/event-consumer1/stop'); + + expect(req.request.method).toEqual('PUT'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({}); + })); + + it('should make put request to reset event consumer', + inject([EventConsumersService, HttpTestingController], (eventConsumersService: EventConsumersService, httpMock: HttpTestingController) => { + + eventConsumersService.resetEventConsumer('event-consumer1').subscribe(); + + const req = httpMock.expectOne('http://service/p/api/event-consumers/event-consumer1/reset'); + + expect(req.request.method).toEqual('PUT'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({}); + })); +}); \ No newline at end of file