@labdigital/commercetools-mock 2.17.0 → 2.18.0

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 (178) hide show
  1. package/dist/index.cjs +4219 -3989
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +268 -415
  4. package/dist/index.d.ts +268 -415
  5. package/dist/index.js +4219 -3989
  6. package/dist/index.js.map +1 -1
  7. package/package.json +44 -46
  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 +110 -67
  30. package/src/oauth/server.ts +161 -141
  31. package/src/oauth/store.ts +49 -44
  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/server.ts +9 -9
  98. package/src/services/abstract.ts +75 -72
  99. package/src/services/associate-roles.test.ts +27 -27
  100. package/src/services/associate-roles.ts +7 -7
  101. package/src/services/attribute-group.ts +7 -7
  102. package/src/services/business-units.test.ts +28 -28
  103. package/src/services/business-units.ts +7 -7
  104. package/src/services/cart-discount.test.ts +199 -199
  105. package/src/services/cart-discount.ts +7 -7
  106. package/src/services/cart.test.ts +261 -261
  107. package/src/services/cart.ts +22 -21
  108. package/src/services/category.test.ts +121 -121
  109. package/src/services/category.ts +7 -7
  110. package/src/services/channel.ts +7 -7
  111. package/src/services/custom-object.test.ts +130 -130
  112. package/src/services/custom-object.ts +34 -31
  113. package/src/services/customer-group.ts +7 -7
  114. package/src/services/customer.test.ts +205 -205
  115. package/src/services/customer.ts +31 -29
  116. package/src/services/discount-code.ts +7 -7
  117. package/src/services/extension.ts +7 -7
  118. package/src/services/index.ts +85 -81
  119. package/src/services/inventory-entry.test.ts +106 -106
  120. package/src/services/inventory-entry.ts +7 -7
  121. package/src/services/my-cart.test.ts +56 -56
  122. package/src/services/my-cart.ts +20 -20
  123. package/src/services/my-customer.test.ts +155 -104
  124. package/src/services/my-customer.ts +61 -75
  125. package/src/services/my-order.ts +16 -16
  126. package/src/services/my-payment.test.ts +40 -40
  127. package/src/services/my-payment.ts +7 -7
  128. package/src/services/my-shopping-list.ts +7 -7
  129. package/src/services/order.test.ts +243 -243
  130. package/src/services/order.ts +23 -18
  131. package/src/services/payment.test.ts +40 -40
  132. package/src/services/payment.ts +7 -7
  133. package/src/services/product-discount.ts +7 -7
  134. package/src/services/product-projection.test.ts +190 -190
  135. package/src/services/product-projection.ts +34 -32
  136. package/src/services/product-selection.test.ts +19 -19
  137. package/src/services/product-selection.ts +7 -7
  138. package/src/services/product-type.test.ts +38 -38
  139. package/src/services/product-type.ts +7 -7
  140. package/src/services/product.test.ts +658 -656
  141. package/src/services/product.ts +7 -7
  142. package/src/services/project.test.ts +24 -24
  143. package/src/services/project.ts +17 -17
  144. package/src/services/reviews.ts +7 -7
  145. package/src/services/shipping-method.test.ts +78 -78
  146. package/src/services/shipping-method.ts +16 -16
  147. package/src/services/shopping-list.test.ts +170 -170
  148. package/src/services/shopping-list.ts +7 -7
  149. package/src/services/standalone-price.test.ts +112 -112
  150. package/src/services/standalone-price.ts +7 -7
  151. package/src/services/state.test.ts +30 -30
  152. package/src/services/state.ts +7 -7
  153. package/src/services/store.test.ts +40 -40
  154. package/src/services/store.ts +7 -7
  155. package/src/services/subscription.ts +7 -7
  156. package/src/services/tax-category.test.ts +43 -43
  157. package/src/services/tax-category.ts +7 -7
  158. package/src/services/type.ts +7 -7
  159. package/src/services/zone.ts +7 -7
  160. package/src/shippingCalculator.test.ts +43 -43
  161. package/src/shippingCalculator.ts +23 -23
  162. package/src/storage/abstract.ts +36 -34
  163. package/src/storage/in-memory.ts +237 -233
  164. package/src/storage/index.ts +2 -2
  165. package/src/types.ts +91 -91
  166. package/src/repositories/cart-discount.ts +0 -219
  167. package/src/repositories/cart.ts +0 -659
  168. package/src/repositories/category.ts +0 -256
  169. package/src/repositories/customer.ts +0 -228
  170. package/src/repositories/discount-code.ts +0 -181
  171. package/src/repositories/inventory-entry.ts +0 -109
  172. package/src/repositories/order.ts +0 -514
  173. package/src/repositories/payment.ts +0 -342
  174. package/src/repositories/product.ts +0 -1106
  175. package/src/repositories/shipping-method.ts +0 -312
  176. package/src/repositories/shopping-list.ts +0 -392
  177. package/src/repositories/tax-category.ts +0 -111
  178. 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
- }