@darkpos/pricing 1.0.72 → 1.0.73

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.
@@ -1664,15 +1664,6 @@ describe('hasModifier Function', () => {
1664
1664
  modifiers: [],
1665
1665
  };
1666
1666
 
1667
- // const modifier = groupMod;
1668
- // const relatedItems = [];
1669
-
1670
- // const result = pricingService.item.hasModifier({
1671
- // item,
1672
- // modifier,
1673
- // relatedItems,
1674
- // });
1675
-
1676
1667
  const { updatedOrder } = pricingService.order.addItem({
1677
1668
  order,
1678
1669
  item: {
@@ -1682,13 +1673,12 @@ describe('hasModifier Function', () => {
1682
1673
  parentItemId: item.itemId,
1683
1674
  parentId: item._id,
1684
1675
  includeParent: true,
1685
- relatedItemId: relatedModItem._id,
1676
+ groupPath: ',groupMod10',
1686
1677
  },
1687
1678
  },
1688
1679
  });
1689
1680
 
1690
1681
  expect(updatedOrder.items.length).toBe(2);
1691
-
1692
1682
  expect(updatedOrder.items[1]).toMatchObject({
1693
1683
  _id: 1,
1694
1684
  itemId: 'ab',
@@ -1728,7 +1718,7 @@ describe('hasModifier Function', () => {
1728
1718
  parentItemId: item.itemId,
1729
1719
  parentId: item._id,
1730
1720
  includeParent: false,
1731
- relatedItemId: relatedModItem._id,
1721
+ groupPath: ',groupMod10',
1732
1722
  },
1733
1723
  },
1734
1724
  });
@@ -6,7 +6,7 @@ module.exports = ({ modifierActions, actions }) =>
6
6
  item.modifiers.forEach(modifier => {
7
7
  if (
8
8
  modifierActions.isRequired(modifier) &&
9
- modifierActions.isGroupOfModifiers(modifier) &&
9
+ modifierActions.isGroup(modifier) &&
10
10
  !actions.hasModifier({ item, modifier, relatedItems })
11
11
  ) {
12
12
  invalidModifiers.push(modifier);
@@ -1,36 +1,36 @@
1
1
  module.exports = ({ modifierActions }) =>
2
- function hasModifier({ item, modifier, relatedItems, originalModifier }) {
2
+ function hasModifier({ item, modifier, relatedItems }) {
3
3
  if (!item || !modifier || !item.modifiers) return false;
4
4
 
5
- const originalMod = originalModifier || modifier;
5
+ const isGroupPath = groupPath =>
6
+ groupPath &&
7
+ (groupPath.includes(modifier.modifierId) ||
8
+ groupPath.includes(modifier._id));
6
9
 
7
- if (modifierActions.isGroupOfModifiers(modifier)) {
8
- const relatedModifiers = modifier.properties.group.modifiers;
9
- return [
10
- modifierActions.removeGroupData({ modifier }),
11
- ...relatedModifiers,
12
- ].some(relatedModifier =>
13
- hasModifier({
14
- item,
15
- modifier: relatedModifier,
16
- relatedItems,
17
- originalModifier: originalMod,
18
- })
19
- );
10
+ if (modifierActions.isGroup(modifier)) {
11
+ const matchByRelatedModifier = item.modifiers.some(itemMod => {
12
+ if (
13
+ modifierActions.isGroup(itemMod) ||
14
+ !itemMod.properties ||
15
+ !itemMod.properties.groupPath
16
+ )
17
+ return false;
18
+ return isGroupPath(itemMod.properties.groupPath);
19
+ });
20
+
21
+ const matchByRelatedItems =
22
+ !!relatedItems &&
23
+ modifierActions.isGroup(modifier) &&
24
+ relatedItems.some(relatedItem =>
25
+ isGroupPath(
26
+ relatedItem.properties && relatedItem.properties.groupPath
27
+ )
28
+ );
29
+
30
+ return matchByRelatedModifier || matchByRelatedItems;
20
31
  }
21
32
 
22
- const matchByModifier = item.modifiers.some(
33
+ return item.modifiers.some(
23
34
  each => !modifierActions.isGroup(each) && each.modifierId === modifier._id
24
35
  );
25
-
26
- const matchByRelatedItems =
27
- !!relatedItems &&
28
- modifierActions.isGroupOfItems(originalMod) &&
29
- relatedItems.some(relatedItem =>
30
- originalMod.properties.group.items.some(
31
- modItem => modItem._id === relatedItem.properties.relatedItemId
32
- )
33
- );
34
-
35
- return matchByModifier || matchByRelatedItems;
36
36
  };
@@ -37,7 +37,6 @@ module.exports = ({ modifierActions, _, actions }) => {
37
37
  items: order.items,
38
38
  item,
39
39
  }),
40
- originalModifier: addMod,
41
40
  }))
42
41
  ),
43
42
  ];
@@ -142,6 +142,7 @@ const isCompute = require('./isCompute');
142
142
  const isFixedOverride = require('./isFixedOverride');
143
143
  const isLocked = require('./isLocked');
144
144
  const hasAddModifier = require('./hasAddModifier');
145
+ const removeGroupRelations = require('./removeGroupRelations');
145
146
 
146
147
  const modifierActions = (deps = {}) => {
147
148
  const actions = {};
@@ -297,6 +298,7 @@ const modifierActions = (deps = {}) => {
297
298
  isFixedOverride: isFixedOverride(innerDeps),
298
299
  isLocked: isLocked(innerDeps),
299
300
  hasAddModifier: hasAddModifier(innerDeps),
301
+ removeGroupRelations: removeGroupRelations(innerDeps),
300
302
  });
301
303
 
302
304
  Object.keys(freezedActions).forEach(actionName => {
@@ -0,0 +1,22 @@
1
+ module.exports = ({ actions }) =>
2
+ function removeGroupRelations(modifier) {
3
+ if (
4
+ !actions.isGroup(modifier) ||
5
+ !modifier.properties ||
6
+ !modifier.properties.group
7
+ )
8
+ return modifier;
9
+
10
+ return {
11
+ ...modifier,
12
+ properties: {
13
+ ...modifier.properties,
14
+ group: {
15
+ ...modifier.properties.group,
16
+ modifiers: [],
17
+ items: [],
18
+ manualModifiers: '',
19
+ },
20
+ },
21
+ };
22
+ };
@@ -92,7 +92,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
92
92
  originalItem,
93
93
  onConditionsNotMet,
94
94
  }) => {
95
- const modifier = _modifier; // to avoid no param reassign lint rule
95
+ const modifier = modifierActions.removeGroupRelations(_modifier); // to avoid no param reassign lint rule
96
96
  let item = { ...itemProp };
97
97
  const compute = getComputeModField(modifier);
98
98
  const conditionsBag = areConditionsMet(item, modifier.conditions);
@@ -38,7 +38,6 @@ module.exports = ({ actions, itemActions }) => {
38
38
  order: prevOrder,
39
39
  item: parentItem,
40
40
  }),
41
- originalModifier: addModifier,
42
41
  })
43
42
  ) {
44
43
  const updatedItem = itemActions.removeModifier({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkpos/pricing",
3
- "version": "1.0.72",
3
+ "version": "1.0.73",
4
4
  "description": "Pricing calculator",
5
5
  "author": "Dark POS",
6
6
  "license": "ISC",
@@ -17,6 +17,7 @@
17
17
  "test:validateConditions": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/validateConditionsCalculate.test.js",
18
18
  "test:hasModifier": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/modifier/hasModifier.test.js",
19
19
  "test:item": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/item.test.js",
20
+ "test:manualTest": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/manualTest.test.js",
20
21
  "test:split": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/split.test.js",
21
22
  "test:getModifierTags": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/item/getModifierTags.test.js",
22
23
  "test:createIndirectModifier": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/modifier/createIndirectModifier.test.js",
@@ -49,5 +50,5 @@
49
50
  "supertest": "^6.2.3",
50
51
  "supervisor": "^0.12.0"
51
52
  },
52
- "gitHead": "2dc88094c2dbcebc04e0fbd817b45809a44dc403"
53
+ "gitHead": "276e28f676960107d60027bc70e22f698e6e124e"
53
54
  }