@labdigital/commercetools-mock 2.17.1 → 2.18.1

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 (180) hide show
  1. package/dist/index.cjs +4351 -4099
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +266 -413
  4. package/dist/index.d.ts +266 -413
  5. package/dist/index.js +4351 -4099
  6. package/dist/index.js.map +1 -1
  7. package/package.json +47 -47
  8. package/src/constants.ts +2 -2
  9. package/src/ctMock.test.ts +11 -11
  10. package/src/ctMock.ts +141 -127
  11. package/src/deprecation.ts +8 -0
  12. package/src/exceptions.ts +17 -15
  13. package/src/helpers.ts +32 -32
  14. package/src/index.test.ts +128 -128
  15. package/src/index.ts +3 -3
  16. package/src/lib/expandParser.ts +13 -13
  17. package/src/lib/haversine.test.ts +9 -9
  18. package/src/lib/haversine.ts +11 -11
  19. package/src/lib/masking.ts +11 -11
  20. package/src/lib/parser.ts +2 -2
  21. package/src/lib/password.ts +23 -3
  22. package/src/lib/predicateParser.test.ts +185 -183
  23. package/src/lib/predicateParser.ts +234 -234
  24. package/src/lib/projectionSearchFilter.test.ts +103 -101
  25. package/src/lib/projectionSearchFilter.ts +152 -150
  26. package/src/lib/proxy.ts +5 -5
  27. package/src/oauth/errors.ts +4 -4
  28. package/src/oauth/helpers.ts +6 -6
  29. package/src/oauth/server.test.ts +86 -86
  30. package/src/oauth/server.ts +158 -144
  31. package/src/oauth/store.ts +44 -43
  32. package/src/priceSelector.test.ts +35 -35
  33. package/src/priceSelector.ts +30 -30
  34. package/src/product-projection-search.ts +136 -134
  35. package/src/projectAPI.test.ts +7 -7
  36. package/src/projectAPI.ts +24 -22
  37. package/src/repositories/abstract.ts +168 -116
  38. package/src/repositories/associate-role.ts +90 -77
  39. package/src/repositories/attribute-group.ts +51 -40
  40. package/src/repositories/business-unit.ts +168 -148
  41. package/src/repositories/cart/actions.ts +489 -0
  42. package/src/repositories/cart/helpers.ts +30 -0
  43. package/src/repositories/cart/index.ts +180 -0
  44. package/src/repositories/cart-discount/actions.ts +148 -0
  45. package/src/repositories/cart-discount/index.ts +86 -0
  46. package/src/repositories/category/actions.ts +231 -0
  47. package/src/repositories/category/index.ts +52 -0
  48. package/src/repositories/channel.ts +88 -90
  49. package/src/repositories/custom-object.ts +46 -45
  50. package/src/repositories/customer/actions.ts +165 -0
  51. package/src/repositories/customer/index.ts +79 -0
  52. package/src/repositories/customer-group.ts +66 -55
  53. package/src/repositories/discount-code/actions.ts +149 -0
  54. package/src/repositories/discount-code/index.ts +50 -0
  55. package/src/repositories/errors.ts +10 -10
  56. package/src/repositories/extension.ts +64 -62
  57. package/src/repositories/helpers.ts +117 -118
  58. package/src/repositories/index.ts +80 -79
  59. package/src/repositories/inventory-entry/actions.ts +84 -0
  60. package/src/repositories/inventory-entry/index.ts +44 -0
  61. package/src/repositories/my-customer.ts +114 -0
  62. package/src/repositories/my-order.ts +8 -8
  63. package/src/repositories/order/actions.ts +281 -0
  64. package/src/repositories/{order.test.ts → order/index.test.ts} +77 -77
  65. package/src/repositories/order/index.ts +260 -0
  66. package/src/repositories/order-edit.ts +10 -23
  67. package/src/repositories/payment/actions.ts +305 -0
  68. package/src/repositories/payment/helpers.ts +17 -0
  69. package/src/repositories/payment/index.ts +56 -0
  70. package/src/repositories/product/actions.ts +943 -0
  71. package/src/repositories/product/helpers.ts +98 -0
  72. package/src/repositories/product/index.ts +130 -0
  73. package/src/repositories/product-discount.ts +127 -117
  74. package/src/repositories/product-projection.ts +56 -62
  75. package/src/repositories/product-selection.ts +31 -28
  76. package/src/repositories/product-type.ts +136 -134
  77. package/src/repositories/project.ts +133 -118
  78. package/src/repositories/quote-request.ts +7 -19
  79. package/src/repositories/quote.ts +7 -22
  80. package/src/repositories/review.ts +13 -26
  81. package/src/repositories/shipping-method/actions.ts +198 -0
  82. package/src/repositories/shipping-method/helpers.ts +10 -0
  83. package/src/repositories/shipping-method/index.ts +138 -0
  84. package/src/repositories/shopping-list/actions.ts +295 -0
  85. package/src/repositories/shopping-list/index.ts +122 -0
  86. package/src/repositories/staged-quote.ts +7 -20
  87. package/src/repositories/standalone-price.ts +57 -44
  88. package/src/repositories/state.ts +113 -68
  89. package/src/repositories/store.ts +106 -94
  90. package/src/repositories/subscription.ts +46 -22
  91. package/src/repositories/tax-category/actions.ts +94 -0
  92. package/src/repositories/tax-category/helpers.ts +8 -0
  93. package/src/repositories/tax-category/index.ts +25 -0
  94. package/src/repositories/type/actions.ts +162 -0
  95. package/src/repositories/type/index.ts +24 -0
  96. package/src/repositories/zone.ts +62 -58
  97. package/src/schemas/update-request.ts +12 -0
  98. package/src/server.ts +9 -9
  99. package/src/services/abstract.ts +85 -72
  100. package/src/services/associate-roles.test.ts +27 -27
  101. package/src/services/associate-roles.ts +7 -7
  102. package/src/services/attribute-group.ts +7 -7
  103. package/src/services/business-units.test.ts +28 -28
  104. package/src/services/business-units.ts +7 -7
  105. package/src/services/cart-discount.test.ts +199 -199
  106. package/src/services/cart-discount.ts +7 -7
  107. package/src/services/cart.test.ts +261 -261
  108. package/src/services/cart.ts +22 -21
  109. package/src/services/category.test.ts +121 -121
  110. package/src/services/category.ts +7 -7
  111. package/src/services/channel.ts +7 -7
  112. package/src/services/custom-object.test.ts +130 -130
  113. package/src/services/custom-object.ts +34 -31
  114. package/src/services/customer-group.ts +7 -7
  115. package/src/services/customer.test.ts +205 -205
  116. package/src/services/customer.ts +23 -36
  117. package/src/services/discount-code.ts +7 -7
  118. package/src/services/extension.ts +7 -7
  119. package/src/services/index.ts +85 -81
  120. package/src/services/inventory-entry.test.ts +106 -106
  121. package/src/services/inventory-entry.ts +7 -7
  122. package/src/services/my-cart.test.ts +56 -56
  123. package/src/services/my-cart.ts +20 -20
  124. package/src/services/my-customer.test.ts +155 -104
  125. package/src/services/my-customer.ts +66 -75
  126. package/src/services/my-order.ts +16 -16
  127. package/src/services/my-payment.test.ts +40 -40
  128. package/src/services/my-payment.ts +7 -7
  129. package/src/services/my-shopping-list.ts +7 -7
  130. package/src/services/order.test.ts +243 -243
  131. package/src/services/order.ts +23 -18
  132. package/src/services/payment.test.ts +40 -40
  133. package/src/services/payment.ts +7 -7
  134. package/src/services/product-discount.ts +7 -7
  135. package/src/services/product-projection.test.ts +190 -190
  136. package/src/services/product-projection.ts +34 -32
  137. package/src/services/product-selection.test.ts +19 -19
  138. package/src/services/product-selection.ts +7 -7
  139. package/src/services/product-type.test.ts +38 -38
  140. package/src/services/product-type.ts +7 -7
  141. package/src/services/product.test.ts +658 -656
  142. package/src/services/product.ts +7 -7
  143. package/src/services/project.test.ts +29 -24
  144. package/src/services/project.ts +22 -17
  145. package/src/services/reviews.ts +7 -7
  146. package/src/services/shipping-method.test.ts +78 -78
  147. package/src/services/shipping-method.ts +16 -16
  148. package/src/services/shopping-list.test.ts +170 -170
  149. package/src/services/shopping-list.ts +7 -7
  150. package/src/services/standalone-price.test.ts +112 -112
  151. package/src/services/standalone-price.ts +7 -7
  152. package/src/services/state.test.ts +30 -30
  153. package/src/services/state.ts +7 -7
  154. package/src/services/store.test.ts +40 -40
  155. package/src/services/store.ts +7 -7
  156. package/src/services/subscription.ts +7 -7
  157. package/src/services/tax-category.test.ts +43 -43
  158. package/src/services/tax-category.ts +7 -7
  159. package/src/services/type.ts +7 -7
  160. package/src/services/zone.ts +7 -7
  161. package/src/shippingCalculator.test.ts +43 -43
  162. package/src/shippingCalculator.ts +23 -23
  163. package/src/storage/abstract.ts +36 -34
  164. package/src/storage/in-memory.ts +237 -233
  165. package/src/storage/index.ts +2 -2
  166. package/src/types.ts +91 -91
  167. package/src/validate.ts +18 -0
  168. package/src/repositories/cart-discount.ts +0 -219
  169. package/src/repositories/cart.ts +0 -659
  170. package/src/repositories/category.ts +0 -256
  171. package/src/repositories/customer.ts +0 -228
  172. package/src/repositories/discount-code.ts +0 -181
  173. package/src/repositories/inventory-entry.ts +0 -109
  174. package/src/repositories/order.ts +0 -514
  175. package/src/repositories/payment.ts +0 -342
  176. package/src/repositories/product.ts +0 -1106
  177. package/src/repositories/shipping-method.ts +0 -312
  178. package/src/repositories/shopping-list.ts +0 -392
  179. package/src/repositories/tax-category.ts +0 -111
  180. package/src/repositories/type.ts +0 -172
