UNPKG

graph-crdt

Version:
105 lines (85 loc) 3.17 kB
'use strict'; var _mocha = require('mocha'); var _expect = require('expect'); var _expect2 = _interopRequireDefault(_expect); var _index = require('./index'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var createSpy = _expect2.default.createSpy; /* eslint-disable require-jsdoc*/ (0, _mocha.describe)('A union', function () { (0, _mocha.describe)('conflict', function () { var current = void 0, update = void 0, result = void 0, inverse = void 0; var state = 10; (0, _mocha.beforeEach)(function () { current = { state: state }; update = { state: state }; }); function setup() { // Try it in both orders. result = (0, _index.conflict)(current, update); inverse = (0, _index.conflict)(update, current); } (0, _mocha.it)('should resolve to the greater object uid', function () { current.value = { edge: 'abc' }; update.value = { edge: 'def' }; setup(); (0, _expect2.default)(result).toBe(update); (0, _expect2.default)(inverse).toBe(update); }); (0, _mocha.it)('should return the first arg if uids are equal', function () { current.value = { edge: 'equal' }; update.value = { edge: 'equal' }; setup(); (0, _expect2.default)(result).toBe(current); (0, _expect2.default)(inverse).toBe(update); }); (0, _mocha.it)('should favor objects over strings', function () { current.value = { edge: 'def' }; update.value = 'abc'; setup(); (0, _expect2.default)(result).toBe(current); (0, _expect2.default)(inverse).toBe(current); }); (0, _mocha.it)('should favor numbers over strings', function () { current.value = '5'; update.value = 5; setup(); (0, _expect2.default)(result).toBe(update); (0, _expect2.default)(inverse).toBe(update); }); (0, _mocha.it)('should resolve to larger values', function () { current.value = 'def'; update.value = 'abc'; setup(); (0, _expect2.default)(result).toBe(current); (0, _expect2.default)(inverse).toBe(current); }); (0, _mocha.it)('should return the first arg if both are equivalent', function () { current.value = 'equal'; update.value = 'equal'; setup(); (0, _expect2.default)(result).toBe(current); (0, _expect2.default)(inverse).toBe(update); }); (0, _mocha.it)('should toString objects to compare', function () { var spy = createSpy().andReturn('abc'); current.value = { toJSON: spy }; update.value = { toJSON: function toJSON() { return 'def'; } }; setup(); (0, _expect2.default)(result).toBe(update); (0, _expect2.default)(inverse).toBe(update); (0, _expect2.default)(spy).toHaveBeenCalled(); }); (0, _mocha.it)('should favor edges over strings of the same value', function () { current.value = { edge: 'equal' }; update.value = 'equal'; setup(); (0, _expect2.default)(result).toBe(current); (0, _expect2.default)(inverse).toBe(current); }); }); });