instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
85 lines (72 loc) • 3.01 kB
JavaScript
'use strict';
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _utilities = require('common/utilities');
var _expect = require('expect');
var _expect2 = _interopRequireDefault(_expect);
var _sinon = require('sinon');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe("filter_hash", function () {
it("should be correct", function () {
var filtered_hash = (0, _utilities.filter_hash)({ 1: true, 2: false }, Boolean);
(0, _expect2.default)(filtered_hash[1]).toEqual(true);
(0, _expect2.default)(filtered_hash[2]).toNotExist();
(0, _expect2.default)((0, _keys2.default)(filtered_hash).length).toEqual(1);
});
});
describe("set_from_array", function () {
it("should be correct", function () {
var set = (0, _utilities.set_from_array)([1, 2]);
(0, _expect2.default)(set[1]).toEqual(true);
(0, _expect2.default)(set[2]).toEqual(true);
(0, _expect2.default)((0, _keys2.default)(set).length).toEqual(2);
});
});
describe("make_memoized", function () {
it("should compute the same result", function () {
var fun = function fun(x, y) {
return x * y;
};
var memoized_fun = (0, _utilities.make_memoized)(fun);
(0, _expect2.default)(memoized_fun(3, 5)).toEqual(fun(3, 5));
(0, _expect2.default)(memoized_fun(3, 5)).toEqual(fun(3, 5));
});
it("should call function only for new arguments", function () {
var fun = (0, _sinon.spy)(function (x, y) {
return x + y;
});
var fun_with_specified_arity = function fun_with_specified_arity(x, y) {
return fun(x, y);
};
var memoized_fun = (0, _utilities.make_memoized)(fun_with_specified_arity);
memoized_fun(1, 2);
memoized_fun(1, 2);
(0, _expect2.default)(fun.callCount).toEqual(1);
memoized_fun(1, 3);
(0, _expect2.default)(fun.callCount).toEqual(2);
memoized_fun(1, 2);
(0, _expect2.default)(fun.callCount).toEqual(2);
});
});
describe("make_one_memoized", function () {
it("should call function only for a new argument", function () {
var fun = (0, _sinon.spy)(function (x) {
return "My favorite fruit is the " + x;
});
var memoized_fun = (0, _utilities.make_one_memoized)(fun);
memoized_fun("apple");
memoized_fun("apple");
(0, _expect2.default)(fun.callCount).toEqual(1);
memoized_fun("banana");
(0, _expect2.default)(fun.callCount).toEqual(2);
memoized_fun("apple");
(0, _expect2.default)(fun.callCount).toEqual(2);
});
});
describe('compare', function () {
var compare_a = (0, _utilities.compare)((0, _utilities.property_getter)('a'));
(0, _expect2.default)(compare_a({ a: 1 }, { a: 2 })).toEqual(-1);
(0, _expect2.default)(compare_a({ a: 2 }, { a: 1 })).toEqual(1);
(0, _expect2.default)((0, _utilities.compare)((0, _utilities.property_getter)('a'), false)({ a: 1 }, { a: 2 })).toEqual(1);
(0, _expect2.default)(compare_a({ a: 1 }, { a: 1 })).toEqual(0);
});