107 lines
4.6 KiB
TypeScript

import { SettingsMapper } from '../src/settingsMapper';
import { HotTableProps } from '../src/types';
describe('Settings mapper unit tests', () => {
describe('getSettings', () => {
it('should return a valid settings object, when provided an object with settings (including the hooks prefixed with "on")', () => {
const settingsMapper = new SettingsMapper();
const initial: HotTableProps = {
width: 300,
height: 300,
contextMenu: true,
columns: [
{label: 'first label'},
{label: 'second label'}
],
afterChange: () => {
return 'works!';
},
afterRender: () => {
return 'also works!';
}
};
const result: {[key: string]: any} = SettingsMapper.getSettings(initial);
expect(!!result.width && !!result.height && !!result.contextMenu && !!result.columns && !!result.afterChange && !!result.afterRender).toEqual(true);
expect(Object.keys(initial).length).toEqual(Object.keys(result).length);
expect(result.width).toEqual(300);
expect(result.height).toEqual(300);
expect(result.contextMenu).toEqual(true);
expect(JSON.stringify(initial.columns)).toEqual(JSON.stringify(result.columns));
expect(JSON.stringify(result.afterChange)).toEqual(JSON.stringify(initial.afterChange));
expect(JSON.stringify(result.afterRender)).toEqual(JSON.stringify(initial.afterRender));
expect(result.afterChange()).toEqual('works!');
expect(result.afterRender()).toEqual('also works!');
});
it('should return a valid settings object, when provided an object with settings inside a "settings" property (including the hooks prefixed with "on")', () => {
const settingsMapper = new SettingsMapper();
const initial = {
settings: {
width: 300,
height: 300,
contextMenu: true,
columns: [
{label: 'first label'},
{label: 'second label'}
],
afterChange: () => {
return 'works!';
},
afterRender: () => {
return 'also works!';
}
}
};
const result: {[key: string]: any} = SettingsMapper.getSettings(initial);
expect(!!result.width && !!result.height && !!result.contextMenu && !!result.columns && !!result.afterChange && !!result.afterRender).toEqual(true);
expect(Object.keys(initial.settings).length).toEqual(Object.keys(result).length);
expect(result.width).toEqual(300);
expect(result.height).toEqual(300);
expect(result.contextMenu).toEqual(true);
expect(JSON.stringify(initial.settings.columns)).toEqual(JSON.stringify(result.columns));
expect(JSON.stringify(result.afterChange)).toEqual(JSON.stringify(initial.settings.afterChange));
expect(JSON.stringify(result.afterRender)).toEqual(JSON.stringify(initial.settings.afterRender));
expect(result.afterChange()).toEqual('works!');
expect(result.afterRender()).toEqual('also works!');
expect(result.settings).toEqual(void 0);
});
it('should return a valid settings object, when provided an object with settings inside a "settings" property as well as individually (including the hooks prefixed with "on")', () => {
const settingsMapper = new SettingsMapper();
const initial = {
width: 300,
height: 300,
settings: {
contextMenu: true,
columns: [
{label: 'first label'},
{label: 'second label'}
],
afterChange: () => {
return 'works!';
},
afterRender: () => {
return 'also works!';
}
}
};
const result: {[key: string]: any} = SettingsMapper.getSettings(initial);
expect(!!result.width && !!result.height && !!result.contextMenu && !!result.columns && !!result.afterChange && !!result.afterRender).toEqual(true);
expect(Object.keys(initial.settings).length + Object.keys(initial).length - 1).toEqual(Object.keys(result).length);
expect(result.width).toEqual(300);
expect(result.height).toEqual(300);
expect(result.contextMenu).toEqual(true);
expect(JSON.stringify(initial.settings.columns)).toEqual(JSON.stringify(result.columns));
expect(JSON.stringify(result.afterChange)).toEqual(JSON.stringify(initial.settings.afterChange));
expect(JSON.stringify(result.afterRender)).toEqual(JSON.stringify(initial.settings.afterRender));
expect(result.afterChange()).toEqual('works!');
expect(result.afterRender()).toEqual('also works!');
expect(result.settings).toEqual(void 0);
});
});
});