UNPKG

lml-main

Version:

This is now a mono repository published into many standalone packages.

65 lines 3.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var lodash_1 = require("lodash"); var ts_utils_1 = require("@lml/ts-utils"); var status_1 = require("../reducers/status"); var status_2 = require("../actions/status"); var status_3 = require("../mocks/status"); var mapToArray = function (map, key) { return Object.keys(map).map(function (k) { return map[k][key]; }); }; var TEST_STATUS = 'live'; var TEST_SEARCH_KEY = 'testSearchKey'; it('should save job searches in the state', function () { var jobs = status_3.mockJobStatuses(5, TEST_STATUS); var params = status_3.mockJobSearchParams(TEST_STATUS); var action = status_2.setJobStatusSearch(jobs, TEST_SEARCH_KEY, params); var state = status_1.jobStatusReducer(status_1.initialJobStatusState, action); var res = state.search[TEST_SEARCH_KEY]; expect(res).toBeTruthy(); expect(res.params).toEqual(params); var arr = mapToArray(res.results, 'refId'); jobs.map(function (j) { expect(lodash_1.includes(arr, j.refId)).toBeTruthy(); }); expect(res.lastUpdate).toBeDefined(); }); it('should return a new state when results are updated', function () { var initialJobs = status_3.mockJobStatuses(5, TEST_STATUS); var params = status_3.mockJobSearchParams(TEST_STATUS); var initialAction = status_2.setJobStatusSearch(initialJobs, TEST_SEARCH_KEY, params); var initialState = status_1.jobStatusReducer(status_1.initialJobStatusState, initialAction); var initialSearch = initialState.search[TEST_SEARCH_KEY]; // now add a new job var update = status_3.mockJobStatus(); var updatedJobs = initialJobs.concat([update]); var updatedAction = status_2.setJobStatusSearch(updatedJobs, TEST_SEARCH_KEY, params); var updatedState = status_1.jobStatusReducer(initialState, updatedAction); var updatedSearch = updatedState.search[TEST_SEARCH_KEY]; expect(updatedSearch).toBeTruthy(); expect(updatedSearch.results.length).toBeGreaterThan(initialJobs.length); expect(updatedSearch.results.length).toEqual(updatedJobs.length); }); it('should return the same state when no data has changed', function () { var jobs = status_3.mockJobStatuses(5, TEST_STATUS); var params = status_3.mockJobSearchParams(TEST_STATUS); var action = status_2.setJobStatusSearch(jobs, TEST_SEARCH_KEY, params); var initialState = status_1.jobStatusReducer(status_1.initialJobStatusState, action); var initialSearch = initialState.search[TEST_SEARCH_KEY]; // now put the same action through again var updatedState = status_1.jobStatusReducer(initialState, action); var updatedSearch = updatedState.search[TEST_SEARCH_KEY]; expect(initialSearch).toEqual(updatedSearch); expect(initialSearch.lastUpdate).toEqual(updatedSearch.lastUpdate); }); it('should manually override the job status', function () { var statuses = ts_utils_1.createArray(status_3.mockJobStatus); var initialState = status_1.jobStatusReducer(undefined, status_2.setJobStatusSearch(statuses, 'live', status_3.mockJobSearchParams())); var job = statuses[0]; var action = status_2.changeJobStatus(job, 'live', 'allocated'); var res = status_1.jobStatusReducer(initialState, action); expect(res.byStatus[job.refId].status).toEqual('allocated'); var newIndex = res.search.live.results.findIndex(function (j) { return j.refId === job.refId; }); expect(newIndex).toEqual(-1); }); //# sourceMappingURL=status.reducer.spec.js.map