@darkpos/pricing 1.0.41 → 1.0.44

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.
Files changed (51) hide show
  1. package/__TEST__/item/getItemsModifierDescription.test.js +148 -0
  2. package/__TEST__/mocks/addItemMock.js +18729 -19357
  3. package/__TEST__/mocks/partially-paid/order-modifiers.json +48 -51
  4. package/__TEST__/mocks/partially-paid/order-partially-paid.json +893 -860
  5. package/__TEST__/mocks/unpaid/order-modifiers.json +48 -52
  6. package/__TEST__/modifier/calculate.test.js +1 -0
  7. package/__TEST__/modifier/getGroupedModifierLabels.test.js +95 -0
  8. package/__TEST__/modifier/getGroupedModifiers.test.js +65 -0
  9. package/__TEST__/modifier/getMatchTagsModifiers.test.js +72 -18
  10. package/__TEST__/modifier/getModifierIndex.test.js +10 -7
  11. package/__TEST__/modifier/getNotesToModifierTags.test.js +78 -0
  12. package/__TEST__/modifier/getRecommendedModifiers.test.js +6 -4
  13. package/__TEST__/modifier/hasAttribute.test.js +11 -5
  14. package/__TEST__/modifier/hasMatchTags.test.js +33 -11
  15. package/__TEST__/modifier/isOptionsOverride.test.js +46 -0
  16. package/__TEST__/modifier/sort.test.js +1 -1
  17. package/__TEST__/order/conditionsNotMet.test.js +133 -0
  18. package/__TEST__/order/order.test.js +7 -5
  19. package/__TEST__/order/pickEndDate.test.js +4 -4
  20. package/__TEST__/order/validateConditionsCalculate.test.js +397 -0
  21. package/lib/constants/index.js +1 -1
  22. package/lib/index.js +11 -2
  23. package/lib/item/calculate.js +27 -10
  24. package/lib/item/getItemModifiersDescription.js +40 -7
  25. package/lib/item/markModifiersAsLocked.js +3 -1
  26. package/lib/modifier/areConditionsMet.js +71 -0
  27. package/lib/modifier/getGroupedModifierLabels.js +10 -0
  28. package/lib/modifier/getGroupedModifiers.js +21 -0
  29. package/lib/modifier/getNotesToModifierTags.js +21 -0
  30. package/lib/modifier/index.js +22 -5
  31. package/lib/modifier/isOptionsOverride.js +9 -0
  32. package/lib/modifier/isPaymentMethodModifier.js +1 -1
  33. package/lib/modifier/isPaymentTypeModifier.js +1 -1
  34. package/lib/modifier/isValid.js +12 -0
  35. package/lib/modifier/validate.js +14 -0
  36. package/lib/modifier/validateDateDaysDiff.js +30 -0
  37. package/lib/modifier/validateInArr.js +12 -0
  38. package/lib/modifier/validateNumberCondition.js +20 -0
  39. package/lib/modifier/validateRequiredModifiers.js +16 -0
  40. package/lib/order/addItemModifier.js +72 -28
  41. package/lib/order/calculate.js +12 -7
  42. package/lib/order/index.js +0 -2
  43. package/lib/order/removeModifiersWithPaymentMethods.js +1 -2
  44. package/lib/order/removeModifiersWithPaymentTypes.js +1 -2
  45. package/lib/store/getRecommendedEndDate.js +13 -0
  46. package/lib/store/index.js +25 -0
  47. package/lib/store/pickEndDate.js +62 -0
  48. package/package.json +3 -3
  49. package/lib/modifier/findByPaymentMethod.js +0 -10
  50. package/lib/modifier/findByPaymentType.js +0 -10
  51. package/lib/order/pickEndDate.js +0 -65
