import { validateIconSet } from '../lib/icon-set/validate'; describe('Testing validating alias', () => { test('Empty', () => { expect( validateIconSet({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: {}, }) ).toEqual({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: {}, }); // Fix it expect( validateIconSet( { prefix: 'foo', icons: { bar: { body: '', }, }, aliases: {}, }, { fix: true } ) ).toEqual({ prefix: 'foo', icons: { bar: { body: '', }, }, }); }); test('Null', () => { return new Promise((fulfill, reject) => { try { validateIconSet({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: null, }); reject('Expected to throw error when aliases is null'); return; } catch { // } // Fix it expect( validateIconSet( { prefix: 'foo', icons: { bar: { body: '', }, }, aliases: null, }, { fix: true } ) ).toEqual({ prefix: 'foo', icons: { bar: { body: '', }, }, }); fulfill(true); }); }); test('Invalid parent', () => { return new Promise((fulfill, reject) => { try { const result = validateIconSet({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'missing', }, }, }); reject( 'Expected to throw error when alias has missing parent, got ' + JSON.stringify(result) ); return; } catch { // } // Fix it expect( validateIconSet( { prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'missing', }, }, }, { fix: true } ) ).toEqual({ prefix: 'foo', icons: { bar: { body: '', }, }, }); fulfill(true); }); }); test('Invalid parent, 2 levels', () => { return new Promise((fulfill, reject) => { try { const result = validateIconSet({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'missing', }, baz2: { parent: 'baz', }, }, }); reject( 'Expected to throw error when alias has missing parent, got ' + JSON.stringify(result) ); return; } catch { // } // Fix it expect( validateIconSet( { prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'missing', }, baz2: { parent: 'baz', }, }, }, { fix: true } ) ).toEqual({ prefix: 'foo', icons: { bar: { body: '', }, }, }); fulfill(true); }); }); test('Invalid parent, 2 levels, reverse order', () => { return new Promise((fulfill, reject) => { try { const result = validateIconSet({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'baz2', }, baz2: { parent: 'missing', }, }, }); reject( 'Expected to throw error when alias has missing parent, got ' + JSON.stringify(result) ); return; } catch { // } // Fix it expect( validateIconSet( { prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'baz2', }, baz2: { parent: 'missing', }, }, }, { fix: true } ) ).toEqual({ prefix: 'foo', icons: { bar: { body: '', }, }, }); fulfill(true); }); }); test('Parent loop', () => { return new Promise((fulfill, reject) => { try { const result = validateIconSet({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'baz2', }, baz2: { parent: 'baz', }, baz3: { parent: 'bar', }, }, }); reject( 'Expected to throw error when alias has missing parent, got ' + JSON.stringify(result) ); return; } catch { // } // Fix it expect( validateIconSet( { prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz: { parent: 'baz2', }, baz2: { parent: 'baz', }, baz3: { parent: 'bar', }, }, }, { fix: true } ) ).toEqual({ prefix: 'foo', icons: { bar: { body: '', }, }, aliases: { baz3: { parent: 'bar', }, }, }); fulfill(true); }); }); });