@@ -1,176 +1,178 @@
1
- import type { ProductProjection } from '@commercetools/platform-sdk'
2
- import { describe, expect, test } from 'vitest'
3
- import { cloneObject } from '../helpers.js'
4
- import { applyPriceSelector } from '../priceSelector.js'
5
- import { parseFilterExpression } from './projectionSearchFilter.js'
1
+ import type { ProductProjection } from "@commercetools/platform-sdk";
2
+ import { describe, expect, test } from "vitest";
3
+ import { cloneObject } from "../helpers";
4
+ import { applyPriceSelector } from "../priceSelector";
5
+ import { parseFilterExpression } from "./projectionSearchFilter";
6
6
 
7
- describe('Search filter', () => {
7
+ describe("Search filter", () => {
8
8
  const exampleProduct: ProductProjection = {
9
- id: '7401d82f-1378-47ba-996a-85beeb87ac87',
9
+ id: "7401d82f-1378-47ba-996a-85beeb87ac87",
10
10
  version: 2,
11
- createdAt: '2022-07-22T10:02:40.851Z',
12
- lastModifiedAt: '2022-07-22T10:02:44.427Z',
13
- key: 'test-product',
11
+ createdAt: "2022-07-22T10:02:40.851Z",
12
+ lastModifiedAt: "2022-07-22T10:02:44.427Z",
13
+ key: "test-product",
14
14
  productType: {
15
- typeId: 'product-type',
16
- id: 'b9b4b426-938b-4ccb-9f36-c6f933e8446e',
15
+ typeId: "product-type",
16
+ id: "b9b4b426-938b-4ccb-9f36-c6f933e8446e",
17
17
  },
18
18
  name: {
19
- 'nl-NL': 'test',
19
+ "nl-NL": "test",
20
20
  },
21
21
  slug: {
22
- 'nl-NL': 'test',
22
+ "nl-NL": "test",
23
23
  },
24
24
  variants: [],
25
25
  searchKeywords: {},
26
26
  categories: [],
27
27
  masterVariant: {
28
28
  id: 1,
29
- sku: 'MYSKU',
29
+ sku: "MYSKU",
30
30
  attributes: [
31
31
  {
32
- name: 'Country',
32
+ name: "Country",
33
33
  value: {
34
- key: 'NL',
34
+ key: "NL",
35
35
  label: {
36
- de: 'niederlande',
37
- en: 'netherlands',
38
- nl: 'nederland',
36
+ de: "niederlande",
37
+ en: "netherlands",
38
+ nl: "nederland",
39
39
  },
40
40
  },
41
41
  },
42
42
  {
43
- name: 'number',
43
+ name: "number",
44
44
  value: 4,
45
45
  },
46
46
  ],
47
47
  prices: [
48
48
  {
49
- id: 'dummy-uuid',
49
+ id: "dummy-uuid",
50
50
  value: {
51
- type: 'centPrecision',
52
- currencyCode: 'EUR',
51
+ type: "centPrecision",
52
+ currencyCode: "EUR",
53
53
  centAmount: 1789,
54
54
  fractionDigits: 2,
55
55
  },
56
56
  },
57
57
  ],
58
58
  },
59
- }
59
+ };
60
60
 
61
61
  const match = (pattern: string, product?: ProductProjection) => {
62
- const matchFunc = parseFilterExpression(pattern)
63
- const clone = cloneObject(product ?? exampleProduct)
62
+ const matchFunc = parseFilterExpression(pattern);
63
+ const clone = cloneObject(product ?? exampleProduct);
64
64
  return {
65
65
  isMatch: matchFunc(clone, false),
66
66
  product: clone,
67
- }
68
- }
67
+ };
68
+ };
69
69
 
70
- test('by product key', async () => {
71
- expect(match(`key:exists`).isMatch).toBeTruthy()
72
- expect(match(`key:missing`).isMatch).toBeFalsy()
73
- expect(match(`key:"test-product"`).isMatch).toBeTruthy()
74
- })
70
+ test("by product key", async () => {
71
+ expect(match(`key:exists`).isMatch).toBeTruthy();
72
+ expect(match(`key:missing`).isMatch).toBeFalsy();
73
+ expect(match(`key:"test-product"`).isMatch).toBeTruthy();
74
+ });
75
75
 
76
- test('by product type id', async () => {
76
+ test("by product type id", async () => {
77
77
  expect(
78
- match(`productType.id:"b9b4b426-938b-4ccb-9f36-c6f933e8446e"`).isMatch
79
- ).toBeTruthy()
80
- })
81
-
82
- test('by SKU', async () => {
83
- expect(match(`variants.sku:exists`).isMatch).toBeTruthy()
84
- expect(match(`variants.sku:missing`).isMatch).toBeFalsy()
85
- expect(match(`variants.sku:"MYSKU"`).isMatch).toBeTruthy()
86
- })
87
-
88
- test('by attribute value', async () => {
89
- expect(match(`variants.attributes.number:4`).isMatch).toBeTruthy()
90
- expect(match(`variants.attributes.number:3,4`).isMatch).toBeTruthy()
91
- expect(match(`variants.attributes.number:3,4,5`).isMatch).toBeTruthy()
92
- expect(match(`variants.attributes.number:1,2,3,5`).isMatch).toBeFalsy()
93
- })
94
-
95
- test('by attribute range', async () => {
78
+ match(`productType.id:"b9b4b426-938b-4ccb-9f36-c6f933e8446e"`).isMatch,
79
+ ).toBeTruthy();
80
+ });
81
+
82
+ test("by SKU", async () => {
83
+ expect(match(`variants.sku:exists`).isMatch).toBeTruthy();
84
+ expect(match(`variants.sku:missing`).isMatch).toBeFalsy();
85
+ expect(match(`variants.sku:"MYSKU"`).isMatch).toBeTruthy();
86
+ });
87
+
88
+ test("by attribute value", async () => {
89
+ expect(match(`variants.attributes.number:4`).isMatch).toBeTruthy();
90
+ expect(match(`variants.attributes.number:3,4`).isMatch).toBeTruthy();
91
+ expect(match(`variants.attributes.number:3,4,5`).isMatch).toBeTruthy();
92
+ expect(match(`variants.attributes.number:1,2,3,5`).isMatch).toBeFalsy();
93
+ });
94
+
95
+ test("by attribute range", async () => {
96
96
  expect(
97
- match(`variants.attributes.number:range (0 TO 5)`).isMatch
98
- ).toBeTruthy()
97
+ match(`variants.attributes.number:range (0 TO 5)`).isMatch,
98
+ ).toBeTruthy();
99
99
 
100
100
  expect(
101
- match(`variants.attributes.number:range (* TO 5)`).isMatch
102
- ).toBeTruthy()
101
+ match(`variants.attributes.number:range (* TO 5)`).isMatch,
102
+ ).toBeTruthy();
103
103
 
104
104
  expect(
105
- match(`variants.attributes.number:range (* TO *)`).isMatch
106
- ).toBeTruthy()
107
- })
105
+ match(`variants.attributes.number:range (* TO *)`).isMatch,
106
+ ).toBeTruthy();
107
+ });
108
108
 
