mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-28 00:06:53 +01:00
97 lines
3.3 KiB
JavaScript
97 lines
3.3 KiB
JavaScript
|
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);
|
||
|
});
|
||
|
});
|