UNPKG

@dtable/utility

Version:

DTable utility

453 lines (426 loc) 11.9 kB
import { formatFieldFromString } from "../src/Util"; import { ColumnType, SelectOptions } from "../src/Column"; describe('util', function () { it('should formatFieldFromString select', () => { const result = formatFieldFromString({ type: ColumnType.Select, typeOptions: {} }, ['a', 'b', 'c'], { type: ColumnType.Text, typeOptions: {} }) console.log(JSON.stringify(result, null, 2)) }) // 单选转多选 颜色测试 it('should format color select to multi-select', () => { const result = formatFieldFromString({ type: ColumnType.MultiSelect, typeOptions: {"optionOrder": [ "selgMXznKpXROPZLv", "selEu11bdBH12lmUH", "selHqRl9s8YKM5ECx", ], "options": { "selgMXznKpXROPZLv": { "color": "#25BF84", "name": "a", "id": "selgMXznKpXROPZLv" }, "selEu11bdBH12lmUH": { "color": "#4C9AFF", "name": "b", "id": "selEu11bdBH12lmUH" }, "selHqRl9s8YKM5ECx": { "color": "#F075A9", "name": "c,d", "id": "selHqRl9s8YKM5ECx" }, }, "disableColors": false } }, ['a', 'b','c,d'], { type: ColumnType.Select, typeOptions: {"optionOrder": [ "selgMXznKpXROPZLv", "selEu11bdBH12lmUH", "selHqRl9s8YKM5ECx", "seluuECQW9cosV1Oq" ], "options": { "selgMXznKpXROPZLv": { "color": "#25BF84", "name": "a", "id": "selgMXznKpXROPZLv" }, "selEu11bdBH12lmUH": { "color": "#4C9AFF", "name": "b", "id": "selEu11bdBH12lmUH" }, "selHqRl9s8YKM5ECx": { "color": "#F075A9", "name": "c,d", "id": "selHqRl9s8YKM5ECx" } }, "disableColors": false } }); console.log(JSON.stringify(result, null, 2)) }); // 多选转单选 颜色测试 it('should format color multi-select to select', () => { const result = formatFieldFromString({ type: ColumnType.Select, typeOptions: {"optionOrder": [ "selgMXznKpXROPZLv", "selEu11bdBH12lmUH", "selHqRl9s8YKM5ECx", "seluuECQW9cosV1Oq" ], "options": { "selgMXznKpXROPZLv": { "color": "#25BF84", "name": "a", "id": "selgMXznKpXROPZLv" }, "selEu11bdBH12lmUH": { "color": "#4C9AFF", "name": "b", "id": "selEu11bdBH12lmUH" }, "selHqRl9s8YKM5ECx": { "color": "#F075A9", "name": "c", "id": "selHqRl9s8YKM5ECx" }, "seluuECQW9cosV1Oq": { "color": "#FB8F74", "name": "d", "id": "seluuECQW9cosV1Oq" }, }, "disableColors": false } }, ['a','d', 'b,c'], { type: ColumnType.MultiSelect, typeOptions: {"optionOrder": [ "selgMXznKpXROPZLv", "selEu11bdBH12lmUH", "selHqRl9s8YKM5ECx", "seluuECQW9cosV1Oq" ], "options": { "selgMXznKpXROPZLv": { "color": "#25BF84", "name": "a", "id": "selgMXznKpXROPZLv" }, "selEu11bdBH12lmUH": { "color": "#4C9AFF", "name": "b", "id": "selEu11bdBH12lmUH" }, "selHqRl9s8YKM5ECx": { "color": "#F075A9", "name": "c", "id": "selHqRl9s8YKM5ECx" }, "seluuECQW9cosV1Oq": { "color": "#FB8F74", "name": "d", "id": "seluuECQW9cosV1Oq" }, }, "disableColors": false } }); console.log(JSON.stringify(result, null, 2)) }); // 多选转单选 it('should format multi-select to select', () => { const result = formatFieldFromString({ type: ColumnType.Select, typeOptions: {"optionOrder": [ "selZrHSm5ArMhsWB5", "selv84npvWjd8X0nZ", "selahcEAUlzYBMnsU", "selahcEAUlzYBMnsQ", "selahcEAUlzYBMnsZ" ], "options": { "selZrHSm5ArMhsWB5": { "color": "#25BF84", "name": "a", "id": "selZrHSm5ArMhsWB5" }, "selv84npvWjd8X0nZ": { "color": "#4C9AFF", "name": "b", "id": "selv84npvWjd8X0nZ" }, "selahcEAUlzYBMnsU": { "color": "#F075A9", "name": "c", "id": "selahcEAUlzYBMnsU" }, "selahcEAUlzYBMnsQ": { "color": "#F075A9", "name": "e", "id": "selahcEAUlzYBMnsQ" }, "selahcEAUlzYBMnsZ": { "color": "#F075A9", "name": "g", "id": "selahcEAUlzYBMnsZ" } }, "disableColors": false } }, ['a, b, c', 'e,g','g'], { type: ColumnType.MultiSelect, typeOptions: {"optionOrder": [ "selZrHSm5ArMhsWB5", "selv84npvWjd8X0nZ", "selahcEAUlzYBMnsU", "selahcEAUlzYBMnsQ", "selahcEAUlzYBMnsZ" ], "options": { "selZrHSm5ArMhsWB5": { "color": "#25BF84", "name": "a", "id": "selZrHSm5ArMhsWB5" }, "selv84npvWjd8X0nZ": { "color": "#4C9AFF", "name": "b", "id": "selv84npvWjd8X0nZ" }, "selahcEAUlzYBMnsU": { "color": "#F075A9", "name": "c", "id": "selahcEAUlzYBMnsU" }, "selahcEAUlzYBMnsQ": { "color": "#F075A9", "name": "e", "id": "selahcEAUlzYBMnsQ" }, "selahcEAUlzYBMnsZ": { "color": "#F075A9", "name": "g", "id": "selahcEAUlzYBMnsZ" } }, "disableColors": false } }); const data ={ type: ColumnType.Select, typeOptions: {"optionOrder": [ "selahcEAUlzYBMnsZ", expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), ], "disableColors": false } } const dataOptions = { "selahcEAUlzYBMnsZ": { "name": "g", "id": "selahcEAUlzYBMnsZ" }, "selZrHSm5ArMhsWB9": { "name": "a, b, c", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), }, "selZrHSm5ArMhsWA9": { "name": "e,g", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), }, }; expect(Object.values((result.typeOptions as SelectOptions).options)).toMatchObject(Object.values(dataOptions)); expect(result).toMatchObject(data); }); // 单选转多选 it('should format select to multi-select', () => { const result = formatFieldFromString({ type: ColumnType.MultiSelect, typeOptions:{"optionOrder": [ "selZrHSm5ArMhsWB5", "selv84npvWjd8X0nZ", "selahcEAUlzYBMnsU", "selZrHSm5ArMhsWB4" ], "options": { "selZrHSm5ArMhsWB5": { "color": "#25BF84", "name": "b", "id": "selZrHSm5ArMhsWB5" }, "selZrHSm5ArMhsWB4": { "color": "#25BF84", "name": "a,c", "id": "selZrHSm5ArMhsWB4" }, "selv84npvWjd8X0nZ": { "color": "#4C9AFF", "name": "d", "id": "selv84npvWjd8X0nZ" }, "selahcEAUlzYBMnsU": { "color": "#F075A9", "name": "h", "id": "selahcEAUlzYBMnsU" } }, "disableColors": false } }, ['a,c','b', 'h'], { type: ColumnType.Select, typeOptions: {"optionOrder": [ "selZrHSm5ArMhsWB5", "selv84npvWjd8X0nZ", "selahcEAUlzYBMnsU", "selZrHSm5ArMhsWB4" ], "options": { "selZrHSm5ArMhsWB5": { "color": "#25BF84", "name": "b", "id": "selZrHSm5ArMhsWB5" }, "selZrHSm5ArMhsWB4": { "color": "#25BF84", "name": "a,c", "id": "selZrHSm5ArMhsWB4" }, "selv84npvWjd8X0nZ": { "color": "#4C9AFF", "name": "d", "id": "selv84npvWjd8X0nZ" }, "selahcEAUlzYBMnsU": { "color": "#F075A9", "name": "h", "id": "selahcEAUlzYBMnsU" } }, "disableColors": false } }); const data ={ type: ColumnType.MultiSelect, typeOptions: {"optionOrder": [ "selZrHSm5ArMhsWB5", "selahcEAUlzYBMnsU", expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), ], "disableColors": false } } const dataOptions = { "selZrHSm5ArMhsWB5": { "color": "#25BF84", "name": "b", "id": "selZrHSm5ArMhsWB5" }, "selahcEAUlzYBMnsU": { "color": "#F075A9", "name": "h", "id": "selahcEAUlzYBMnsU" }, "selZrHSm5ArMhsWB3":{ "name": "a", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, "selZrHSm5ArMhsWB4":{ "name": "c", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, }; expect(Object.values((result.typeOptions as SelectOptions).options)).toMatchObject(Object.values(dataOptions)); expect(result).toMatchObject(data); }); // 文本转多选 it('should format text to muti-select', () => { const result = formatFieldFromString({ type: ColumnType.MultiSelect, typeOptions: {} }, ['efg','deg','abc,efg'], { type: ColumnType.Text, typeOptions: {} }) const data ={ type: ColumnType.MultiSelect, typeOptions: {"optionOrder": [ expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) ], "disableColors": false } } const dataOptions = { "selZrHSm5ArMhsWB1": { "name": "efg", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, "selZrHSm5ArMhsWA9": { "name": "deg", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, "selZrHSm5ArMhsWA6": { "name": "abc", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, }; expect(Object.values((result.typeOptions as SelectOptions).options)).toMatchObject(Object.values(dataOptions)); expect(result).toMatchObject(data); // console.log(JSON.stringify(result, null, 2)) }) // 文本转单选 it('should format text to select', () => { const result = formatFieldFromString({ type: ColumnType.Select, typeOptions: {}, }, ['cba','qwe', 'fgh','a,b'], { type: ColumnType.Text, typeOptions: {} }) const data ={ type: ColumnType.Select, typeOptions: {"optionOrder": [ expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) ], "disableColors": false } } const dataOptions = { "selZrHSm5ArMhsWB5": { "name": "cba", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/), }, "selv84npvWjd8X0nR": { "name": "qwe", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, "selv84npvWjd8X0nW": { "name": "fgh", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, "selv84npvWjd8X0nU": { "name": "a,b", "id": expect.stringMatching(/^(sel)[a-z|A-Z|0-9]{14}$/) }, }; expect(Object.values((result.typeOptions as SelectOptions).options)).toMatchObject(Object.values(dataOptions)); expect(result).toMatchObject(data); }) });