@enact/core
Version:
Enact is an open source JavaScript framework containing everything you need to create a fast, scalable mobile or web application.
85 lines (84 loc) • 2.24 kB
JavaScript
var _computed = _interopRequireDefault(require("../computed"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
describe('computed', function () {
var exampleCfg = {
sum: function sum(_ref) {
var x = _ref.x,
y = _ref.y,
z = _ref.z;
return x + y + z;
},
product: function product(_ref2) {
var x = _ref2.x,
y = _ref2.y,
z = _ref2.z;
return x * y * z;
}
};
var exampleProps = {
x: 2,
y: 3,
z: 4
};
test('should add new props to updated object', function () {
var props = {
value: true
};
var cfg = {
count: function count() {
return 1;
}
};
var updated = (0, _computed["default"])(cfg, props);
var expected = 1;
var actual = updated.count;
expect(actual).toBe(expected);
});
test('should overwrite properties with computed values', function () {
var props = {
value: true,
count: 2
};
var cfg = {
count: function count() {
return 1;
}
};
var updated = (0, _computed["default"])(cfg, props);
var expected = 1;
var actual = updated.count;
expect(actual).toBe(expected);
});
test('should not leak updated prop values into other computed props', function () {
var props = {
count: 1
};
var cfg = {
value: function value(_ref3) {
var count = _ref3.count;
return count + 5;
},
count: function count(_ref4) {
var _count = _ref4.count;
return _count + 1;
}
};
var updated = (0, _computed["default"])(cfg, props);
var expected = 6;
var actual = updated.value;
expect(actual).toBe(expected);
});
test('should work with its documented example - sum', function () {
var updated = (0, _computed["default"])(exampleCfg, exampleProps);
var expected = 9;
var actual = updated.sum;
expect(actual).toBe(expected);
});
test('should work with its documented example - product', function () {
var updated = (0, _computed["default"])(exampleCfg, exampleProps);
var expected = 24;
var actual = updated.product;
expect(actual).toBe(expected);
});
});
;