109
- test('by attribute enum key', async () => {
110
- expect(match(`variants.attributes.Country.key:"NL"`).isMatch).toBeTruthy()
111
- expect(match(`variants.attributes.Country.key:"DE"`).isMatch).toBeFalsy()
112
- })
109
+ test("by attribute enum key", async () => {
110
+ expect(match(`variants.attributes.Country.key:"NL"`).isMatch).toBeTruthy();
111
+ expect(match(`variants.attributes.Country.key:"DE"`).isMatch).toBeFalsy();
112
+ });
113
113
 
114
- test('by attribute enum key', async () => {
115
- expect(match(`variants.attributes.Country.key:"NL"`).isMatch).toBeTruthy()
116
- expect(match(`variants.attributes.Country.key:"DE"`).isMatch).toBeFalsy()
117
- })
114
+ test("by attribute enum key", async () => {
115
+ expect(match(`variants.attributes.Country.key:"NL"`).isMatch).toBeTruthy();
116
+ expect(match(`variants.attributes.Country.key:"DE"`).isMatch).toBeFalsy();
117
+ });
118
118
 
119
- test('by price range', async () => {
119
+ test("by price range", async () => {
120
120
  expect(
121
- match(`variants.price.centAmount:range (1500 TO 2000)`).isMatch
122
- ).toBeTruthy()
123
- })
121
+ match(`variants.price.centAmount:range (1500 TO 2000)`).isMatch,
122
+ ).toBeTruthy();
123
+ });
124
124
 
