calculate-items
Version:
Items calculation template
372 lines (363 loc) • 8.41 kB
text/typescript
import {Item, Summary} from '../../types/types';
const testCases: TestCaseObj[] = [
{
input: '4*5000[1,2] + (2+5)*2000[2,3] + 12000 + 4000 + 12%',
summary: {
members: [
{
index: 1,
totalExpression: '10000(4*5000/2) + 4000(12000/3) + 1333.33(4000/3) + 1840(15333.33*0.12)',
total: 17173.33,
productNames: ["Item 1", "Item 3", "Item 4", "Item 5"]
},
{
index: 2,
totalExpression: '10000(4*5000/2) + 4000(2*2000) + 4000(12000/3) + 1333.33(4000/3) + 2320(19333.33*0.12)',
total: 21653.33,
productNames: ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
},
{
index: 3,
totalExpression: '10000(5*2000) + 4000(12000/3) + 1333.33(4000/3) + 1840(15333.33*0.12)',
total: 17173.33,
productNames: ["Item 2", "Item 3", "Item 4", "Item 5"]
},
],
membersCount: 3,
total: 55999.99,
},
output: [
{
name: 'Item 1',
value: 20000,
originValue: '4*5000',
valueType: 'currency',
quantity: 4,
unitValue: 5000,
members: [1, 2],
order: 1,
values: {},
},
{
name: 'Item 2',
value: 14000,
originValue: '(2+5)*2000',
valueType: 'currency',
quantity: 7,
unitValue: 2000,
members: [2, 3],
order: 2,
values: {
2: {
origin: '2*2000',
total: 4000,
},
3: {
origin: '5*2000',
total: 10000,
},
},
},
{
name: 'Item 3',
value: 12000,
originValue: '12000',
valueType: 'currency',
quantity: 1,
unitValue: 12000,
members: [],
order: 3,
values: {},
},
{
name: 'Item 4',
value: 4000,
originValue: '4000',
valueType: 'currency',
quantity: 1,
unitValue: 4000,
members: [],
order: 4,
values: {},
},
{
name: 'Item 5',
value: 12,
originValue: '12%',
valueType: 'percentage',
quantity: 1,
unitValue: 12,
members: [],
order: 5,
values: {},
},
],
fails: false
},
// {
// input: "uq-23\nnsdfsd-34n",
// summary: { members: [], membersCount: 0, total: 0 },
// output: []
// },
{
input: '-',
summary: {members: [], membersCount: 0, total: 0},
output: [],
notValid: true
},
{
input: 'non 3000',
summary: {members: [], membersCount: 0, total: 0},
output: [],
notValid: true
},
// {
// input: `un-3000
// olma[1]-23
// qolganlari-400000
// shu[3,4,5]-232
// ana-mana[8] -34`,
// summary: {
// total: 0,
// members: [],
// membersCount: 8,
// },
// output: [],
// },
{
input: `koza[1] - 32000
Frekodel[2] - 20000
Non - 8000
Limon-choy - 5000 -2000
Xizmat - 15%`,
summary: {members: [
{
index: 1,
totalExpression: "32000(32000/1) + 4000(8000/2) + 1500(3000/2) + 5625(37500*0.15)",
total: 43125,
productNames: ["koza", "Non", "Limon-choy", "Xizmat"]
},
{
index: 2,
totalExpression: "20000(20000/1) + 4000(8000/2) + 1500(3000/2) + 3825(25500*0.15)",
total: 29325,
productNames: ["Frekodel", "Non","Limon-choy", "Xizmat"]
},
], total: 72450, inputText: '', membersCount: 2},
output: [
{
name: 'koza',
value: 32000,
originValue: "32000",
valueType: 'currency',
quantity: 1,
unitValue: 32000,
members: [1],
order: 1,
values: {}
},
{
name: "Frekodel",
value: 20000,
originValue: "20000",
valueType: 'currency',
quantity: 1,
unitValue: 20000,
members: [2],
order: 2,
values: {}
},
{
name: 'Non',
value: 8000,
originValue: "8000",
valueType: 'currency',
quantity: 1,
unitValue: 8000,
members: [],
order: 3,
values: {},
},
{
name: 'Limon-choy',
value: 3000,
originValue: "5000 -2000",
valueType: 'currency',
quantity: 1,
unitValue: 3000,
members: [],
order: 4,
values: {}
},
{
name: 'Xizmat',
value: 15,
originValue: '15%',
valueType: 'percentage',
quantity: 1,
unitValue: 15,
members: [],
order: 5,
values: {}
},
] as Item[],
},
{
input: `Osh [1, 2] - 43 000 so'm
Sho'rva[4] - 23 400 so'm
Choy - 3500 so'm
Non - 4000 so'm
Xizmat - 12%
[@user1, tyun, koang\'ip, hwoa sdfa]
`,
summary: {
membersCount: 4,
total: 82768,
members: [
{
index: 1,
username: '@user1',
totalExpression: '21500(43 000 so\'m/2) + 875(3500/4) + 1000(4000/4) + 2805(23375*0.12)',
total: 26180,
productNames: ["Osh", "Choy", "Non", "Xizmat"]
},
{
index: 2,
username: 'tyun',
totalExpression: '21500(43 000 so\'m/2) + 875(3500/4) + 1000(4000/4) + 2805(23375*0.12)',
total: 26180,
productNames: ["Osh", "Choy", "Non", "Xizmat"]
},
{
index: 3,
username: 'koang\'ip',
totalExpression: '875(3500/4) + 1000(4000/4) + 225(1875*0.12)',
total: 2100,
productNames: ["Choy", "Non", "Xizmat"]
},
{
index: 4,
username: 'hwoa sdfa',
totalExpression: '23400(23 400 so\'m/1) + 875(3500/4) + 1000(4000/4) + 3033(25275*0.12)',
total: 28308,
productNames: ["Sho'rva", "Choy", "Non", "Xizmat"]
},
],
},
output: [
{
name: 'Osh',
value: 43000,
originValue: "43 000 so'm",
valueType: 'currency',
quantity: 1,
unitValue: 43000,
members: [1, 2],
order: 1,
values: {}
},
{
name: "Sho'rva",
value: 23400,
originValue: "23 400 so'm",
valueType: 'currency',
quantity: 1,
unitValue: 23400,
members: [4],
order: 2,
values: {}
},
{
name: 'Choy',
value: 3500,
originValue: "3500 so'm",
valueType: 'currency',
quantity: 1,
unitValue: 3500,
members: [],
order: 3,
values: {},
},
{
name: 'Non',
value: 4000,
originValue: "4000 so'm",
valueType: 'currency',
quantity: 1,
unitValue: 4000,
members: [],
order: 4,
values: {}
},
{
name: 'Xizmat',
value: 12,
originValue: '12%',
valueType: 'percentage',
quantity: 1,
unitValue: 12,
members: [],
order: 5,
values: {}
},
] as Item[],
},
{
input: 'Salfetka 4 - 13500 + 445\n sut 1l - 23 000, \nmuzqaymoq 1l - 4 000',
output: [
{
name: 'Salfetka 4',
value: 13945,
originValue: '13500 + 445',
valueType: 'currency',
quantity: 1,
unitValue: 13945,
members: [],
order: 1,
values: {}
},
{
name: 'sut 1l',
value: 23000,
originValue: '23 000,',
valueType: 'currency',
quantity: 1,
unitValue: 23000,
members: [],
order: 2,
values: {}
},
{
name: 'muzqaymoq 1l',
value: 4000,
originValue: '4 000',
valueType: 'currency',
quantity: 1,
unitValue: 4000,
members: [],
order: 3,
values: {}
},
],
summary: {
members: [
{
index: 1,
totalExpression: '13945(13945/1) + 23000(23000/1) + 4000(4000/1)',
total: 40945,
productNames: ["Salfetka 4", "sut 1l", "muzqaymoq 1l"]
},
],
membersCount: 1,
total: 40945,
},
},
];
export default testCases;
type TestCaseObj = {
input: string;
summary: Summary;
output: Item[];
fails?: boolean
notValid?: boolean
}