@darkpos/pricing 1.0.6 → 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 (143) hide show
  1. package/__TEST__/modifier/calculate.test.js +73 -0
  2. package/__TEST__/modifier/getAvailablePromotionsOrSubscriptions.test.js +81 -0
  3. package/__TEST__/modifier/getMatchTagsModifiers.test.js +109 -0
  4. package/__TEST__/modifier/getModifierIndex.test.js +40 -0
  5. package/__TEST__/modifier/getRecommendedModifiers.test.js +17 -0
  6. package/__TEST__/modifier/hasAllTags.test.js +25 -0
  7. package/__TEST__/modifier/hasAttribute.test.js +47 -0
  8. package/__TEST__/modifier/hasMatchTags.test.js +56 -0
  9. package/__TEST__/modifier/hasNoTags.test.js +21 -0
  10. package/__TEST__/modifier/mocks/toggleModifier_no1.json +13440 -0
  11. package/__TEST__/modifier/mocks/toggleModifier_no2.json +13438 -0
  12. package/__TEST__/modifier/mocks/toggleModifier_no3.json +13598 -0
  13. package/__TEST__/modifier/sort.test.js +41 -0
  14. package/__TEST__/order.test.js +0 -1
  15. package/lib/constants/Modifier/Attributes.js +9 -0
  16. package/lib/constants/Modifier/Compute.js +15 -0
  17. package/lib/constants/Modifier/Types.js +7 -0
  18. package/lib/constants/Modifier/index.js +9 -0
  19. package/lib/constants/{status.js → Status.js} +0 -0
  20. package/lib/constants/index.js +4 -2
  21. package/lib/index.js +4 -2
  22. package/lib/item/getItemsTotalPieces.js +1 -1
  23. package/lib/modifier/addFile.js +19 -0
  24. package/lib/modifier/addImage.js +18 -0
  25. package/lib/modifier/calculate.js +43 -0
  26. package/lib/modifier/contains.js +5 -0
  27. package/lib/modifier/convertMenuModifiers.js +5 -0
  28. package/lib/modifier/create.js +44 -0
  29. package/lib/modifier/createAmountOverrideModifier.js +20 -0
  30. package/lib/modifier/createCreditModifier.js +32 -0
  31. package/lib/modifier/createDiscountModifier.js +25 -0
  32. package/lib/modifier/createGroupValuesModifier.js +29 -0
  33. package/lib/modifier/createIndirectModifier.js +42 -0
  34. package/lib/modifier/createSubscriptionModifier.js +19 -0
  35. package/lib/modifier/displayAsCard.js +9 -0
  36. package/lib/modifier/displayAsChips.js +9 -0
  37. package/lib/modifier/displayAsList.js +9 -0
  38. package/lib/modifier/duplicate.js +12 -0
  39. package/lib/modifier/enableAutoPopup.js +9 -0
  40. package/lib/modifier/filterByRequiredModifiers.js +4 -0
  41. package/lib/modifier/findById.js +7 -0
  42. package/lib/modifier/findByPaymentMethod.js +10 -0
  43. package/lib/modifier/findByPaymentType.js +10 -0
  44. package/lib/modifier/getAvailablePromotions.js +5 -0
  45. package/lib/modifier/getAvailablePromotionsOrSubscriptions.js +15 -0
  46. package/lib/modifier/getAvailableSubscriptions.js +5 -0
  47. package/lib/modifier/getByAttribute.js +6 -0
  48. package/lib/modifier/getCreditModifier.js +6 -0
  49. package/lib/modifier/getDefaultModifiers.js +4 -0
  50. package/lib/modifier/getDepartmentMaxItems.js +10 -0
  51. package/lib/modifier/getDepartmentModifiers.js +11 -0
  52. package/lib/modifier/getDescription.js +6 -0
  53. package/lib/modifier/getDescriptions.js +9 -0
  54. package/lib/modifier/getDirectModifiers.js +5 -0
  55. package/lib/modifier/getDiscountModifiers.js +7 -0
  56. package/lib/modifier/getEntityModifiers.js +11 -0
  57. package/lib/modifier/getEntityPromotions.js +11 -0
  58. package/lib/modifier/getExtendedTags.js +14 -0
  59. package/lib/modifier/getFiles.js +5 -0
  60. package/lib/modifier/getGroupModifiers.js +9 -0
  61. package/lib/modifier/getGroupOfItemsModifiers.js +4 -0
  62. package/lib/modifier/getGroupRelatedModifiers.js +26 -0
  63. package/lib/modifier/getImages.js +5 -0
  64. package/lib/modifier/getInheritedModifiers.js +30 -0
  65. package/lib/modifier/getItemModifiers.js +39 -0
  66. package/lib/modifier/getLaundryModifiers.js +9 -0
  67. package/lib/modifier/getMatchTagsModifiers.js +9 -0
  68. package/lib/modifier/getModifierIndex.js +14 -0
  69. package/lib/modifier/getPreferences.js +24 -0
  70. package/lib/modifier/getPromotionModifiers.js +5 -0
  71. package/lib/modifier/getPromptMessage.js +6 -0
  72. package/lib/modifier/getProperty.js +11 -0
  73. package/lib/modifier/getRecommendedModifiers.js +7 -0
  74. package/lib/modifier/getRelatedModifiers.js +10 -0
  75. package/lib/modifier/getRequiredModifiers.js +4 -0
  76. package/lib/modifier/getSelectedValues.js +7 -0
  77. package/lib/modifier/getService.js +5 -0
  78. package/lib/modifier/getSplittedModifiers.js +30 -0
  79. package/lib/modifier/getStarchModifier.js +9 -0
  80. package/lib/modifier/getSubscriptionItem.js +12 -0
  81. package/lib/modifier/getSubscriptionModifiers.js +5 -0
  82. package/lib/modifier/getSuggestion.js +9 -0
  83. package/lib/modifier/getUnhiddenModifiers.js +9 -0
  84. package/lib/modifier/getUsingCount.js +11 -0
  85. package/lib/modifier/hasAddModifiers.js +5 -0
  86. package/lib/modifier/hasAllTag.js +12 -0
  87. package/lib/modifier/hasAttribute.js +8 -0
  88. package/lib/modifier/hasAttributes.js +19 -0
  89. package/lib/modifier/hasCreateSubscription.js +10 -0
  90. package/lib/modifier/hasDisplayPrompt.js +9 -0
  91. package/lib/modifier/hasMatchTags.js +27 -0
  92. package/lib/modifier/hasModifier.js +12 -0
  93. package/lib/modifier/hasNoTags.js +9 -0
  94. package/lib/modifier/hasRelatedItems.js +8 -0
  95. package/lib/modifier/includePiecesInQuantity.js +10 -0
  96. package/lib/modifier/includesInGroup.js +9 -0
  97. package/lib/modifier/index.js +242 -0
  98. package/lib/modifier/isAmountOverride.js +7 -0
  99. package/lib/modifier/isAvailablePromotion.js +23 -0
  100. package/lib/modifier/isAvailableSubscription.js +28 -0
  101. package/lib/modifier/isCompact.js +12 -0
  102. package/lib/modifier/isCredit.js +6 -0
  103. package/lib/modifier/isCustomerTagsExtend.js +9 -0
  104. package/lib/modifier/isDefault.js +4 -0
  105. package/lib/modifier/isDepartment.js +6 -0
  106. package/lib/modifier/isDirect.js +6 -0
  107. package/lib/modifier/isDiscount.js +6 -0
  108. package/lib/modifier/isEditable.js +10 -0
  109. package/lib/modifier/isGratuity.js +6 -0
  110. package/lib/modifier/isGroupOfItems.js +12 -0
  111. package/lib/modifier/isGroupOfModifiers.js +12 -0
  112. package/lib/modifier/isGroupOfValues.js +13 -0
  113. package/lib/modifier/isHidden.js +4 -0
  114. package/lib/modifier/isIncluded.js +4 -0
  115. package/lib/modifier/isManual.js +9 -0
  116. package/lib/modifier/isMultiplier.js +11 -0
  117. package/lib/modifier/isOverride.js +6 -0
  118. package/lib/modifier/isPaymentMethods.js +8 -0
  119. package/lib/modifier/isPaymentTypes.js +8 -0
  120. package/lib/modifier/isPreferences.js +8 -0
  121. package/lib/modifier/isPriceOverride.js +7 -0
  122. package/lib/modifier/isPromotion.js +6 -0
  123. package/lib/modifier/isQuantityOverride.js +7 -0
  124. package/lib/modifier/isRemoveModifier.js +4 -0
  125. package/lib/modifier/isRequired.js +4 -0
  126. package/lib/modifier/isRequiredAndOverride.js +4 -0
  127. package/lib/modifier/isService.js +9 -0
  128. package/lib/modifier/isSingleValue.js +9 -0
  129. package/lib/modifier/isSubscription.js +6 -0
  130. package/lib/modifier/isTrackUsageSubscription.js +5 -0
  131. package/lib/modifier/isValueSelected.js +7 -0
  132. package/lib/modifier/purifyModifiers.js +15 -0
  133. package/lib/modifier/sort.js +35 -0
  134. package/lib/order/create.js +3 -3
  135. package/lib/order/getEndDate.js +2 -4
  136. package/lib/order/getNumberOfItems.js +2 -4
  137. package/lib/order/getSameItems.js +6 -1
  138. package/lib/order/hold.js +1 -1
  139. package/lib/order/index.js +0 -3
  140. package/lib/order/open.js +1 -1
  141. package/lib/order/removeItem.js +2 -3
  142. package/lib/order/void.js +1 -1
  143. package/package.json +3 -4
