instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
110 lines (87 loc) • 4.31 kB
JavaScript
;
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: [] }]);
});
});