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,
});
});
});