@@ -0,0 +1,73 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('Calculate Function', () => {
6
+ test('calculate with fix amount and add action', () => {
7
+ const modifier = {
8
+ compute: {
9
+ type: 'fixed',
10
+ action: 'add',
11
+ amount: 10,
12
+ },
13
+ name: 'someModifier',
14
+ };
15
+ const orderItem = { price: 30, quantity: 1 };
16
+ const computedModifier = pricingService.modifier.calculate(modifier, orderItem);
17
+ expect(computedModifier._computed).toMatchObject({
18
+ amount: 10,
19
+ description: 'someModifier ($10.00)',
20
+ });
21
+ });
22
+
23
+ test('calculate with fix amount and subtract action', () => {
24
+ const modifier = {
25
+ compute: {
26
+ type: 'fixed',
27
+ action: 'subtract',
28
+ amount: 10,
29
+ },
30
+ name: 'someModifier',
31
+ };
32
+ const orderItem = { price: 30, quantity: 1 };
33
+ const computedModifier = pricingService.modifier.calculate(modifier, orderItem);
34
+ expect(computedModifier._computed).toMatchObject({
35
+ amount: -10,
36
+ description: 'someModifier (-$10.00)',
37
+ });
38
+ });
39
+
40
+ test('calculate with percentage amount and subtract action', () => {
41
+ const modifier = {
42
+ compute: {
43
+ amount: 20,
44
+ type: 'percentage',
45
+ action: 'subtract',
46
+ },
47
+ name: 'someModifier',
48
+ };
49
+ const orderItem = { price: 30, quantity: 1 };
50
+ const computedModifier = pricingService.modifier.calculate(modifier, orderItem);
51
+ expect(computedModifier._computed).toMatchObject({
52
+ amount: -6,
53
+ description: 'someModifier (-$6.00)',
54
+ });
55
+ });
56
+
57
+ test('calculate with percentage amount and add action', () => {
58
+ const modifier = {
59
+ compute: {
60
+ amount: 20,
61
+ type: 'percentage',
62
+ action: 'add',
63
+ },
64
+ name: 'someModifier',
65
+ };
66
+ const orderItem = { price: 30, quantity: 1 };
67
+ const computedModifier = pricingService.modifier.calculate(modifier, orderItem);
68
+ expect(computedModifier._computed).toMatchObject({
69
+ amount: 6,
70
+ description: 'someModifier ($6.00)',
71
+ });
72
+ });
73
+ });
@@ -0,0 +1,81 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('GetAvailablePromotionsOrSubscriptions Function', () => {
6
+ test('usecases', () => {
7
+ const today = new Date();
8
+ expect(
9
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions()
10
+ ).toStrictEqual([]);
11
+
12
+ const modifier = { attributes: ['promotion'] };
13
+ expect(
14
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
15
+ ).toStrictEqual([modifier]);
16
+
17
+ modifier.properties = {
18
+ promotion: { numberOfUsesLimit: 4, numberOfUses: 3 },
19
+ };
20
+ expect(
21
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
22
+ ).toStrictEqual([modifier]);
23
+
24
+ modifier.properties.promotion.numberOfUses = 4;
25
+ expect(
26
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
27
+ ).toStrictEqual([]);
28
+
29
+ modifier.properties.promotion.numberOfUses = 5;
30
+ expect(
31
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
32
+ ).toStrictEqual([]);
33
+
34
+ modifier.properties = {
35
+ promotion: { dateLimit: { from: today.toISOString(), to: '' } },
36
+ };
37
+ expect(
38
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
39
+ ).toStrictEqual([modifier]);
40
+
41
+ const tomorrow = new Date(today);
42
+ tomorrow.setDate(tomorrow.getDate() + 1);
43
+ modifier.properties.promotion.dateLimit.from = tomorrow.toISOString();
44
+ expect(
45
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
46
+ ).toStrictEqual([]);
47
+
48
+ const yesterday = new Date(today);
49
+ yesterday.setDate(yesterday.getDate() - 1);
50
+ modifier.properties.promotion.dateLimit.from = yesterday.toISOString();
51
+ expect(
52
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
53
+ ).toStrictEqual([modifier]);
54
+
55
+ modifier.properties.promotion.dateLimit.to = yesterday.toISOString();
56
+ expect(
57
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
58
+ ).toStrictEqual([]);
59
+
60
+ modifier.properties.promotion.dateLimit.to = today.toISOString();
61
+ expect(
62
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
63
+ ).toStrictEqual([modifier]);
64
+
65
+ modifier.properties.promotion.dateLimit.to = tomorrow.toISOString();
66
+ expect(
67
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
68
+ ).toStrictEqual([modifier]);
69
+
70
+ modifier.attributes = ['subscription'];
71
+ modifier.properties.subscription = modifier.properties.promotion;
72
+ expect(
73
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
74
+ ).toStrictEqual([modifier]);
75
+
76
+ delete modifier.properties;
77
+ expect(
78
+ pricingService.modifier.getAvailablePromotionsOrSubscriptions([modifier])
79
+ ).toStrictEqual([]);
80
+ });
81
+ });
@@ -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
+ });