1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-28 00:06:53 +01:00
unleash.unleash/test/eventDifferTest.js
Anders Olsen Sandvik f01ef69d7e #108 Add eslint-config-spt and remove jshint (#111)
* #108 Add eslint-config-spt

* #108 Ignore bundle.js file

* #108 Change eslint ignore path to a glob file

* Remove jshint and follow more of eslint rules
2016-04-24 22:41:37 +02:00

99 lines
3.4 KiB
JavaScript

'use strict';
var eventDiffer = require('../lib/eventDiffer');
var eventType = require('../lib/eventType');
var assert = require('assert');
describe('eventDiffer', function () {
it('fails if events include an unknown event type', function () {
var events = [
{ type: eventType.featureCreated, data: {} },
{ type: 'unknown-type', data: {} }
];
assert.throws(function () {
eventDiffer.addDiffs(events);
});
});
it('diffs a feature-update event', function () {
var name = 'foo';
var desc = 'bar';
var events = [
{
type: eventType.featureUpdated,
data: { name: name, description: desc, strategy: 'default', enabled: true, parameters: { value: 2 } }
},
{
type: eventType.featureCreated,
data: { name: name, description: desc, strategy: 'default', enabled: false, parameters: { value: 1 } }
}
];
eventDiffer.addDiffs(events);
assert.deepEqual(events[0].diffs, [
{ kind: 'E', path: ["enabled"], lhs: false, rhs: true },
{ kind: 'E', path: ["parameters", "value"], lhs: 1, rhs: 2 }
]);
assert.strictEqual(events[1].diffs, null);
});
it('diffs only against features with the same name', function () {
var events = [
{
type: eventType.featureUpdated,
data: { name: 'bar', description: 'desc', strategy: 'default', enabled: true, parameters: {} }
},
{
type: eventType.featureUpdated,
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: false, parameters: {} }
},
{
type: eventType.featureCreated,
data: { name: 'bar', description: 'desc', strategy: 'default', enabled: false, parameters: {} }
},
{
type: eventType.featureCreated,
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} }
}
];
eventDiffer.addDiffs(events);
assert.strictEqual(events[0].diffs[0].rhs, true);
assert.strictEqual(events[1].diffs[0].rhs, false);
assert.strictEqual(events[2].diffs, null);
assert.strictEqual(events[3].diffs, null);
});
it('sets an empty array of diffs if nothing was changed', function () {
var events = [
{
type: eventType.featureUpdated,
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} }
},
{
type: eventType.featureCreated,
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} }
}
];
eventDiffer.addDiffs(events);
assert.deepEqual(events[0].diffs, []);
});
it('sets diffs to null if there was nothing to diff against', function () {
var events = [
{
type: eventType.featureUpdated,
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} }
}
];
eventDiffer.addDiffs(events);
assert.strictEqual(events[0].diffs, null);
});
});