@@ -0,0 +1,148 @@
1
+ const _ = require('lodash');
2
+ const getItemModifiersDescriptionFunction = require('../../lib/item/getItemModifiersDescription');
3
+
4
+ describe('getItemModifiersDescription Function', () => {
5
+ const modifierActions = {
6
+ isHidden: jest.fn(),
7
+ isAmountOverride: jest.fn(),
8
+ isDepartment: jest.fn(),
9
+ isDirect: jest.fn(),
10
+ isGroupOfValues: jest.fn(),
11
+ getSelectedValues: jest.fn(),
12
+ getGroupedModifiers: jest.fn(),
13
+ getNotesToModifierTags: jest.fn(),
14
+ isValid: jest.fn(),
15
+ };
16
+
17
+ const settings = {
18
+ order: {
19
+ groupModifiers: false,
20
+ },
21
+ };
22
+
23
+ const getItemModifiersDescription = getItemModifiersDescriptionFunction({
24
+ modifierActions,
25
+ _,
26
+ settings,
27
+ });
28
+
29
+ beforeEach(() => {
30
+ jest.clearAllMocks();
31
+ });
32
+
33
+ test('should return an empty array if item or modifiers are not provided', () => {
34
+ const result = getItemModifiersDescription(null);
35
+ expect(result).toEqual([]);
36
+ });
37
+
38
+ test('should filter and map modifiers correctly', () => {
39
+ const item = {
40
+ modifiers: [
41
+ {
42
+ _id: 'mod1',
43
+ name: 'Modifier 1',
44
+ _computed: { description: 'Desc 1' },
45
+ },
46
+ { _id: 'mod2', name: 'Modifier 2' },
47
+ ],
48
+ };
49
+
50
+ modifierActions.isHidden
51
+ .mockReturnValueOnce(false)
52
+ .mockReturnValueOnce(false);
53
+ modifierActions.isAmountOverride
54
+ .mockReturnValueOnce(false)
55
+ .mockReturnValueOnce(false);
56
+ modifierActions.isDepartment
57
+ .mockReturnValueOnce(false)
58
+ .mockReturnValueOnce(false);
59
+ modifierActions.isDirect
60
+ .mockReturnValueOnce(true)
61
+ .mockReturnValueOnce(true);
62
+ modifierActions.isGroupOfValues
63
+ .mockReturnValueOnce(false)
64
+ .mockReturnValueOnce(false);
65
+ modifierActions.isValid
66
+ .mockReturnValueOnce(false)
67
+ .mockReturnValueOnce(false);
68
+ modifierActions.getNotesToModifierTags.mockReturnValueOnce([
69
+ { label: 'Desc 1', value: 'mod1' },
70
+ ]);
71
+
72
+ const result = getItemModifiersDescription(item);
73
+
74
+ expect(result).toEqual([{ label: 'Desc 1', value: 'mod1' }]);
75
+
76
+ expect(modifierActions.isHidden).toHaveBeenCalledTimes(2);
77
+ expect(modifierActions.isValid).toHaveBeenCalledTimes(2);
78
+ expect(modifierActions.isAmountOverride).toHaveBeenCalledTimes(0);
79
+ expect(modifierActions.isDepartment).toHaveBeenCalledTimes(0);
80
+ expect(modifierActions.isDirect).toHaveBeenCalledTimes(0);
81
+ });
82
+
83
+ test('should handle selected override options in the modifier', () => {
84
+ const item = {
85
+ modifiers: [
86
+ {
87
+ _id: 'mod1',
88
+ name: 'Modifier 1',
89
+ compute: { amount: 100 },
90
+ properties: { override: { selected: { selectedUnit: 'kg' } } },
91
+ },
92
+ ],
93
+ };
94
+
95
+ modifierActions.isHidden.mockReturnValueOnce(false);
96
+ modifierActions.isValid.mockReturnValueOnce(false);
97
+ modifierActions.isAmountOverride.mockReturnValueOnce(false);
98
+ modifierActions.isDepartment.mockReturnValueOnce(false);
99
+ modifierActions.isDirect.mockReturnValueOnce(true);
100
+ modifierActions.getNotesToModifierTags.mockReturnValueOnce([
101
+ {
102
+ label: 'Modifier 1 100 kg',
103
+ value: 'mod1',
104
+ data: item.modifiers[0],
105
+ quantity: 0,
106
+ },
107
+ ]);
108
+ const result = getItemModifiersDescription(item);
109
+
110
+ expect(result).toEqual([
111
+ {
112
+ label: 'Modifier 1 100 kg',
113
+ value: 'mod1',
114
+ data: item.modifiers[0],
115
+ quantity: 0,
116
+ },
117
+ ]);
118
+ });
119
+
120
+ test('should group modifiers when groupModifiers setting is true', () => {
121
+ const item = {
122
+ modifiers: [
123
+ {
124
+ _id: 'mod1',
125
+ name: 'Modifier 1',
126
+ _computed: { description: 'Desc 1' },
127
+ },
128
+ ],
129
+ };
130
+
131
+ settings.order.groupModifiers = true;
132
+ modifierActions.isHidden.mockReturnValueOnce(false);
133
+ modifierActions.isValid.mockReturnValueOnce(false);
134
+ modifierActions.isAmountOverride.mockReturnValueOnce(false);
135
+ modifierActions.isDepartment.mockReturnValueOnce(false);
136
+ modifierActions.isDirect.mockReturnValueOnce(true);
137
+ modifierActions.getGroupedModifiers.mockReturnValueOnce([
138
+ { label: 'Grouped Modifier', value: 'mod1' },
139
+ ]);
140
+ modifierActions.getNotesToModifierTags.mockReturnValueOnce([
141
+ { label: 'Grouped Modifier', value: 'mod1' },
142
+ ]);
143
+
144
+ const result = getItemModifiersDescription(item);
145
+
146
+ expect(result).toEqual([{ label: 'Grouped Modifier', value: 'mod1' }]);
147
+ });
148
+ });