sharec-schema
Version:
Utilities for configuration files merge
43 lines (34 loc) • 1.42 kB
JavaScript
const { fixtures } = require('testUtils')
const compose = require('../../compose')
const { primitiveAtom } = require('../../../atoms')
describe('actions > compose > operators', () => {
const hashFxt = fixtures('rule/json/01-hash', 'map')
describe('$$default', () => {
it('applies default strategy for all fields', () => {
const composition = compose({ $$default: primitiveAtom })
const result = composition(hashFxt)
expect(result).toEqual(hashFxt.result)
})
})
describe('$$ignore', () => {
const composition = compose({ $$default: primitiveAtom, $$ignore: ['bar'] })
describe('current', () => {
it('applies all fields except ignored one', () => {
const result = composition({
current: new Map([['foo', 'foo'], ['bar', 'bar'], ['baz', 'baz']]),
upcoming: new Map([['foo', 'new foo'], ['bar', 'new bar'], ['baz', 'baz']]),
})
expect(result).toEqual(new Map([['foo', 'new foo'], ['bar', 'bar'], ['baz', 'baz']]))
})
})
describe('upcoming', () => {
it('applies all fields except ignored one', () => {
const result = composition({
current: new Map([['foo', 'foo'], ['baz', 'baz']]),
upcoming: new Map([['foo', 'new foo'], ['bar', 'new bar'], ['baz', 'baz']]),
})
expect(result).toEqual(new Map([['foo', 'new foo'], ['baz', 'baz']]))
})
})
})
})