import type { IconifyJSON } from '@iconify/types'; import { minifyIconSet } from '../lib/icon-set/minify'; describe('Testing minifying icon set', () => { test('Nothing to minify', () => { const item: IconifyJSON = { prefix: 'foo', icons: { foo: { body: '', width: 24, height: 24, }, }, }; const expected: IconifyJSON = { prefix: 'foo', icons: { foo: { body: '', width: 24, height: 24, }, }, }; minifyIconSet(item); expect(item).toEqual(expected); }); test('No common values', () => { const item: IconifyJSON = { prefix: 'foo', icons: { 'foo-24': { body: '', width: 24, height: 24, }, 'foo-16': { body: '', width: 12, height: 12, }, }, }; const expected: IconifyJSON = { prefix: 'foo', icons: { 'foo-24': { body: '', width: 24, height: 24, }, 'foo-16': { body: '', width: 12, height: 12, }, }, }; minifyIconSet(item); expect(item).toEqual(expected); }); test('Default values', () => { const item: IconifyJSON = { prefix: 'foo', icons: { foo: { body: '', width: 24, // Height matches default height: 16, }, bar: { body: '', // Width matches default width: 16, height: 12, }, }, }; const expected: IconifyJSON = { prefix: 'foo', icons: { foo: { body: '', width: 24, }, bar: { body: '', height: 12, }, }, }; minifyIconSet(item); expect(item).toEqual(expected); }); test('Default values in icon', () => { const item: IconifyJSON = { prefix: 'bar', icons: { 'chrome-maximize': { body: '', width: 24, height: 24, hidden: true, }, 'chrome-minimize': { body: '', width: 24, height: 24, hidden: true, }, 'remove': { body: '', }, }, }; const expected: IconifyJSON = { prefix: 'bar', icons: { 'chrome-maximize': { body: '', hidden: true, }, 'chrome-minimize': { body: '', hidden: true, }, 'remove': { body: '', width: 16, height: 16, }, }, width: 24, height: 24, }; minifyIconSet(item); expect(item).toEqual(expected); }); test('Common value', () => { const item: IconifyJSON = { prefix: 'foo', icons: { // 2 icons have the same height, 2 icons have the same width 'foo-wide': { body: '', width: 32, height: 24, }, 'foo-square': { body: '', width: 24, height: 24, }, 'foo-tiny-wide': { body: '', width: 24, height: 16, }, 'foo-tiny-square': { body: '', width: 16, height: 16, }, }, }; const expected: IconifyJSON = { prefix: 'foo', icons: { 'foo-wide': { body: '', width: 32, }, 'foo-square': { body: '', }, 'foo-tiny-wide': { body: '', height: 16, }, 'foo-tiny-square': { body: '', width: 16, height: 16, }, }, width: 24, height: 24, }; minifyIconSet(item); expect(item).toEqual(expected); }); test('Common value that matches default', () => { const item: IconifyJSON = { prefix: 'foo', icons: { // 2 icons have the same height of 16, which is default value 'foo-wide': { body: '', width: 24, height: 16, }, 'foo-square': { body: '', width: 16, height: 16, }, 'foo-tiny': { body: '', width: 12, height: 16, }, }, }; const expected: IconifyJSON = { prefix: 'foo', icons: { 'foo-wide': { body: '', width: 24, }, 'foo-square': { body: '', // Should not have width because it matches default value }, 'foo-tiny': { body: '', width: 12, }, }, }; minifyIconSet(item); expect(item).toEqual(expected); }); });