@darkpos/pricing 1.0.4 → 1.0.7

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 (251) hide show
  1. package/.eslintrc +8 -10
  2. package/README.md +108 -4
  3. package/__TEST__/item.test.js +265 -34
  4. package/__TEST__/modifier/calculate.test.js +73 -0
  5. package/__TEST__/modifier/getAvailablePromotionsOrSubscriptions.test.js +81 -0
  6. package/__TEST__/modifier/getMatchTagsModifiers.test.js +109 -0
  7. package/__TEST__/modifier/getModifierIndex.test.js +40 -0
  8. package/__TEST__/modifier/getRecommendedModifiers.test.js +17 -0
  9. package/__TEST__/modifier/hasAllTags.test.js +25 -0
  10. package/__TEST__/modifier/hasAttribute.test.js +47 -0
  11. package/__TEST__/modifier/hasMatchTags.test.js +56 -0
  12. package/__TEST__/modifier/hasNoTags.test.js +21 -0
  13. package/__TEST__/modifier/mocks/toggleModifier_no1.json +13440 -0
  14. package/__TEST__/modifier/mocks/toggleModifier_no2.json +13438 -0
  15. package/__TEST__/modifier/mocks/toggleModifier_no3.json +13598 -0
  16. package/__TEST__/modifier/sort.test.js +41 -0
  17. package/__TEST__/order.test.js +147 -74
  18. package/index.js +1 -9
  19. package/lib/constants/Modifier/Attributes.js +9 -0
  20. package/lib/constants/Modifier/Compute.js +15 -0
  21. package/lib/constants/Modifier/Types.js +7 -0
  22. package/lib/constants/Modifier/index.js +9 -0
  23. package/lib/constants/Status.js +39 -0
  24. package/lib/constants/index.js +7 -0
  25. package/lib/index.js +38 -0
  26. package/lib/item/addIndirectModifier.js +55 -0
  27. package/lib/item/calculate.js +108 -0
  28. package/lib/item/create.js +35 -0
  29. package/lib/item/filterByDirectModifiers.js +13 -0
  30. package/lib/item/findOriginalItem.js +8 -0
  31. package/lib/item/getBalanceToPay.js +12 -0
  32. package/lib/item/getDepartmentModifiers.js +5 -0
  33. package/lib/item/getDiscountModifiers.js +7 -0
  34. package/lib/item/getItemModifiers.js +16 -0
  35. package/lib/item/getItemModifiersDescription.js +22 -0
  36. package/lib/item/getItemPrice.js +57 -0
  37. package/lib/item/getItemsTotalPaid.js +9 -0
  38. package/lib/item/getItemsTotalPieces.js +7 -0
  39. package/lib/item/getNotIncludedModifiers.js +11 -0
  40. package/lib/item/getParentItem.js +5 -0
  41. package/lib/item/getPendingIndex.js +5 -0
  42. package/lib/item/getTotal.js +8 -0
  43. package/lib/item/getTotalPieces.js +7 -0
  44. package/lib/item/getTotals.js +25 -0
  45. package/lib/item/hasCreateSubscription.js +7 -0
  46. package/lib/item/hasModifier.js +15 -0
  47. package/lib/item/hasModifierWithValue.js +11 -0
  48. package/lib/item/hasModifiers.js +9 -0
  49. package/lib/item/hasSubscription.js +5 -0
  50. package/lib/item/index.js +80 -4
  51. package/lib/item/isParentIncluded.js +4 -0
  52. package/lib/item/isRelatedItem.js +4 -0
  53. package/lib/item/isSelected.js +13 -0
  54. package/lib/item/openRecommendationDialog.js +4 -0
  55. package/lib/item/removeModifier.js +84 -0
  56. package/lib/item/removeModifierById.js +8 -0
  57. package/lib/item/removeModifiers.js +14 -0
  58. package/lib/modifier/addFile.js +19 -0
  59. package/lib/modifier/addImage.js +18 -0
  60. package/lib/modifier/calculate.js +43 -0
  61. package/lib/modifier/contains.js +5 -0
  62. package/lib/modifier/convertMenuModifiers.js +5 -0
  63. package/lib/modifier/create.js +44 -0
  64. package/lib/modifier/createAmountOverrideModifier.js +20 -0
  65. package/lib/modifier/createCreditModifier.js +32 -0
  66. package/lib/modifier/createDiscountModifier.js +25 -0
  67. package/lib/modifier/createGroupValuesModifier.js +29 -0
  68. package/lib/modifier/createIndirectModifier.js +42 -0
  69. package/lib/modifier/createSubscriptionModifier.js +19 -0
  70. package/lib/modifier/displayAsCard.js +9 -0
  71. package/lib/modifier/displayAsChips.js +9 -0
  72. package/lib/modifier/displayAsList.js +9 -0
  73. package/lib/modifier/duplicate.js +12 -0
  74. package/lib/modifier/enableAutoPopup.js +9 -0
  75. package/lib/modifier/filterByRequiredModifiers.js +4 -0
  76. package/lib/modifier/findById.js +7 -0
  77. package/lib/modifier/findByPaymentMethod.js +10 -0
  78. package/lib/modifier/findByPaymentType.js +10 -0
  79. package/lib/modifier/getAvailablePromotions.js +5 -0
  80. package/lib/modifier/getAvailablePromotionsOrSubscriptions.js +15 -0
  81. package/lib/modifier/getAvailableSubscriptions.js +5 -0
  82. package/lib/modifier/getByAttribute.js +6 -0
  83. package/lib/modifier/getCreditModifier.js +6 -0
  84. package/lib/modifier/getDefaultModifiers.js +4 -0
  85. package/lib/modifier/getDepartmentMaxItems.js +10 -0
  86. package/lib/modifier/getDepartmentModifiers.js +11 -0
  87. package/lib/modifier/getDescription.js +6 -0
  88. package/lib/modifier/getDescriptions.js +9 -0
  89. package/lib/modifier/getDirectModifiers.js +5 -0
  90. package/lib/modifier/getDiscountModifiers.js +7 -0
  91. package/lib/modifier/getEntityModifiers.js +11 -0
  92. package/lib/modifier/getEntityPromotions.js +11 -0
  93. package/lib/modifier/getExtendedTags.js +14 -0
  94. package/lib/modifier/getFiles.js +5 -0
  95. package/lib/modifier/getGroupModifiers.js +9 -0
  96. package/lib/modifier/getGroupOfItemsModifiers.js +4 -0
  97. package/lib/modifier/getGroupRelatedModifiers.js +26 -0
  98. package/lib/modifier/getImages.js +5 -0
  99. package/lib/modifier/getInheritedModifiers.js +30 -0
  100. package/lib/modifier/getItemModifiers.js +39 -0
  101. package/lib/modifier/getLaundryModifiers.js +9 -0
  102. package/lib/modifier/getMatchTagsModifiers.js +9 -0
  103. package/lib/modifier/getModifierIndex.js +14 -0
  104. package/lib/modifier/getPreferences.js +24 -0
  105. package/lib/modifier/getPromotionModifiers.js +5 -0
  106. package/lib/modifier/getPromptMessage.js +6 -0
  107. package/lib/modifier/getProperty.js +11 -0
  108. package/lib/modifier/getRecommendedModifiers.js +7 -0
  109. package/lib/modifier/getRelatedModifiers.js +10 -0
  110. package/lib/modifier/getRequiredModifiers.js +4 -0
  111. package/lib/modifier/getSelectedValues.js +7 -0
  112. package/lib/modifier/getService.js +5 -0
  113. package/lib/modifier/getSplittedModifiers.js +30 -0
  114. package/lib/modifier/getStarchModifier.js +9 -0
  115. package/lib/modifier/getSubscriptionItem.js +12 -0
  116. package/lib/modifier/getSubscriptionModifiers.js +5 -0
  117. package/lib/modifier/getSuggestion.js +9 -0
  118. package/lib/modifier/getUnhiddenModifiers.js +9 -0
  119. package/lib/modifier/getUsingCount.js +11 -0
  120. package/lib/modifier/hasAddModifiers.js +5 -0
  121. package/lib/modifier/hasAllTag.js +12 -0
  122. package/lib/modifier/hasAttribute.js +8 -0
  123. package/lib/modifier/hasAttributes.js +19 -0
  124. package/lib/modifier/hasCreateSubscription.js +10 -0
  125. package/lib/modifier/hasDisplayPrompt.js +9 -0
  126. package/lib/modifier/hasMatchTags.js +27 -0
  127. package/lib/modifier/hasModifier.js +12 -0
  128. package/lib/modifier/hasNoTags.js +9 -0
  129. package/lib/modifier/hasRelatedItems.js +8 -0
  130. package/lib/modifier/includePiecesInQuantity.js +10 -0
  131. package/lib/modifier/includesInGroup.js +9 -0
  132. package/lib/modifier/index.js +240 -6
  133. package/lib/modifier/isAmountOverride.js +7 -0
  134. package/lib/modifier/isAvailablePromotion.js +23 -0
  135. package/lib/modifier/isAvailableSubscription.js +28 -0
  136. package/lib/modifier/isCompact.js +12 -0
  137. package/lib/modifier/isCredit.js +6 -0
  138. package/lib/modifier/isCustomerTagsExtend.js +9 -0
  139. package/lib/modifier/isDefault.js +4 -0
  140. package/lib/modifier/isDepartment.js +6 -0
  141. package/lib/modifier/isDirect.js +6 -0
  142. package/lib/modifier/isDiscount.js +6 -0
  143. package/lib/modifier/isEditable.js +10 -0
  144. package/lib/modifier/isGratuity.js +6 -0
  145. package/lib/modifier/isGroupOfItems.js +12 -0
  146. package/lib/modifier/isGroupOfModifiers.js +12 -0
  147. package/lib/modifier/isGroupOfValues.js +13 -0
  148. package/lib/modifier/isHidden.js +4 -0
  149. package/lib/modifier/isIncluded.js +4 -0
  150. package/lib/modifier/isManual.js +9 -0
  151. package/lib/modifier/isMultiplier.js +11 -0
  152. package/lib/modifier/isOverride.js +6 -0
  153. package/lib/modifier/isPaymentMethods.js +8 -0
  154. package/lib/modifier/isPaymentTypes.js +8 -0
  155. package/lib/modifier/isPreferences.js +8 -0
  156. package/lib/modifier/isPriceOverride.js +7 -0
  157. package/lib/modifier/isPromotion.js +6 -0
  158. package/lib/modifier/isQuantityOverride.js +7 -0
  159. package/lib/modifier/isRemoveModifier.js +4 -0
  160. package/lib/modifier/isRequired.js +4 -0
  161. package/lib/modifier/isRequiredAndOverride.js +4 -0
  162. package/lib/modifier/isService.js +9 -0
  163. package/lib/modifier/isSingleValue.js +9 -0
  164. package/lib/modifier/isSubscription.js +6 -0
  165. package/lib/modifier/isTrackUsageSubscription.js +5 -0
  166. package/lib/modifier/isValueSelected.js +7 -0
  167. package/lib/modifier/purifyModifiers.js +15 -0
  168. package/lib/modifier/sort.js +35 -0
  169. package/lib/order/addCreditModifier.js +27 -0
  170. package/lib/order/addDiscountModifier.js +9 -0
  171. package/lib/order/addItem.js +292 -0
  172. package/lib/order/addItemModifier.js +214 -0
  173. package/lib/order/addModifier.js +9 -0
  174. package/lib/order/addModifierToAllItems.js +16 -0
  175. package/lib/order/addNote.js +25 -0
  176. package/lib/order/addTable.js +11 -0
  177. package/lib/order/calculate.js +105 -0
  178. package/lib/order/calculateDue.js +15 -0
  179. package/lib/order/calculateOrdersDue.js +26 -0
  180. package/lib/order/canSplit.js +4 -0
  181. package/lib/order/changeEndDate.js +15 -0
  182. package/lib/order/changeLocation.js +20 -0
  183. package/lib/order/changeStartDate.js +14 -0
  184. package/lib/order/combineSubOrders.js +14 -0
  185. package/lib/order/containsSerial.js +5 -0
  186. package/lib/order/create.js +67 -0
  187. package/lib/order/createParent.js +9 -0
  188. package/lib/order/duplicateItem.js +16 -0
  189. package/lib/order/findItemIndex.js +6 -0
  190. package/lib/order/getAppliedCredit.js +5 -0
  191. package/lib/order/getBalance.js +9 -0
  192. package/lib/order/getCustomer.js +4 -0
  193. package/lib/order/getCustomerStoreCredit.js +14 -0
  194. package/lib/order/getCustomerSubscriptions.js +8 -0
  195. package/lib/order/getCustomerSubscriptionsByItem.js +14 -0
  196. package/lib/order/getDepartmentModifiers.js +9 -0
  197. package/lib/order/getEndDate.js +4 -0
  198. package/lib/order/getItemByItemId.js +6 -0
  199. package/lib/order/getItemIndex.js +9 -0
  200. package/lib/order/getItemsToPay.js +17 -0
  201. package/lib/order/getMenuItemsByCustomer.js +19 -0
  202. package/lib/order/getNumberOfItems.js +10 -0
  203. package/lib/order/getOrdersPieces.js +10 -0
  204. package/lib/order/getPendingItemIndex.js +5 -0
  205. package/lib/order/getRelatedItems.js +11 -0
  206. package/lib/order/getSameItems.js +19 -0
  207. package/lib/order/getScheduleByCustomer.js +20 -0
  208. package/lib/order/getScreenCustomerNotes.js +12 -0
  209. package/lib/order/getSelectedItem.js +6 -0
  210. package/lib/order/getStartDate.js +4 -0
  211. package/lib/order/getTip.js +10 -0
  212. package/lib/order/getTotalPieces.js +17 -0
  213. package/lib/order/getTotals.js +28 -0
  214. package/lib/order/hasAggregate.js +20 -0
  215. package/lib/order/hasItem.js +7 -0
  216. package/lib/order/hasRemainingSubscription.js +67 -0
  217. package/lib/order/hold.js +12 -0
  218. package/lib/order/index.js +164 -4
  219. package/lib/order/isDetailed.js +4 -0
  220. package/lib/order/isHold.js +4 -0
  221. package/lib/order/isNew.js +4 -0
  222. package/lib/order/isOpen.js +4 -0
  223. package/lib/order/isParent.js +7 -0
  224. package/lib/order/merge.js +96 -0
  225. package/lib/order/open.js +11 -0
  226. package/lib/order/pickEndDate.js +70 -0
  227. package/lib/order/removeApplyModifier.js +24 -0
  228. package/lib/order/removeDiscountModifier.js +16 -0
  229. package/lib/order/removeItem.js +55 -0
  230. package/lib/order/removeItemByIndex.js +5 -0
  231. package/lib/order/removeItemModifier.js +69 -0
  232. package/lib/order/removeModifier.js +21 -0
  233. package/lib/order/removeModifierByAttribute.js +23 -0
  234. package/lib/order/removeModifiersWithPaymentMethods.js +29 -0
  235. package/lib/order/removeModifiersWithPaymentTypes.js +27 -0
  236. package/lib/order/setCustomer.js +50 -0
  237. package/lib/order/splitByDepartments.js +151 -0
  238. package/lib/order/toggleModifier.js +9 -0
  239. package/lib/order/updateItem.js +8 -0
  240. package/lib/order/updateItemQuantity.js +35 -0
  241. package/lib/order/void.js +11 -0
  242. package/package.json +17 -15
  243. package/__TEST__/modifier.test.js +0 -126
  244. package/lib/item/actions.js +0 -140
  245. package/lib/modifier/actions.js +0 -172
  246. package/lib/modifier/constants.js +0 -46
  247. package/lib/order/actions.js +0 -47
  248. package/lib/utils/defaultPrices.js +0 -10
  249. package/lib/utils/helpers.js +0 -26
  250. package/lib/utils/index.js +0 -9
  251. package/lib/utils/math.js +0 -71
