@delicity/client-cart 1.2.13 → 1.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/classes/Cart.d.ts +129 -0
- package/classes/Cart.d.ts.map +1 -0
- package/classes/Cart.js +482 -0
- package/classes/Cart.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.d.ts.map +1 -0
- package/index.js +20 -0
- package/index.js.map +1 -0
- package/package.json +1 -1
- package/service/CartService.d.ts +14 -0
- package/service/CartService.d.ts.map +1 -0
- package/service/CartService.js +130 -0
- package/service/CartService.js.map +1 -0
- package/service/CategoryAvailabilityService.d.ts +23 -0
- package/service/CategoryAvailabilityService.d.ts.map +1 -0
- package/service/CategoryAvailabilityService.js +103 -0
- package/service/CategoryAvailabilityService.js.map +1 -0
- package/service/DeliveryService.d.ts +4 -0
- package/service/DeliveryService.d.ts.map +1 -0
- package/service/DeliveryService.js +30 -0
- package/service/DeliveryService.js.map +1 -0
- package/service/HelperService.d.ts +2 -0
- package/service/HelperService.d.ts.map +1 -0
- package/service/HelperService.js +14 -0
- package/service/HelperService.js.map +1 -0
- package/README.md +0 -1
- package/coverage/clover.xml +0 -71
- package/coverage/coverage-final.json +0 -3
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/classes/Cart.ts.html +0 -340
- package/coverage/lcov-report/classes/index.html +0 -116
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -131
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/service/CartService.ts.html +0 -238
- package/coverage/lcov-report/service/index.html +0 -116
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -129
- package/jest.config.js +0 -8
- package/src/classes/Cart.ts +0 -563
- package/src/index.ts +0 -3
- package/src/service/CartService.ts +0 -139
- package/src/service/CategoryAvailabilityService.ts +0 -121
- package/src/service/DeliveryService.ts +0 -17
- package/src/service/HelperService.ts +0 -9
- package/src/test/availability.test.ts +0 -346
- package/src/test/class.test.ts +0 -497
- package/src/test/data/CartData.json +0 -244
- package/src/test/data/menu.json +0 -5875
- package/src/test/data/merchant.json +0 -186
- package/tsconfig.json +0 -24
package/src/test/class.test.ts
DELETED
|
@@ -1,497 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import {beforeAll, describe, expect, test} from '@jest/globals';
|
|
3
|
-
import {Cart} from "../classes/Cart";
|
|
4
|
-
import {ICart, ICartModifier, ICartModifierGroup, IClientConfig, OrderModesEnum} from "@delicity/client-types";
|
|
5
|
-
import axios from "axios";
|
|
6
|
-
import {DateTime} from "luxon";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const instance = axios.create({
|
|
10
|
-
baseURL: 'http://localhost:3333',
|
|
11
|
-
timeout: 15000
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
let merchant:any = null;
|
|
15
|
-
let menu:any = null;
|
|
16
|
-
|
|
17
|
-
let config:IClientConfig = {
|
|
18
|
-
apiUrl: 'http://localhost:3333',
|
|
19
|
-
axiosClient: instance
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
describe('Cart class', () => {
|
|
24
|
-
|
|
25
|
-
beforeAll(async () => {
|
|
26
|
-
merchant = await import('./data/merchant.json');
|
|
27
|
-
menu = await import('./data/menu.json');
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
test('Add to cart mandatory check', () => {
|
|
32
|
-
const cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
33
|
-
|
|
34
|
-
const item = menu.items[0];
|
|
35
|
-
expect(() => cart.addToCart(item, [], 1)).toThrowError('mandatory_field_missing');
|
|
36
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
37
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
38
|
-
const modifierGroup: ICartModifierGroup = {
|
|
39
|
-
item: modifierGroups[0],
|
|
40
|
-
modifiers: [
|
|
41
|
-
{
|
|
42
|
-
item: modifiers[0],
|
|
43
|
-
quantity: 1,
|
|
44
|
-
price: 0
|
|
45
|
-
} as ICartModifier
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
cart.addToCart(item, [modifierGroup], 1);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
test('Add to cart available check', () => {
|
|
53
|
-
const cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
54
|
-
const item = menu.items[0];
|
|
55
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
56
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
57
|
-
const modifierGroup: ICartModifierGroup = {
|
|
58
|
-
item: modifierGroups[0],
|
|
59
|
-
modifiers: [
|
|
60
|
-
{
|
|
61
|
-
item: modifiers[0],
|
|
62
|
-
quantity: 1,
|
|
63
|
-
price: 0
|
|
64
|
-
} as ICartModifier
|
|
65
|
-
]
|
|
66
|
-
}
|
|
67
|
-
expect(() => cart.addToCart(item, [modifierGroup], 1)).not.toThrowError('item_not_available');
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
test('Add to cart not available check', () => {
|
|
72
|
-
const updatedMenu = JSON.parse(JSON.stringify(menu));
|
|
73
|
-
// @ts-ignore
|
|
74
|
-
updatedMenu.items = updatedMenu.items.map(i => {
|
|
75
|
-
i.unavailable = true
|
|
76
|
-
return i;
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
const cart = new Cart(config, merchant, updatedMenu, OrderModesEnum.DELIVERY, null);
|
|
80
|
-
|
|
81
|
-
const item = menu.items[0];
|
|
82
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
83
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
84
|
-
const modifierGroup: ICartModifierGroup = {
|
|
85
|
-
item: modifierGroups[0],
|
|
86
|
-
modifiers: [
|
|
87
|
-
{
|
|
88
|
-
item: modifiers[0],
|
|
89
|
-
quantity: 1,
|
|
90
|
-
price: 0
|
|
91
|
-
} as ICartModifier
|
|
92
|
-
]
|
|
93
|
-
}
|
|
94
|
-
expect(() => cart.addToCart(item, [modifierGroup], 1)).toThrowError('item_not_available');
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
test('Check cart quantities & prices', () => {
|
|
99
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
100
|
-
const item = menu.items[0];
|
|
101
|
-
item.unavailable = false;
|
|
102
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
103
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
104
|
-
const modifierGroup: ICartModifierGroup = {
|
|
105
|
-
item: modifierGroups[0],
|
|
106
|
-
modifiers: [
|
|
107
|
-
{
|
|
108
|
-
item: modifiers[0],
|
|
109
|
-
quantity: 1,
|
|
110
|
-
price: 0
|
|
111
|
-
} as ICartModifier
|
|
112
|
-
]
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
expect(cart.getItems().length).toBe(0);
|
|
116
|
-
expect(cart.getTotalItems()).toBe(0);
|
|
117
|
-
expect(cart.getTotalItemPrice()).toBe(0);
|
|
118
|
-
|
|
119
|
-
cart = cart.addToCart(item, [modifierGroup], 2);
|
|
120
|
-
expect(cart.getItems().length).toBe(1);
|
|
121
|
-
expect(cart.getTotalItems()).toBe(2);
|
|
122
|
-
expect(cart.getTotalItemPrice()).toBe(655*2);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
test('Check cart remove', () => {
|
|
128
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
129
|
-
|
|
130
|
-
const item = menu.items[0];
|
|
131
|
-
item.unavailable = false;
|
|
132
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
133
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
134
|
-
const modifierGroup: ICartModifierGroup = {
|
|
135
|
-
item: modifierGroups[0],
|
|
136
|
-
modifiers: [
|
|
137
|
-
{
|
|
138
|
-
item: modifiers[0],
|
|
139
|
-
quantity: 1,
|
|
140
|
-
price: 0
|
|
141
|
-
} as ICartModifier
|
|
142
|
-
]
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
cart = cart.addToCart(item, [modifierGroup], 2);
|
|
146
|
-
expect(cart.getItems().length).toBe(1);
|
|
147
|
-
expect(cart.getTotalItems()).toBe(2);
|
|
148
|
-
expect(cart.getTotalItemPrice()).toBe(655*2);
|
|
149
|
-
|
|
150
|
-
cart = cart.removeFromCart(cart.getItems()[0]);
|
|
151
|
-
expect(cart.getItems().length).toBe(0);
|
|
152
|
-
expect(cart.getTotalItems()).toBe(0);
|
|
153
|
-
expect(cart.getTotalItemPrice()).toBe(0);
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
test('Check Wallet payment method', async () => {
|
|
157
|
-
let cart: Cart = new Cart(config, merchant, menu, OrderModesEnum.PICKUP, null);
|
|
158
|
-
|
|
159
|
-
const item = menu.items[0];
|
|
160
|
-
item.unavailable = false;
|
|
161
|
-
const modifierGroups = menu.modifierGroups.filter((m: any) => item.children.includes(m.uid));
|
|
162
|
-
const modifiers = menu.modifiers.filter((m: any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
163
|
-
const modifierGroup: ICartModifierGroup = {
|
|
164
|
-
item: modifierGroups[0],
|
|
165
|
-
modifiers: [
|
|
166
|
-
{
|
|
167
|
-
item: modifiers[0],
|
|
168
|
-
quantity: 1,
|
|
169
|
-
price: 0
|
|
170
|
-
} as ICartModifier
|
|
171
|
-
]
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
cart = cart.addToCart(item, [modifierGroup], 2);
|
|
175
|
-
//cart = await cart.synchronize();
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
expect(cart.getItems().length).toBe(1);
|
|
179
|
-
expect(cart.getTotalItems()).toBe(2);
|
|
180
|
-
expect(cart.getTotalItemPrice()).toBe(655*2);
|
|
181
|
-
|
|
182
|
-
expect(cart.getPaymentMethods()).toHaveLength(0);
|
|
183
|
-
expect(cart.paymentMethodWallet('apple_pay'));
|
|
184
|
-
expect(cart.getPaymentMethods()).toHaveLength(1);
|
|
185
|
-
expect(cart.getPaymentMethodTotalAmount()).toEqual(cart.getTotalPrice());
|
|
186
|
-
|
|
187
|
-
cart = cart.addToCart(item, [modifierGroup], 2);
|
|
188
|
-
expect(cart.getTotalItems()).toBe(4);
|
|
189
|
-
expect(cart.paymentMethodWallet('google_pay'));
|
|
190
|
-
expect(cart.getPaymentMethods()).toHaveLength(1);
|
|
191
|
-
expect(cart.getPaymentMethodTotalAmount()).toEqual(cart.getTotalPrice());
|
|
192
|
-
|
|
193
|
-
cart = cart.updateCart(cart.getItems()[0], [modifierGroup], 10);
|
|
194
|
-
expect(cart.getTotalItems()).toBe(10);
|
|
195
|
-
expect(cart.paymentMethodWallet('apple_pay'));
|
|
196
|
-
expect(cart.getPaymentMethodTotalAmount()).toEqual(cart.getTotalPrice());
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
test('Check Payment method', async () => {
|
|
200
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.PICKUP, null);
|
|
201
|
-
|
|
202
|
-
const item = menu.items[0];
|
|
203
|
-
item.unavailable = false;
|
|
204
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
205
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
206
|
-
const modifierGroup: ICartModifierGroup = {
|
|
207
|
-
item: modifierGroups[0],
|
|
208
|
-
modifiers: [
|
|
209
|
-
{
|
|
210
|
-
item: modifiers[0],
|
|
211
|
-
quantity: 1,
|
|
212
|
-
price: 0
|
|
213
|
-
} as ICartModifier
|
|
214
|
-
]
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
cart = cart.addToCart(item, [modifierGroup], 2);
|
|
218
|
-
// cart = await cart.synchronize();
|
|
219
|
-
|
|
220
|
-
expect(cart.getItems().length).toBe(1);
|
|
221
|
-
expect(cart.getTotalItems()).toBe(2);
|
|
222
|
-
expect(cart.getTotalItemPrice()).toBe(655*2);
|
|
223
|
-
|
|
224
|
-
expect(cart.getPaymentMethods()).toHaveLength(0);
|
|
225
|
-
|
|
226
|
-
cart.paymentMethodCard('card_token', 'xxxxx', 'visa', 'last4', 'expiration');
|
|
227
|
-
expect(cart.getPaymentMethodTotalAmount()).toEqual(cart.getTotalPrice());
|
|
228
|
-
expect(cart.getPaymentMethods()).toHaveLength(1);
|
|
229
|
-
|
|
230
|
-
cart.paymentMethodCard('payment_method_id', 'xxxxx', 'visa', 'last4', 'expiration');
|
|
231
|
-
expect(cart.getPaymentMethodTotalAmount()).toEqual(cart.getTotalPrice());
|
|
232
|
-
expect(cart.getPaymentMethods()).toHaveLength(1);
|
|
233
|
-
|
|
234
|
-
cart.paymentMethodCard('payment_method_id', 'xxxxx', 'visa', 'last4', 'expiration', cart.getTotalPrice()/2);
|
|
235
|
-
cart.paymentMethodCard('card_token', 'xxxxx', 'visa', 'last4', 'expiration', cart.getTotalPrice()/2);
|
|
236
|
-
expect(cart.getPaymentMethods()).toHaveLength(2);
|
|
237
|
-
|
|
238
|
-
cart.paymentMethodCard('payment_method_id', 'xxxxx', 'visa', 'last4', 'expiration', cart.getTotalPrice()/2);
|
|
239
|
-
expect(cart.getPaymentMethods()).toHaveLength(1);
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
cart.paymentMethodCard('payment_method_id', 'xxxxx', 'visa', 'last4', 'expiration', cart.getTotalPrice());
|
|
243
|
-
expect(cart.getPaymentMethods()).toHaveLength(1);
|
|
244
|
-
|
|
245
|
-
cart = cart.addToCart(item, [modifierGroup], 4);
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
expect(cart.getPaymentMethods()).toHaveLength(1);
|
|
249
|
-
expect(cart.getPaymentMethodTotalAmount()).toEqual(cart.getTotalPrice());
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
test('Add same product twice', () => {
|
|
256
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
257
|
-
|
|
258
|
-
const item = menu.items[0];
|
|
259
|
-
item.unavailable = false;
|
|
260
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
261
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
262
|
-
|
|
263
|
-
const modifierGroup1: ICartModifierGroup = {
|
|
264
|
-
item: modifierGroups[0],
|
|
265
|
-
modifiers: [
|
|
266
|
-
{
|
|
267
|
-
item: modifiers[0],
|
|
268
|
-
quantity: 1,
|
|
269
|
-
price: 0
|
|
270
|
-
} as ICartModifier
|
|
271
|
-
]
|
|
272
|
-
}
|
|
273
|
-
const modifierGroup2: ICartModifierGroup = {
|
|
274
|
-
item: modifierGroups[0],
|
|
275
|
-
modifiers: [
|
|
276
|
-
{
|
|
277
|
-
item: modifiers[1],
|
|
278
|
-
quantity: 1,
|
|
279
|
-
price: 0
|
|
280
|
-
} as ICartModifier
|
|
281
|
-
]
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
expect(cart.getItems().length).toBe(0);
|
|
285
|
-
|
|
286
|
-
cart = cart.addToCart(item, [modifierGroup1], 1);
|
|
287
|
-
expect(cart.getItems().length).toBe(1);
|
|
288
|
-
expect(cart.getTotalItems()).toBe(1);
|
|
289
|
-
|
|
290
|
-
cart = cart.addToCart(item, [modifierGroup2], 2);
|
|
291
|
-
expect(cart.getItems().length).toBe(2);
|
|
292
|
-
expect(cart.getTotalItems()).toBe(3);
|
|
293
|
-
|
|
294
|
-
cart = cart.addToCart(item, [modifierGroup1], 2);
|
|
295
|
-
expect(cart.getItems().length).toBe(2);
|
|
296
|
-
expect(cart.getTotalItems()).toBe(5);
|
|
297
|
-
|
|
298
|
-
cart = cart.addToCart(item, [modifierGroup1], 1, "Avec un commentaire !");
|
|
299
|
-
expect(cart.getItems().length).toBe(3);
|
|
300
|
-
expect(cart.getTotalItems()).toBe(6);
|
|
301
|
-
|
|
302
|
-
cart = cart.addToCart(item, [modifierGroup1], 1, "Avec un commentaire !");
|
|
303
|
-
expect(cart.getItems().length).toBe(3);
|
|
304
|
-
expect(cart.getTotalItems()).toBe(7);
|
|
305
|
-
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
test('Get delivery infos', async () => {
|
|
312
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
313
|
-
|
|
314
|
-
await cart.setAddress({
|
|
315
|
-
"uuid": "be665722-ab07-42b3-9d31-457635773b78",
|
|
316
|
-
"addressName": null,
|
|
317
|
-
"addressShort": "20 Rue de France",
|
|
318
|
-
"address": "20 Rue de France",
|
|
319
|
-
"city": "Nice",
|
|
320
|
-
"zip": "06000",
|
|
321
|
-
"additional_informations": null,
|
|
322
|
-
"countryCode": "FR",
|
|
323
|
-
"precise": true,
|
|
324
|
-
"position": {
|
|
325
|
-
"type": "Point",
|
|
326
|
-
"coordinates": [
|
|
327
|
-
7.2627684,
|
|
328
|
-
43.6964599
|
|
329
|
-
]
|
|
330
|
-
}
|
|
331
|
-
})
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
expect(cart.getDeliveryInfos()).not.toBeUndefined();
|
|
337
|
-
expect(cart.getDeliveryInfos()?.price).toBeGreaterThan(0);
|
|
338
|
-
expect(cart.getDeliveryInfos()?.distance).toBeGreaterThan(0);
|
|
339
|
-
expect(cart.getDeliveryInfos()?.duration).toBeGreaterThan(0);
|
|
340
|
-
});
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
test('Cart reload data', async () => {
|
|
344
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
345
|
-
|
|
346
|
-
// @ts-ignore
|
|
347
|
-
const data: ICart = (await import('./data/CartData.json')).default;
|
|
348
|
-
cart.setCart(data);
|
|
349
|
-
expect(cart.getItems().length).toBe(3);
|
|
350
|
-
expect(cart.getTotalItems()).toBe(7);
|
|
351
|
-
expect(data.items[0].item.name).toBe('Iced Caramel Macchiato');
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
test('Validate Cart integrity: Update Cart items when load', async () => {
|
|
356
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
357
|
-
// @ts-ignore
|
|
358
|
-
const data: ICart = JSON.parse(JSON.stringify((await import('./data/CartData.json')).default));
|
|
359
|
-
data.items[0].item.name = 'TestName';
|
|
360
|
-
cart.setCart(data);
|
|
361
|
-
expect(cart.getItems()[0].item.name).toBe('Iced Caramel Macchiato');
|
|
362
|
-
});
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
test('Validate Cart integrity: Remove unavailable Cart items when load', async () => {
|
|
366
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
367
|
-
|
|
368
|
-
// @ts-ignore
|
|
369
|
-
const data: ICart = JSON.parse(JSON.stringify((await import('./data/CartData.json')).default));
|
|
370
|
-
data.items[0].item.id = 9999;
|
|
371
|
-
console.log(data.items.map(i => i.item.id));
|
|
372
|
-
|
|
373
|
-
cart.setCart(data);
|
|
374
|
-
expect(cart.getItems().length).toBe(2);
|
|
375
|
-
expect(cart.getTotalItems()).toBe(4);
|
|
376
|
-
});
|
|
377
|
-
|
|
378
|
-
test('Validate Cart integrity: Remove not existing Cart items when load', async () => {
|
|
379
|
-
const updatedMenu = JSON.parse(JSON.stringify(menu));
|
|
380
|
-
// @ts-ignore
|
|
381
|
-
updatedMenu.items = updatedMenu.items.map(i => {
|
|
382
|
-
i.unavailable = true
|
|
383
|
-
return i;
|
|
384
|
-
});
|
|
385
|
-
let cart:Cart = new Cart(config, merchant, updatedMenu, OrderModesEnum.DELIVERY, null);
|
|
386
|
-
|
|
387
|
-
// @ts-ignore
|
|
388
|
-
const data: ICart = JSON.parse(JSON.stringify((await import('./data/CartData.json')).default));
|
|
389
|
-
cart.setCart(data);
|
|
390
|
-
expect(cart.getItems().length).toBe(0);
|
|
391
|
-
expect(cart.getTotalItems()).toBe(0);
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
test('Validate Cart integrity: Remove from cart element with not good date', async () => {
|
|
395
|
-
const updatedMenu = JSON.parse(JSON.stringify(menu));
|
|
396
|
-
const categoryId = updatedMenu.categories.findIndex(c => c.id === 16);
|
|
397
|
-
updatedMenu.categories[categoryId].availability = {
|
|
398
|
-
type: "one_date",
|
|
399
|
-
slots: [{id: 0, day: 3, start: "00:00", end: "23:59"}],
|
|
400
|
-
startDate: "2024-02-14",
|
|
401
|
-
endDate: "2024-02-14",
|
|
402
|
-
weekNumber: 7,
|
|
403
|
-
weekYear: 2024
|
|
404
|
-
}
|
|
405
|
-
let cart:Cart = new Cart(config, merchant, updatedMenu, OrderModesEnum.DELIVERY, DateTime.fromFormat('2024-01-01', 'yyyy-LL-dd').toISO());
|
|
406
|
-
|
|
407
|
-
// @ts-ignore
|
|
408
|
-
const data: ICart = JSON.parse(JSON.stringify((await import('./data/CartData.json')).default));
|
|
409
|
-
cart.setCart(data);
|
|
410
|
-
expect(cart.getItems().length).toBe(0);
|
|
411
|
-
expect(cart.getTotalItems()).toBe(0);
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
test('Validate Cart integrity: NOT Remove from cart element with good date', async () => {
|
|
415
|
-
const updatedMenu = JSON.parse(JSON.stringify(menu));
|
|
416
|
-
const categoryId = updatedMenu.categories.findIndex(c => c.id === 16);
|
|
417
|
-
updatedMenu.categories[categoryId].availability = {
|
|
418
|
-
type: "one_date",
|
|
419
|
-
slots: [{id: 0, day: 3, start: "00:00", end: "23:59"}],
|
|
420
|
-
startDate: "2024-02-14",
|
|
421
|
-
endDate: "2024-02-14",
|
|
422
|
-
weekNumber: 7,
|
|
423
|
-
weekYear: 2024
|
|
424
|
-
}
|
|
425
|
-
let cart:Cart = new Cart(config, merchant, updatedMenu, OrderModesEnum.DELIVERY, null);
|
|
426
|
-
// @ts-ignore
|
|
427
|
-
const data: ICart = JSON.parse(JSON.stringify((await import('./data/CartData.json')).default));
|
|
428
|
-
data.when = DateTime.fromFormat('2024-02-14 12:00', 'yyyy-LL-dd HH:mm').toISO();
|
|
429
|
-
cart.setCart(data);
|
|
430
|
-
expect(cart.getItems().length).toBe(3);
|
|
431
|
-
expect(cart.getTotalItems()).toBe(7);
|
|
432
|
-
});
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
test('Syncronize with db', async () => {
|
|
436
|
-
let cart:Cart = new Cart(config, merchant, menu, OrderModesEnum.DELIVERY, null);
|
|
437
|
-
|
|
438
|
-
//await expect(() => cart.synchronize()).rejects.toThrowError('no_delivery_address')
|
|
439
|
-
|
|
440
|
-
await cart.setAddress({
|
|
441
|
-
"uuid": "61df52c4-064b-4387-b184-16b7914a332e",
|
|
442
|
-
"addressName": null,
|
|
443
|
-
"addressShort": "20 Rue de France",
|
|
444
|
-
"address": "20 Rue de France",
|
|
445
|
-
"city": "Nice",
|
|
446
|
-
"zip": "06000",
|
|
447
|
-
"additional_informations": null,
|
|
448
|
-
"countryCode": "FR",
|
|
449
|
-
"precise": true,
|
|
450
|
-
"position": {
|
|
451
|
-
"type": "Point",
|
|
452
|
-
"coordinates": [
|
|
453
|
-
7.2627684,
|
|
454
|
-
43.6964599
|
|
455
|
-
]
|
|
456
|
-
}
|
|
457
|
-
})
|
|
458
|
-
|
|
459
|
-
expect(cart.getDeliveryInfos()).not.toBeUndefined();
|
|
460
|
-
|
|
461
|
-
const item = menu.items[0];
|
|
462
|
-
item.unavailable = false;
|
|
463
|
-
const modifierGroups = menu.modifierGroups.filter((m:any) => item.children.includes(m.uid));
|
|
464
|
-
const modifiers = menu.modifiers.filter((m:any) => modifierGroups[0].itemIds.includes(m.uid));
|
|
465
|
-
|
|
466
|
-
const modifierGroup1: ICartModifierGroup = {
|
|
467
|
-
item: modifierGroups[0],
|
|
468
|
-
modifiers: [
|
|
469
|
-
{
|
|
470
|
-
item: modifiers[0],
|
|
471
|
-
quantity: 1,
|
|
472
|
-
price: 0
|
|
473
|
-
},
|
|
474
|
-
{
|
|
475
|
-
item: modifiers[1],
|
|
476
|
-
quantity: 1,
|
|
477
|
-
price: 0
|
|
478
|
-
}
|
|
479
|
-
] as ICartModifier[]
|
|
480
|
-
}
|
|
481
|
-
cart = cart.addToCart(item, [modifierGroup1], 1);
|
|
482
|
-
expect(cart.getItems().length).toBe(1);
|
|
483
|
-
expect(cart.getTotalItems()).toBe(1);
|
|
484
|
-
// await cart.synchronize();
|
|
485
|
-
// expect(cart.getCart().prices).toBeDefined()
|
|
486
|
-
expect(cart.getPreparationDurationBetween()).toBeDefined()
|
|
487
|
-
expect(cart.getDiscounts()).toHaveLength(0);
|
|
488
|
-
await cart.addDiscountCoupon('PRODUIT10');
|
|
489
|
-
expect(cart.getDiscounts()).toHaveLength(1);
|
|
490
|
-
await cart.removeDiscount(cart.getDiscounts()[0].id);
|
|
491
|
-
expect(cart.getDiscounts()).toHaveLength(0);
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
});
|
|
495
|
-
|
|
496
|
-
});
|
|
497
|
-
|