UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

110 lines (87 loc) 4.31 kB
'use strict'; var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _missions = require('selectors/missions'); var _state = require('./state.js'); var _state2 = _interopRequireDefault(_state); var _utilities = require('common/utilities'); var _expect = require('expect'); var _expect2 = _interopRequireDefault(_expect); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var user_statuses = ['available', 'impossible', 'new', 'accepted', 'rejected', 'assigned']; describe("get_missions", function () { var missions = (0, _missions.get_missions)(_state2.default); it("should compute mission status", function () { (0, _expect2.default)(missions[1].status).toEqual('draft'); (0, _expect2.default)(missions[2].status).toEqual('sent'); (0, _expect2.default)(missions[3].status).toEqual('assigned'); (0, _expect2.default)(missions[4].status).toEqual('pending_assignement'); (0, _expect2.default)(missions[5].status).toEqual('pending_selection'); }); it("should keep the number of missions", function () { (0, _expect2.default)((0, _utilities.array_from_hash)(missions).length).toEqual((0, _utilities.array_from_hash)(_state2.default.missions.missions).length); }); it("should keep ids", function () { (0, _expect2.default)((0, _utilities.for_all)((0, _keys2.default)(missions), function (id) { return missions[id].id == id; })).toBeTruthy(); }); user_statuses.forEach(function (user_status) { (0, _utilities.array_from_hash)(missions).slice(0, 5).forEach(function (mission) { it('grouped_users_status should have distinct values for mission status ' + mission.status + ' and user status ' + user_status, function () { var has_distinct_elements = function has_distinct_elements(array) { return (0, _utilities.array_from_set)((0, _utilities.set_from_array)(array)).length == array.length; }; (0, _expect2.default)(has_distinct_elements(mission.grouped_users_status[user_status])).toBeTruthy(); }); }); }); }); describe("get_mission_users", function () { user_statuses.forEach(function (user_status) { (0, _utilities.array_from_hash)((0, _missions.get_missions)(_state2.default)).slice(0, 5).forEach(function (mission) { it('should preserve user count for mission status ' + mission.status + ' and user status ' + user_status, function () { (0, _expect2.default)((0, _utilities.array_from_hash)((0, _missions.get_mission_users)(mission.id, user_status)(_state2.default)).length).toEqual(mission.grouped_users_status[user_status].length); }); }); if (user_status == "available") { it("should compute all available users", function () { (0, _expect2.default)((0, _utilities.array_from_hash)((0, _missions.get_mission_users)(6, "available")(_state2.default)).length).toEqual(1); }); } }); }); describe("get_displayed_deals", function () { it("should not include default deals", function () { var deals = (0, _missions.get_displayed_deals)(_state2.default); (0, _expect2.default)(deals[_state2.default.recruiters.recruiters[1].default_deal_id]).toNotExist(); }); }); describe("get_default_deal", function () { it("should return default deal", function () { (0, _expect2.default)((0, _missions.get_default_deal)(_state2.default)).toMatch({ id: 6 }); }); }); describe("get_mission_proposals", function () { it("should find deleted missions", function () { (0, _expect2.default)((0, _missions.get_mission_proposals)(_state2.default)[14]).toMatch({ id: 14 }); }); }); describe("get_deals", function () { it("should not include deleted missions", function () { (0, _expect2.default)((0, _missions.get_deals)(_state2.default)[6].missions.length).toEqual(1); }); it("should compute deals status", function () { var status = (0, _missions.deal_status)([{ status: 'assigned' }, { status: 'sent' }]); (0, _expect2.default)(status).toEqual('sent'); }); }); describe("get_proposals", function () { it("should return proposals", function () { (0, _expect2.default)((0, _missions.get_proposals)(3)(_state2.default)).toMatch([{ id: 1, user: { id: 1 }, fields: [] }]); }); });