@@ -0,0 +1,109 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('GetMatchTagsModifiers Function', () => {
6
+ test('usecases', () => {
7
+ expect(
8
+ pricingService.modifier.getMatchTagsModifiers({ modifiers: [] })
9
+ ).toHaveLength(0);
10
+ const customer = {};
11
+ let modifiers = [];
12
+ expect(
13
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
14
+ ).toHaveLength(0);
15
+ customer.tags = [];
16
+ modifiers = [{ tags: [] }];
17
+ expect(
18
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
19
+ ).toHaveLength(1);
20
+ customer.tags = ['all'];
21
+ expect(
22
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
23
+ ).toHaveLength(1);
24
+ modifiers = [{ tags: ['test'] }];
25
+ expect(
26
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
27
+ ).toHaveLength(0);
28
+ modifiers = [{ tags: ['all'] }, { tags: ['test'] }];
29
+ expect(
30
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
31
+ ).toHaveLength(1);
32
+ modifiers = [{ tags: ['all'] }, { tags: ['test'] }, { tags: [] }];
33
+ expect(
34
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
35
+ ).toHaveLength(2);
36
+ customer.tags = ['test'];
37
+ modifiers = [{ tags: [] }];
38
+ expect(
39
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
40
+ ).toHaveLength(0);
41
+ modifiers = [{ tags: ['test'] }];
42
+ expect(
43
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
44
+ ).toHaveLength(1);
45
+ modifiers = [{ tags: ['all'] }, { tags: ['test'] }];
46
+ expect(
47
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
48
+ ).toHaveLength(1);
49
+ modifiers = [{ tags: ['all'] }, { tags: ['test'] }, { tags: [] }];
50
+ expect(
51
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
52
+ ).toHaveLength(1);
53
+ modifiers = [
54
+ { tags: ['all'] },
55
+ { tags: ['test'] },
56
+ { tags: [] },
57
+ { tags: ['Test'] },
58
+ ];
59
+ expect(
60
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
61
+ ).toHaveLength(1);
62
+ modifiers = [
63
+ { tags: ['all'] },
64
+ { tags: ['test'] },
65
+ { tags: [] },
66
+ { tags: ['Test'] },
67
+ { tags: ['test', 'Test'] },
68
+ ];
69
+ expect(
70
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
71
+ ).toHaveLength(2);
72
+ modifiers = [{ tags: ['all'] }];
73
+ expect(
74
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
75
+ ).toHaveLength(0);
76
+ modifiers = [{ tags: ['all'] }, { tags: ['test'] }];
77
+ expect(
78
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
79
+ ).toHaveLength(1);
80
+ modifiers = [
81
+ { tags: ['all'] },
82
+ { tags: ['test'] },
83
+ { tags: ['test'], attributes: ['hidden'] },
84
+ {},
85
+ ];
86
+ expect(
87
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
88
+ ).toHaveLength(2);
89
+ customer.tags = ['all'];
90
+ expect(
91
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
92
+ ).toHaveLength(2);
93
+ modifiers = [
94
+ { tags: ['all'] },
95
+ { tags: ['test'] },
96
+ { tags: ['all'], attributes: ['hidden'] },
97
+ { tags: ['all'], attributes: ['default'] },
98
+ { tags: ['all'], attributes: ['required'] },
99
+ {},
100
+ ];
101
+ expect(
102
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
103
+ ).toHaveLength(5);
104
+ customer.tags = undefined;
105
+ expect(
106
+ pricingService.modifier.getMatchTagsModifiers({ modifiers, entity: customer })
107
+ ).toHaveLength(5);
108
+ });
109
+ });
@@ -0,0 +1,40 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('GetModifierIndex Function', () => {
6
+ test('usecases', () => {
7
+ expect(
8
+ pricingService.modifier.getModifierIndex({
9
+ entity: undefined,
10
+ modifier: undefined,
11
+ })
12
+ ).toBe(-1);
13
+ const order = { modifiers: [{ modifierId: '123' }] };
14
+ expect(
15
+ pricingService.modifier.getModifierIndex({ entity: order, modifier: undefined })
16
+ ).toBe(-1);
17
+ const modifier = { _id: '123' };
18
+ expect(
19
+ pricingService.modifier.getModifierIndex({
20
+ entity: order,
21
+ modifier,
22
+ })
23
+ ).toBe(0);
24
+ modifier._id = '234';
25
+ expect(
26
+ pricingService.modifier.getModifierIndex({
27
+ entity: order,
28
+ modifier,
29
+ })
30
+ ).toBe(-1);
31
+ order.modifiers = [{ modifierId: '123' }, { modifierId: '234' }];
32
+ expect(pricingService.modifier.getModifierIndex({ entity: order, modifier })).toBe(
33
+ 1
34
+ );
35
+ modifier._id = '123';
36
+ expect(pricingService.modifier.getModifierIndex({ entity: order, modifier })).toBe(
37
+ 0
38
+ );
39
+ });
40
+ });
@@ -0,0 +1,17 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('GetRecommendedModifiers Function', () => {
6
+ test('usecases', () => {
7
+ const modifier = { modifier: { recommended: true } };
8
+ expect(pricingService.modifier.getRecommendedModifiers([modifier])).toHaveLength(1);
9
+
10
+ const modifier2 = {
11
+ modifier: { modifier: { _id: 1 } },
12
+ };
13
+ expect(pricingService.modifier.getRecommendedModifiers([modifier2])).toHaveLength(
14
+ 0
15
+ );
16
+ });
17
+ });
@@ -0,0 +1,25 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('HasAllTag Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasAllTag()).toBe(false);
8
+ const customer = {};
9
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
10
+ customer.tags = [];
11
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
12
+ customer.tags = ['default'];
13
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
14
+ customer.tags = ['all'];
15
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
16
+ customer.tags = ['All'];
17
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
18
+ customer.tags = ['All', 'default'];
19
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
20
+ customer.tags = ['all', 'test'];
21
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
22
+ customer.tags = ['test'];
23
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
24
+ });
25
+ });
@@ -0,0 +1,47 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('Has Modifiers Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasAttribute()).toBe(false);
8
+ expect(pricingService.modifier.hasAttribute(undefined, 'test')).toBe(false);
9
+ expect(pricingService.modifier.hasAttribute({}, undefined)).toBe(false);
10
+ expect(pricingService.modifier.hasAttribute({ attributes: [] }, undefined)).toBe(
11
+ false
12
+ );
13
+ expect(
14
+ pricingService.modifier.hasAttribute({ attributes: [undefined] }, undefined)
15
+ ).toBe(false);
16
+ expect(
17
+ pricingService.modifier.hasAttribute({ attributes: ['test'] }, undefined)
18
+ ).toBe(false);
19
+ expect(
20
+ pricingService.modifier.hasAttribute({ attributes: ['undefined'] }, undefined)
21
+ ).toBe(false);
22
+ expect(
23
+ pricingService.modifier.hasAttribute(
24
+ { attributes: ['undefined', undefined, 'test'] },
25
+ undefined
26
+ )
27
+ ).toBe(false);
28
+ expect(
29
+ pricingService.modifier.hasAttribute(
30
+ { attributes: ['undefined', undefined, 'test'] },
31
+ 'undefined'
32
+ )
33
+ ).toBe(true);
34
+ expect(
35
+ pricingService.modifier.hasAttribute(
36
+ { attributes: ['undefined', undefined, 'test'] },
37
+ 'test'
38
+ )
39
+ ).toBe(true);
40
+ expect(
41
+ pricingService.modifier.hasAttribute(
42
+ { attributes: ['undefined', undefined, 'test', 'test', 'test'] },
43
+ 'test'
44
+ )
45
+ ).toBe(true);
46
+ });
47
+ });
@@ -0,0 +1,56 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('Has Match Tags Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasMatchTags()).toBe(true);
8
+ const customer = {};
9
+ const modifier = {};
10
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
11
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
12
+ customer.tags = [];
13
+ modifier.tags = [];
14
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
15
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
16
+ customer.tags = ['all'];
17
+ modifier.tags = ['all'];
18
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
19
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
20
+ customer.tags = ['All'];
21
+ modifier.tags = ['All'];
22
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
23
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
24
+ customer.tags = ['test'];
25
+ modifier.tags = ['test'];
26
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(false);
27
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(false);
28
+ customer.tags = ['test'];
29
+ modifier.tags = ['all'];
30
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
31
+ customer.tags = ['all'];
32
+ modifier.tags = ['test'];
33
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
34
+ customer.tags = ['all'];
35
+ modifier.tags = ['all'];
36
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(true);
37
+ customer.tags = ['test'];
38
+ modifier.tags = ['test2'];
39
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
40
+ customer.tags = ['test'];
41
+ modifier.tags = ['test'];
42
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(true);
43
+ customer.tags = ['test11', 'test12', 'test13', 'test14'];
44
+ modifier.tags = ['test'];
45
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
46
+ customer.tags = ['test11', 'test12', 'test13', 'test14'];
47
+ modifier.tags = ['test21', 'test22', 'test23', 'test24'];
48
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
49
+ customer.tags = ['test11', 'test12', 'test13', 'test14', 'match'];
50
+ modifier.tags = ['test21', 'test22', 'test23', 'test24', 'match'];
51
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(true);
52
+ customer.tags = ['test11', 'test12', 'test13', 'test14', 'Match'];
53
+ modifier.tags = ['test21', 'test22', 'test23', 'test24', 'match'];
54
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
55
+ });
56
+ });
@@ -0,0 +1,21 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('Has No Tags Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasNoTags()).toBe(true);
8
+ const customer = {};
9
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(true);
10
+ customer.tags = [];
11
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(true);
12
+ customer.tags = ['test'];
13
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
14
+ customer.tags = ['default'];
15
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
16
+ customer.tags = ['all'];
17
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
18
+ customer.tags = ['All'];
19
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
20
+ });
21
+ });