@dtable/utility
Version:
DTable utility
453 lines (426 loc) • 11.9 kB
text/typescript
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);
})
});