import { of } from 'rxjs'; import { MaerskApiClient } from 'app/common/clients/maerskApi.client'; import { createTceDevelopmentDataMock, createTceDevelopmentOpenModalPayloadMock, } from 'app/testUtils/mocks/tceDevelopment.mock'; import { tceDevelopmentGetData, tceDevelopmentGetDataSuccess, tceDevelopmentOpenModal, tceDevelopmentSetCommonData, } from './tceDevelopment.actions'; import { getTceDevelopmentDataEpic, openTceDevelopmentModalEpic } from './tceDevelopment.epic'; import { MiddlewareDependencies, StoreState } from 'app/common/store/store.types'; import { ActionsObservable, StateObservable } from 'redux-observable'; import { DeepPartial } from 'redux'; const tceDevelopmentService = { getFinancialTceDevelopment: jest.fn(() => of(createTceDevelopmentDataMock())), apiClient: {} as MaerskApiClient, }; describe('TceDevelopment epic tests', () => { it('sets common data and fires data request on modal open action', done => { const payload = createTceDevelopmentOpenModalPayloadMock(); const action$ = ActionsObservable.of(tceDevelopmentOpenModal(payload)); const store$ = {} as StateObservable; const expectedOutputAction = [ tceDevelopmentSetCommonData({ date: payload.date, hasScrubber: payload.hasScrubber, poolPoints: payload.poolPoints, bunkerAdjustmentPerDay: payload.bunkerAdjustmentPerDay, }), tceDevelopmentGetData(payload), ]; openTceDevelopmentModalEpic(action$, store$, {}).subscribe( (actualOutputAction) => { expect(actualOutputAction).toEqual(expectedOutputAction); done(); }, () => { done('epic is in error state'); } ); }); it('sets fetches data on get data action action', done => { const action$ = ActionsObservable.of(tceDevelopmentGetData(createTceDevelopmentOpenModalPayloadMock())); const store$ = {} as StateObservable; const expectedOutputAction = tceDevelopmentGetDataSuccess(createTceDevelopmentDataMock()); getTceDevelopmentDataEpic(action$, store$, { tceDevelopmentService } as DeepPartial as MiddlewareDependencies).subscribe( (actualOutputAction) => { expect(actualOutputAction).toEqual(expectedOutputAction); done(); }, () => { done('epic is in error state'); } ); }); });