107 lines
4.6 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
});
|