@darkpos/pricing 1.0.6 → 1.0.9
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/__TEST__/modifier/calculate.test.js +73 -0
- package/__TEST__/modifier/getAvailablePromotionsOrSubscriptions.test.js +81 -0
- package/__TEST__/modifier/getMatchTagsModifiers.test.js +109 -0
- package/__TEST__/modifier/getModifierIndex.test.js +40 -0
- package/__TEST__/modifier/getRecommendedModifiers.test.js +17 -0
- package/__TEST__/modifier/hasAllTags.test.js +25 -0
- package/__TEST__/modifier/hasAttribute.test.js +47 -0
- package/__TEST__/modifier/hasMatchTags.test.js +56 -0
- package/__TEST__/modifier/hasNoTags.test.js +21 -0
- package/__TEST__/modifier/mocks/toggleModifier_no1.json +13440 -0
- package/__TEST__/modifier/mocks/toggleModifier_no2.json +13438 -0
- package/__TEST__/modifier/mocks/toggleModifier_no3.json +13598 -0
- package/__TEST__/modifier/sort.test.js +41 -0
- package/__TEST__/order.test.js +0 -1
- package/lib/constants/Modifier/Attributes.js +9 -0
- package/lib/constants/Modifier/Compute.js +15 -0
- package/lib/constants/Modifier/Types.js +7 -0
- package/lib/constants/Modifier/index.js +9 -0
- package/lib/constants/Status.js +39 -0
- package/lib/constants/index.js +4 -2
- package/lib/index.js +4 -2
- package/lib/item/getItemsTotalPieces.js +1 -1
- package/lib/modifier/addFile.js +19 -0
- package/lib/modifier/addImage.js +18 -0
- package/lib/modifier/calculate.js +43 -0
- package/lib/modifier/contains.js +5 -0
- package/lib/modifier/convertMenuModifiers.js +5 -0
- package/lib/modifier/create.js +44 -0
- package/lib/modifier/createAmountOverrideModifier.js +20 -0
- package/lib/modifier/createCreditModifier.js +32 -0
- package/lib/modifier/createDiscountModifier.js +25 -0
- package/lib/modifier/createGroupValuesModifier.js +29 -0
- package/lib/modifier/createIndirectModifier.js +42 -0
- package/lib/modifier/createSubscriptionModifier.js +19 -0
- package/lib/modifier/displayAsCard.js +9 -0
- package/lib/modifier/displayAsChips.js +9 -0
- package/lib/modifier/displayAsList.js +9 -0
- package/lib/modifier/duplicate.js +12 -0
- package/lib/modifier/enableAutoPopup.js +9 -0
- package/lib/modifier/filterByRequiredModifiers.js +4 -0
- package/lib/modifier/findById.js +7 -0
- package/lib/modifier/findByPaymentMethod.js +10 -0
- package/lib/modifier/findByPaymentType.js +10 -0
- package/lib/modifier/getAvailablePromotions.js +5 -0
- package/lib/modifier/getAvailablePromotionsOrSubscriptions.js +15 -0
- package/lib/modifier/getAvailableSubscriptions.js +5 -0
- package/lib/modifier/getByAttribute.js +6 -0
- package/lib/modifier/getCreditModifier.js +6 -0
- package/lib/modifier/getDefaultModifiers.js +4 -0
- package/lib/modifier/getDepartmentMaxItems.js +10 -0
- package/lib/modifier/getDepartmentModifiers.js +11 -0
- package/lib/modifier/getDescription.js +6 -0
- package/lib/modifier/getDescriptions.js +9 -0
- package/lib/modifier/getDirectModifiers.js +5 -0
- package/lib/modifier/getDiscountModifiers.js +7 -0
- package/lib/modifier/getEntityModifiers.js +11 -0
- package/lib/modifier/getEntityPromotions.js +11 -0
- package/lib/modifier/getExtendedTags.js +14 -0
- package/lib/modifier/getFiles.js +5 -0
- package/lib/modifier/getGroupModifiers.js +9 -0
- package/lib/modifier/getGroupOfItemsModifiers.js +4 -0
- package/lib/modifier/getGroupRelatedModifiers.js +26 -0
- package/lib/modifier/getImages.js +5 -0
- package/lib/modifier/getInheritedModifiers.js +30 -0
- package/lib/modifier/getItemModifiers.js +39 -0
- package/lib/modifier/getLaundryModifiers.js +9 -0
- package/lib/modifier/getMatchTagsModifiers.js +9 -0
- package/lib/modifier/getModifierIndex.js +14 -0
- package/lib/modifier/getPreferences.js +24 -0
- package/lib/modifier/getPromotionModifiers.js +5 -0
- package/lib/modifier/getPromptMessage.js +6 -0
- package/lib/modifier/getProperty.js +11 -0
- package/lib/modifier/getRecommendedModifiers.js +7 -0
- package/lib/modifier/getRelatedModifiers.js +10 -0
- package/lib/modifier/getRequiredModifiers.js +4 -0
- package/lib/modifier/getSelectedValues.js +7 -0
- package/lib/modifier/getService.js +5 -0
- package/lib/modifier/getSplittedModifiers.js +30 -0
- package/lib/modifier/getStarchModifier.js +9 -0
- package/lib/modifier/getSubscriptionItem.js +12 -0
- package/lib/modifier/getSubscriptionModifiers.js +5 -0
- package/lib/modifier/getSuggestion.js +9 -0
- package/lib/modifier/getUnhiddenModifiers.js +9 -0
- package/lib/modifier/getUsingCount.js +11 -0
- package/lib/modifier/hasAddModifiers.js +5 -0
- package/lib/modifier/hasAllTag.js +12 -0
- package/lib/modifier/hasAttribute.js +8 -0
- package/lib/modifier/hasAttributes.js +19 -0
- package/lib/modifier/hasCreateSubscription.js +10 -0
- package/lib/modifier/hasDisplayPrompt.js +9 -0
- package/lib/modifier/hasMatchTags.js +27 -0
- package/lib/modifier/hasModifier.js +12 -0
- package/lib/modifier/hasNoTags.js +9 -0
- package/lib/modifier/hasRelatedItems.js +8 -0
- package/lib/modifier/includePiecesInQuantity.js +10 -0
- package/lib/modifier/includesInGroup.js +9 -0
- package/lib/modifier/index.js +242 -0
- package/lib/modifier/isAmountOverride.js +7 -0
- package/lib/modifier/isAvailablePromotion.js +23 -0
- package/lib/modifier/isAvailableSubscription.js +28 -0
- package/lib/modifier/isCompact.js +12 -0
- package/lib/modifier/isCredit.js +6 -0
- package/lib/modifier/isCustomerTagsExtend.js +9 -0
- package/lib/modifier/isDefault.js +4 -0
- package/lib/modifier/isDepartment.js +6 -0
- package/lib/modifier/isDirect.js +6 -0
- package/lib/modifier/isDiscount.js +6 -0
- package/lib/modifier/isEditable.js +10 -0
- package/lib/modifier/isGratuity.js +6 -0
- package/lib/modifier/isGroupOfItems.js +12 -0
- package/lib/modifier/isGroupOfModifiers.js +12 -0
- package/lib/modifier/isGroupOfValues.js +13 -0
- package/lib/modifier/isHidden.js +4 -0
- package/lib/modifier/isIncluded.js +4 -0
- package/lib/modifier/isManual.js +9 -0
- package/lib/modifier/isMultiplier.js +11 -0
- package/lib/modifier/isOverride.js +6 -0
- package/lib/modifier/isPaymentMethods.js +8 -0
- package/lib/modifier/isPaymentTypes.js +8 -0
- package/lib/modifier/isPreferences.js +8 -0
- package/lib/modifier/isPriceOverride.js +7 -0
- package/lib/modifier/isPromotion.js +6 -0
- package/lib/modifier/isQuantityOverride.js +7 -0
- package/lib/modifier/isRemoveModifier.js +4 -0
- package/lib/modifier/isRequired.js +4 -0
- package/lib/modifier/isRequiredAndOverride.js +4 -0
- package/lib/modifier/isService.js +9 -0
- package/lib/modifier/isSingleValue.js +9 -0
- package/lib/modifier/isSubscription.js +6 -0
- package/lib/modifier/isTrackUsageSubscription.js +5 -0
- package/lib/modifier/isValueSelected.js +7 -0
- package/lib/modifier/purifyModifiers.js +15 -0
- package/lib/modifier/sort.js +35 -0
- package/lib/order/create.js +3 -3
- package/lib/order/getEndDate.js +2 -4
- package/lib/order/getNumberOfItems.js +2 -4
- package/lib/order/getSameItems.js +6 -1
- package/lib/order/hold.js +1 -1
- package/lib/order/index.js +0 -3
- package/lib/order/open.js +1 -1
- package/lib/order/removeItem.js +2 -3
- package/lib/order/splitByDepartments.js +1 -1
- package/lib/order/void.js +1 -1
- 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
|
+
});
|