import { ColumnType, SelectColor } from '../../types'; import { transformCellValueToSelectOptionId, transformCellValueToSelectOptionIdArray, } from './transformCellValueToSelect'; describe('transformCellValueToSelectOptionId', () => { it('returns notFound=true when a matching select option is not found', () => { expect( transformCellValueToSelectOptionId({ originCellValue: 'foo', originTypeOptions: { type: ColumnType.TEXT }, targetTypeOptions: { options: [ { name: 'bar', optionId: 'sel1', color: SelectColor.blackDarkest }, ], }, }).optionNotFound ).toBe(true); }); it('returns notFound=false when a matching select option is found', () => { expect( transformCellValueToSelectOptionId({ originCellValue: 'foo', originTypeOptions: { type: ColumnType.TEXT }, targetTypeOptions: { options: [ { name: 'foo', optionId: 'sel1', color: SelectColor.blackDarkest }, ], }, }).optionNotFound ).toBe(false); }); it('returns notFound=false when the input is empty', () => { expect( transformCellValueToSelectOptionId({ originCellValue: '', originTypeOptions: { type: ColumnType.TEXT }, targetTypeOptions: { options: [ { name: 'bar', optionId: 'sel1', color: SelectColor.blackDarkest }, ], }, }).optionNotFound ).toBe(false); }); it('returns the same value when SELECT option name changes but id remains the same', () => { expect( transformCellValueToSelectOptionId({ originCellValue: 'sel1', originTypeOptions: { type: ColumnType.SELECT, options: [ { optionId: 'sel1', name: 'foo', color: SelectColor.blackDarkest, }, ], }, targetTypeOptions: { options: [ { optionId: 'sel1', name: 'bar', color: SelectColor.blackDarkest, }, ], }, }).optionId ).toBe('sel1'); }); it('returns the same value when converting MULTI_SELECT to SELECT (so, same ids) but with name changes', () => { expect( transformCellValueToSelectOptionId({ // note that only the first option is taken when converting // MULTI_SELECT -> SELECT originCellValue: ['sel1', 'sel2'], originTypeOptions: { type: ColumnType.MULTI_SELECT, options: [ { optionId: 'sel1', name: 'foo', color: SelectColor.blackDarkest, }, { optionId: 'sel2', name: 'qux', color: SelectColor.blackLightest, }, ], }, targetTypeOptions: { options: [ { optionId: 'sel1', name: 'bar', color: SelectColor.blackDarkest, }, { optionId: 'sel2', name: 'qux', color: SelectColor.blackLightest, }, ], }, }).optionId ).toBe('sel1'); }); }); describe('transformCellValueToSelectOptionIdArray', () => { it('returns notFound=true when a matching select option is not found', () => { expect( transformCellValueToSelectOptionIdArray({ originCellValue: 'foo', originTypeOptions: { type: ColumnType.TEXT }, targetTypeOptions: { options: [ { name: 'bar', optionId: 'sel1', color: SelectColor.blackDarkest }, ], }, }).optionNotFound ).toBe(true); }); it('returns notFound=false when a matching select option is found', () => { expect( transformCellValueToSelectOptionIdArray({ originCellValue: 'foo', originTypeOptions: { type: ColumnType.TEXT }, targetTypeOptions: { options: [ { name: 'foo', optionId: 'sel1', color: SelectColor.blackDarkest }, ], }, }).optionNotFound ).toBe(false); }); it('returns notFound=false when the input is empty', () => { expect( transformCellValueToSelectOptionIdArray({ originCellValue: '', originTypeOptions: { type: ColumnType.TEXT }, targetTypeOptions: { options: [ { name: 'bar', optionId: 'sel1', color: SelectColor.blackDarkest }, ], }, }).optionNotFound ).toBe(false); }); it('returns the same value when MULTI_SELECT option name changes but id remains the same', () => { expect( transformCellValueToSelectOptionIdArray({ originCellValue: ['sel1'], originTypeOptions: { type: ColumnType.MULTI_SELECT, options: [ { optionId: 'sel1', name: 'foo', color: SelectColor.blackDarkest, }, ], }, targetTypeOptions: { options: [ { optionId: 'sel1', name: 'bar', color: SelectColor.blackDarkest, }, ], }, }).optionIds ).toEqual(['sel1']); }); it('returns the same value when converting SELECT to MULTI_SELECT (so, same ids) but with name changes', () => { expect( transformCellValueToSelectOptionIdArray({ originCellValue: 'sel1', originTypeOptions: { type: ColumnType.SELECT, options: [ { optionId: 'sel1', name: 'foo', color: SelectColor.blackDarkest, }, { optionId: 'sel2', name: 'qux', color: SelectColor.blackLightest, }, ], }, targetTypeOptions: { options: [ { optionId: 'sel1', name: 'bar', color: SelectColor.blackDarkest, }, { optionId: 'sel2', name: 'qux', color: SelectColor.blackLightest, }, ], }, }).optionIds ).toEqual(['sel1']); }); });