lml-main
Version:
This is now a mono repository published into many standalone packages.
65 lines • 3.5 kB
JavaScript
;
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