UNPKG

ngrx-model

Version:

Model classes for integrating ngrx store with a REST API

61 lines (44 loc) 1.81 kB
import { Subject } from 'rxjs'; import { rlFakeAsync, mock, IMockedRequest } from '../test/index'; import { SingletonModel } from './singletonModel'; interface IRequestServiceMock { getItem?: IMockedRequest<number>; update?: IMockedRequest<number>; } describe('SingletonModel', () => { let model: SingletonModel<number>; let requestService: IRequestServiceMock; beforeEach(() => { requestService = { getItem: mock.request(), update: mock.request(), }; model = new SingletonModel<number>({ url: '/test' }, <any>requestService); expect(model.url).to.equal('/test'); }); it('should make an http request to get the item, then push it to the stream', rlFakeAsync(() => { let item; const itemFromServer = 11; requestService.getItem = mock.request(itemFromServer); model.subscribe(data => item = data); expect(item).to.be.null; sinon.assert.calledOnce(requestService.getItem); requestService.getItem.flush(); expect(item).to.equal(itemFromServer); })); it('should make an http request to update the item, then push the updated item to the stream', rlFakeAsync(() => { let itemToSendForUpdate = 21; let itemFromDataStream; let itemReturnedFromAction; requestService.update = mock.request(params => params.domainObject); model.subscribe(data => itemFromDataStream = data); model.update(itemToSendForUpdate).subscribe(data => itemReturnedFromAction = data); expect(itemFromDataStream).to.be.null; expect(itemReturnedFromAction).to.not.exist; sinon.assert.calledOnce(requestService.update); requestService.getItem.flush(); requestService.update.flush(); expect(itemFromDataStream).to.equal(itemToSendForUpdate); expect(itemReturnedFromAction).to.equal(itemToSendForUpdate); })); });