import type { IconifyIcon } from '@iconify/types'; import { mergeIconData } from '../lib/icon/merge'; describe('Testing merging icon data', () => { test('Nothing to merge', () => { const icon: IconifyIcon = { body: '', }; const expected: IconifyIcon = { body: '', }; // Check hint manually: supposed to be IconifyIcon const result = mergeIconData(icon, {}); expect(result).toEqual(expected); }); test('Full icons', () => { const icon: Required = { body: '', width: 24, height: 24, left: 0, top: 0, rotate: 0, hFlip: false, vFlip: false, }; const expected: Required = { body: '', width: 24, height: 24, left: 0, top: 0, rotate: 0, hFlip: false, vFlip: false, }; // Check hint manually: supposed to be Required const result = mergeIconData(icon, {}); expect(result).toEqual(expected); }); test('Copy values', () => { // Copy values expect( mergeIconData( { body: '', width: 24, }, { height: 32, } ) ).toEqual({ body: '', width: 24, height: 32, }); }); test('Override values', () => { expect( mergeIconData( { body: '', width: 24, height: 24, }, { height: 32, } ) ).toEqual({ body: '', width: 24, height: 32, }); }); test('Override transformations', () => { expect( mergeIconData( { body: '', width: 24, height: 24, hFlip: true, rotate: 3, }, { height: 32, vFlip: true, rotate: 2, } ) ).toEqual({ body: '', width: 24, height: 32, hFlip: true, vFlip: true, rotate: 1, }); }); });