1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/src/lib/event-differ.test.js
Christopher Kolstad 3a65847aa7
Migrate to jest (#854)
* Migrate to jest
* Use --force-exit until dns close handle issue https://github.com/facebook/jest/issues/9982

Co-authored-by: Ivar Conradi Østhus <ivarconr@gmail.com>
2021-05-28 11:10:24 +02:00

159 lines
4.1 KiB
JavaScript

'use strict';
const eventDiffer = require('./event-differ');
const { FEATURE_CREATED, FEATURE_UPDATED } = require('./types/events');
test('should not fail if events include an unknown event type', () => {
const events = [
{ type: FEATURE_CREATED, data: {} },
{ type: 'unknown-type', data: {} },
];
eventDiffer.addDiffs(events);
expect(true).toBe(true);
});
test('diffs a feature-update event', () => {
const feature = 'foo';
const desc = 'bar';
const events = [
{
type: FEATURE_UPDATED,
data: {
name: feature,
description: desc,
strategy: 'default',
enabled: true,
parameters: { value: 2 },
},
},
{
type: FEATURE_CREATED,
data: {
name: feature,
description: desc,
strategy: 'default',
enabled: false,
parameters: { value: 1 },
},
},
];
eventDiffer.addDiffs(events);
const { diffs } = events[0];
expect(diffs[0].kind === 'E').toBe(true);
expect(diffs[0].path[0] === 'enabled').toBe(true);
expect(diffs[0].kind === 'E').toBe(true);
expect(diffs[0].lhs === false).toBe(true);
expect(diffs[0].rhs).toBe(true);
expect(diffs[1].kind === 'E').toBe(true);
expect(diffs[1].path[0] === 'parameters').toBe(true);
expect(diffs[1].path[1] === 'value').toBe(true);
expect(diffs[1].kind === 'E').toBe(true);
expect(diffs[1].lhs === 1).toBe(true);
expect(events[1].diffs === null).toBe(true);
});
test('diffs only against features with the same name', () => {
const events = [
{
type: FEATURE_UPDATED,
data: {
name: 'bar',
description: 'desc',
strategy: 'default',
enabled: true,
parameters: {},
},
},
{
type: FEATURE_UPDATED,
data: {
name: 'foo',
description: 'desc',
strategy: 'default',
enabled: false,
parameters: {},
},
},
{
type: FEATURE_CREATED,
data: {
name: 'bar',
description: 'desc',
strategy: 'default',
enabled: false,
parameters: {},
},
},
{
type: FEATURE_CREATED,
data: {
name: 'foo',
description: 'desc',
strategy: 'default',
enabled: true,
parameters: {},
},
},
];
eventDiffer.addDiffs(events);
expect(events[0].diffs[0].rhs === true).toBe(true);
expect(events[1].diffs[0].rhs === false).toBe(true);
expect(events[2].diffs === null).toBe(true);
expect(events[3].diffs === null).toBe(true);
});
test('sets an empty array of diffs if nothing was changed', () => {
const events = [
{
type: FEATURE_UPDATED,
data: {
name: 'foo',
description: 'desc',
strategy: 'default',
enabled: true,
parameters: {},
},
},
{
type: FEATURE_CREATED,
data: {
name: 'foo',
description: 'desc',
strategy: 'default',
enabled: true,
parameters: {},
},
},
];
eventDiffer.addDiffs(events);
expect(events[0].diffs).toEqual([]);
});
test('sets diffs to null if there was nothing to diff against', () => {
const events = [
{
type: FEATURE_UPDATED,
data: {
name: 'foo',
description: 'desc',
strategy: 'default',
enabled: true,
parameters: {},
},
},
];
eventDiffer.addDiffs(events);
expect(events[0].diffs === null).toBe(true);
});