125
- test('by price range - or', async () => {
125
+ test("by price range - or", async () => {
126
126
  expect(
127
127
  match(
128
- `variants.price.centAmount:range (2 TO 1500 ), (1500 TO 3000), (3000 TO 6000)`
129
- ).isMatch
130
- ).toBeTruthy()
131
- })
128
+ `variants.price.centAmount:range (2 TO 1500 ), (1500 TO 3000), (3000 TO 6000)`,
129
+ ).isMatch,
130
+ ).toBeTruthy();
131
+ });
132
132
 
133
- test('by scopedPrice range', async () => {
134
- let result
135
- let products: ProductProjection[]
133
+ test("by scopedPrice range", async () => {
134
+ let result;
135
+ let products: ProductProjection[];
136
136
 
137
137
  // No currency given
138
- result = match(`variants.scopedPrice.value.centAmount:range (1500 TO 2000)`)
139
- expect(result.isMatch).toBeFalsy()
138
+ result = match(
139
+ `variants.scopedPrice.value.centAmount:range (1500 TO 2000)`,
140
+ );
141
+ expect(result.isMatch).toBeFalsy();
140
142
 
141
143
  // Currency match
142
- products = [cloneObject(exampleProduct)]
143
- applyPriceSelector(products, { currency: 'EUR' })
144
+ products = [cloneObject(exampleProduct)];
145
+ applyPriceSelector(products, { currency: "EUR" });
144
146
 
145
147
  result = match(
146
148
  `variants.scopedPrice.value.centAmount:range (1500 TO 2000)`,
147
- products[0]
148
- )
149
- expect(result.isMatch).toBeTruthy()
149
+ products[0],
150
+ );
151
+ expect(result.isMatch).toBeTruthy();
150
152
  expect(result.product).toMatchObject({
151
153
  masterVariant: {
152
- sku: 'MYSKU',
154
+ sku: "MYSKU",
153
155
  scopedPrice: { value: { centAmount: 1789 } },
154
156
  },
155
- })
157
+ });
156
158
 
157
159
  // Currency mismatch
158
- products = [cloneObject(exampleProduct)]
159
- applyPriceSelector(products, { currency: 'USD' })
160
+ products = [cloneObject(exampleProduct)];
161
+ applyPriceSelector(products, { currency: "USD" });
160
162
 
161
163
  result = match(
162
164
  `variants.scopedPrice.value.centAmount:range (1500 TO 2000)`,
163
- products[0]
164
- )
165
- expect(result.isMatch).toBeFalsy()
165
+ products[0],
166
+ );
167
+ expect(result.isMatch).toBeFalsy();
166
168
 
167
169
  // Price has no country so mismatch
168
- products = [cloneObject(exampleProduct)]
169
- applyPriceSelector(products, { currency: 'EUR', country: 'NL' })
170
+ products = [cloneObject(exampleProduct)];
171
+ applyPriceSelector(products, { currency: "EUR", country: "NL" });
170
172
  result = match(
171
173
  `variants.scopedPrice.value.centAmount:range (1500 TO 2000)`,
172
- products[0]
173
- )
174
- expect(result.isMatch).toBeFalsy()
175
- })
176
- })
174
+ products[0],
175
+ );
176
+ expect(result.isMatch).toBeFalsy();
177
+ });
178
+ });