@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,111 +0,0 @@
1
- import type {
2
- TaxCategory,
3
- TaxCategoryAddTaxRateAction,
4
- TaxCategoryChangeNameAction,
5
- TaxCategoryDraft,
6
- TaxCategoryRemoveTaxRateAction,
7
- TaxCategoryReplaceTaxRateAction,
8
- TaxCategorySetDescriptionAction,
9
- TaxCategorySetKeyAction,
10
- TaxCategoryUpdateAction,
11
- TaxRate,
12
- TaxRateDraft,
13
- } from '@commercetools/platform-sdk'
14
- import { v4 as uuidv4 } from 'uuid'
15
- import { getBaseResourceProperties } from '../helpers.js'
16
- import type { Writable } from '../types.js'
17
- import { AbstractResourceRepository, RepositoryContext } from './abstract.js'
18
-
19
- export class TaxCategoryRepository extends AbstractResourceRepository<'tax-category'> {
20
- getTypeId() {
21
- return 'tax-category' as const
22
- }
23
-
24
- create(context: RepositoryContext, draft: TaxCategoryDraft): TaxCategory {
25
- const resource: TaxCategory = {
26
- ...getBaseResourceProperties(),
27
- ...draft,
28
- rates: draft.rates?.map(this.taxRateFromTaxRateDraft) || [],
29
- }
30
- this.saveNew(context, resource)
31
- return resource
32
- }
33
-
34
- private taxRateFromTaxRateDraft = (draft: TaxRateDraft): TaxRate => ({
35
- ...draft,
36
- id: uuidv4(),
37
- amount: draft.amount || 0,
38
- })
39
-
40
- actions: Partial<
41
- Record<
42
- TaxCategoryUpdateAction['action'],
43
- (
44
- context: RepositoryContext,
45
- resource: Writable<TaxCategory>,
46
- action: any
47
- ) => void
48
- >
49
- > = {
50
- addTaxRate: (
51
- context: RepositoryContext,
52
- resource: Writable<TaxCategory>,
53
- { taxRate }: TaxCategoryAddTaxRateAction
54
- ) => {
55
- if (resource.rates === undefined) {
56
- resource.rates = []
57
- }
58
- resource.rates.push(this.taxRateFromTaxRateDraft(taxRate))
59
- },
60
- removeTaxRate: (
61
- context: RepositoryContext,
62
- resource: Writable<TaxCategory>,
63
- { taxRateId }: TaxCategoryRemoveTaxRateAction
64
- ) => {
65
- if (resource.rates === undefined) {
66
- resource.rates = []
67
- }
68
- resource.rates = resource.rates.filter(
69
- (taxRate) => taxRate.id !== taxRateId
70
- )
71
- },
72
- replaceTaxRate: (
73
- context: RepositoryContext,
74
- resource: Writable<TaxCategory>,
75
- { taxRateId, taxRate }: TaxCategoryReplaceTaxRateAction
76
- ) => {
77
- if (resource.rates === undefined) {
78
- resource.rates = []
79
- }
80
-
81
- const taxRateObj = this.taxRateFromTaxRateDraft(taxRate)
82
- for (let i = 0; i < resource.rates.length; i++) {
83
- const rate = resource.rates[i]
84
- if (rate.id === taxRateId) {
85
- resource.rates[i] = taxRateObj
86
- }
87
- }
88
- },
89
- setDescription: (
90
- context: RepositoryContext,
91
- resource: Writable<TaxCategory>,
92
- { description }: TaxCategorySetDescriptionAction
93
- ) => {
94
- resource.description = description
95
- },
96
- setKey: (
97
- context: RepositoryContext,
98
- resource: Writable<TaxCategory>,
99
- { key }: TaxCategorySetKeyAction
100
- ) => {
101
- resource.key = key
102
- },
103
- changeName: (
104
- context: RepositoryContext,
105
- resource: Writable<TaxCategory>,
106
- { name }: TaxCategoryChangeNameAction
107
- ) => {
108
- resource.name = name
109
- },
110
- }
111
- }
@@ -1,172 +0,0 @@
1
- import type {
2
- FieldDefinition,
3
- InvalidOperationError,
4
- Type,
5
- TypeAddEnumValueAction,
6
- TypeAddFieldDefinitionAction,
7
- TypeChangeEnumValueLabelAction,
8
- TypeChangeFieldDefinitionOrderAction,
9
- TypeChangeNameAction,
10
- TypeDraft,
11
- TypeRemoveFieldDefinitionAction,
12
- TypeSetDescriptionAction,
13
- TypeUpdateAction,
14
- } from '@commercetools/platform-sdk'
15
- import isEqual from 'lodash.isequal'
16
- import { CommercetoolsError } from '../exceptions.js'
17
- import { getBaseResourceProperties } from '../helpers.js'
18
- import type { Writable } from '../types.js'
19
- import { AbstractResourceRepository, RepositoryContext } from './abstract.js'
20
-
21
- export class TypeRepository extends AbstractResourceRepository<'type'> {
22
- getTypeId() {
23
- return 'type' as const
24
- }
25
-
26
- create(context: RepositoryContext, draft: TypeDraft): Type {
27
- const resource: Type = {
28
- ...getBaseResourceProperties(),
29
- key: draft.key,
30
- name: draft.name,
31
- resourceTypeIds: draft.resourceTypeIds,
32
- fieldDefinitions: draft.fieldDefinitions || [],
33
- description: draft.description,
34
- }
35
- this.saveNew(context, resource)
36
- return resource
37
- }
38
- actions: Partial<
39
- Record<
40
- TypeUpdateAction['action'],
41
- (
42
- context: RepositoryContext,
43
- resource: Writable<Type>,
44
- action: any
45
- ) => void
46
- >
47
- > = {
48
- addFieldDefinition: (
49
- context: RepositoryContext,
50
- resource: Writable<Type>,
51
- { fieldDefinition }: TypeAddFieldDefinitionAction
52
- ) => {
53
- resource.fieldDefinitions.push(fieldDefinition)
54
- },
55
- removeFieldDefinition: (
56
- context: RepositoryContext,
57
- resource: Writable<Type>,
58
- { fieldName }: TypeRemoveFieldDefinitionAction
59
- ) => {
60
- resource.fieldDefinitions = resource.fieldDefinitions.filter(
61
- (f) => f.name !== fieldName
62
- )
63
- },
64
- setDescription: (
65
- context: RepositoryContext,
66
- resource: Writable<Type>,
67
- { description }: TypeSetDescriptionAction
68
- ) => {
69
- resource.description = description
70
- },
71
- changeName: (
72
- context: RepositoryContext,
73
- resource: Writable<Type>,
74
- { name }: TypeChangeNameAction
75
- ) => {
76
- resource.name = name
77
- },
78
- changeFieldDefinitionOrder: (
79
- context: RepositoryContext,
80
- resource: Writable<Type>,
81
- { fieldNames }: TypeChangeFieldDefinitionOrderAction
82
- ) => {
83
- const fields = new Map(
84
- resource.fieldDefinitions.map((item) => [item.name, item])
85
- )
86
- const result: FieldDefinition[] = []
87
- let current = resource.fieldDefinitions
88
-
89
- fieldNames.forEach((fieldName) => {
90
- const field = fields.get(fieldName)
91
- if (field === undefined) {
92
- throw new Error('New field')
93
- }
94
- result.push(field)
95
-
96
- // Remove from current items
97
- current = current.filter((f) => f.name !== fieldName)
98
- })
99
-
100
- if (
101
- isEqual(
102
- fieldNames,
103
- resource.fieldDefinitions.map((item) => item.name)
104
- )
105
- ) {
106
- throw new CommercetoolsError<InvalidOperationError>({
107
- code: 'InvalidOperation',
108
- message: "'fieldDefinitions' has no changes.",
109
- action: {
110
- action: 'changeFieldDefinitionOrder',
111
- fieldNames: fieldNames,
112
- },
113
- })
114
- }
115
-
116
- resource.fieldDefinitions = result
117
- // Add fields which were not specified in the order as last items. Not
118
- // sure if this follows commercetools
119
- resource.fieldDefinitions.push(...current)
120
- },
121
- addEnumValue: (
122
- context: RepositoryContext,
123
- resource: Writable<Type>,
124
- { fieldName, value }: TypeAddEnumValueAction
125
- ) => {
126
- resource.fieldDefinitions.forEach((field) => {
127
- if (field.name === fieldName) {
128
- // TODO, should be done better i suppose
129
- if (field.type.name === 'Enum') {
130
- field.type.values.push(value)
131
- } else if (
132
- field.type.name === 'Set' &&
133
- field.type.elementType.name === 'Enum'
134
- ) {
135
- field.type.elementType.values.push(value)
136
- } else {
137
- throw new Error('Type is not a Enum (or Set of Enum)')
138
- }
139
- }
140
- })
141
- },
142
- changeEnumValueLabel: (
143
- context: RepositoryContext,
144
- resource: Writable<Type>,
145
- { fieldName, value }: TypeChangeEnumValueLabelAction
146
- ) => {
147
- resource.fieldDefinitions.forEach((field) => {
148
- if (field.name === fieldName) {
149
- // TODO, should be done better i suppose
150
- if (field.type.name === 'Enum') {
151
- field.type.values.forEach((v) => {
152
- if (v.key === value.key) {
153
- v.label = value.label
154
- }
155
- })
156
- } else if (
157
- field.type.name === 'Set' &&
158
- field.type.elementType.name === 'Enum'
159
- ) {
160
- field.type.elementType.values.forEach((v) => {
161
- if (v.key === value.key) {
162
- v.label = value.label
163
- }
164
- })
165
- } else {
166
- throw new Error('Type is not a Enum (or Set of Enum)')
167
- }
168
- }
169
- })
170
- },
171
- }
172
- }