@labdigital/commercetools-mock 0.6.1 → 0.6.4

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 (81) hide show
  1. package/dist/commercetools-mock.cjs.development.js +365 -332
  2. package/dist/commercetools-mock.cjs.development.js.map +1 -1
  3. package/dist/commercetools-mock.cjs.production.min.js +1 -1
  4. package/dist/commercetools-mock.cjs.production.min.js.map +1 -1
  5. package/dist/commercetools-mock.esm.js +365 -332
  6. package/dist/commercetools-mock.esm.js.map +1 -1
  7. package/dist/projectAPI.d.ts +1 -1
  8. package/dist/repositories/abstract.d.ts +13 -9
  9. package/dist/repositories/cart-discount.d.ts +3 -3
  10. package/dist/repositories/cart.d.ts +12 -12
  11. package/dist/repositories/category.d.ts +11 -11
  12. package/dist/repositories/channel.d.ts +2 -2
  13. package/dist/repositories/custom-object.d.ts +3 -3
  14. package/dist/repositories/customer-group.d.ts +4 -4
  15. package/dist/repositories/customer.d.ts +4 -4
  16. package/dist/repositories/discount-code.d.ts +3 -3
  17. package/dist/repositories/extension.d.ts +3 -3
  18. package/dist/repositories/helpers.d.ts +3 -0
  19. package/dist/repositories/inventory-entry.d.ts +7 -7
  20. package/dist/repositories/my-order.d.ts +6 -0
  21. package/dist/repositories/order.d.ts +18 -17
  22. package/dist/repositories/payment.d.ts +8 -8
  23. package/dist/repositories/product-projection.d.ts +3 -3
  24. package/dist/repositories/product-type.d.ts +5 -5
  25. package/dist/repositories/product.d.ts +4 -4
  26. package/dist/repositories/project.d.ts +4 -4
  27. package/dist/repositories/shipping-method.d.ts +3 -3
  28. package/dist/repositories/shopping-list.d.ts +2 -2
  29. package/dist/repositories/state.d.ts +3 -3
  30. package/dist/repositories/store.d.ts +4 -4
  31. package/dist/repositories/subscription.d.ts +2 -2
  32. package/dist/repositories/tax-category.d.ts +4 -4
  33. package/dist/repositories/type.d.ts +3 -3
  34. package/dist/repositories/zone.d.ts +3 -3
  35. package/dist/services/my-order.d.ts +2 -2
  36. package/dist/storage.d.ts +1 -1
  37. package/package.json +1 -1
  38. package/src/ctMock.ts +6 -0
  39. package/src/projectAPI.ts +1 -1
  40. package/src/repositories/abstract.ts +37 -17
  41. package/src/repositories/cart-discount.ts +11 -11
  42. package/src/repositories/cart.ts +28 -19
  43. package/src/repositories/category.ts +17 -13
  44. package/src/repositories/channel.ts +3 -3
  45. package/src/repositories/custom-object.ts +16 -8
  46. package/src/repositories/customer-group.ts +5 -5
  47. package/src/repositories/customer.ts +10 -6
  48. package/src/repositories/discount-code.ts +14 -14
  49. package/src/repositories/errors.ts +3 -3
  50. package/src/repositories/extension.ts +12 -8
  51. package/src/repositories/helpers.ts +9 -0
  52. package/src/repositories/inventory-entry.ts +17 -10
  53. package/src/repositories/my-order.ts +19 -0
  54. package/src/repositories/order.test.ts +79 -3
  55. package/src/repositories/order.ts +77 -37
  56. package/src/repositories/payment.ts +21 -17
  57. package/src/repositories/product-projection.ts +5 -5
  58. package/src/repositories/product-type.ts +14 -10
  59. package/src/repositories/product.ts +5 -5
  60. package/src/repositories/project.ts +21 -17
  61. package/src/repositories/shipping-method.ts +27 -20
  62. package/src/repositories/shopping-list.ts +10 -6
  63. package/src/repositories/state.ts +13 -9
  64. package/src/repositories/store.ts +18 -14
  65. package/src/repositories/subscription.ts +3 -3
  66. package/src/repositories/tax-category.ts +16 -12
  67. package/src/repositories/type.ts +15 -11
  68. package/src/repositories/zone.ts +13 -9
  69. package/src/services/abstract.ts +17 -9
  70. package/src/services/cart.ts +6 -12
  71. package/src/services/custom-object.ts +8 -4
  72. package/src/services/customer.ts +5 -2
  73. package/src/services/my-customer.ts +7 -3
  74. package/src/services/my-order.ts +3 -3
  75. package/src/services/order.ts +3 -2
  76. package/src/services/product-projection.ts +2 -1
  77. package/src/services/product-type.ts +2 -1
  78. package/src/services/project.ts +4 -4
  79. package/src/services/store.ts +2 -1
  80. package/src/services/tax-category.ts +2 -1
  81. package/src/storage.ts +1 -1
@@ -22,20 +22,30 @@ export type GetParams = {
22
22
  expand?: string[]
23
23
  }
24
24
 
25
+ export type RepositoryContext = {
26
+ projectKey: string
27
+ storeKey?: string
28
+ }
25
29
  export abstract class AbstractRepository {
26
30
  protected _storage: AbstractStorage
27
31
  protected actions: Partial<
28
- Record<any, (projectKey: string, resource: any, action: any) => void>
32
+ Record<
33
+ any,
34
+ (context: RepositoryContext, resource: any, action: any) => void
35
+ >
29
36
  > = {}
30
37
 
31
38
  constructor(storage: AbstractStorage) {
32
39
  this._storage = storage
33
40
  }
34
41
 
35
- abstract save(projectKey: string, resource: BaseResource | Project): void
42
+ abstract save(
43
+ { projectKey }: RepositoryContext,
44
+ resource: BaseResource | Project
45
+ ): void
36
46
 
37
47
  processUpdateActions(
38
- projectKey: string,
48
+ context: RepositoryContext,
39
49
  resource: BaseResource | Project,
40
50
  actions: UpdateAction[]
41
51
  ): BaseResource {
@@ -49,18 +59,18 @@ export abstract class AbstractRepository {
49
59
  console.error(`No mock implemented for update action ${action.action}`)
50
60
  return
51
61
  }
52
- updateFunc(projectKey, modifiedResource, action)
62
+ updateFunc(context, modifiedResource, action)
53
63
  })
54
64
 
55
65
  if (!deepEqual(modifiedResource, resource)) {
56
- this.save(projectKey, modifiedResource)
66
+ this.save(context, modifiedResource)
57
67
  }
58
68
  return modifiedResource
59
69
  }
60
70
  }
61
71
 
62
72
  export abstract class AbstractResourceRepository extends AbstractRepository {
63
- abstract create(projectKey: string, draft: any): BaseResource
73
+ abstract create(context: RepositoryContext, draft: any): BaseResource
64
74
  abstract getTypeId(): RepositoryTypes
65
75
 
66
76
  constructor(storage: AbstractStorage) {
@@ -68,8 +78,8 @@ export abstract class AbstractResourceRepository extends AbstractRepository {
68
78
  this._storage.assertStorage(this.getTypeId())
69
79
  }
70
80
 
71
- query(projectKey: string, params: QueryParams = {}) {
72
- return this._storage.query(projectKey, this.getTypeId(), {
81
+ query(context: RepositoryContext, params: QueryParams = {}) {
82
+ return this._storage.query(context.projectKey, this.getTypeId(), {
73
83
  expand: params.expand,
74
84
  where: params.where,
75
85
  offset: params.offset,
@@ -78,31 +88,41 @@ export abstract class AbstractResourceRepository extends AbstractRepository {
78
88
  }
79
89
 
80
90
  get(
81
- projectKey: string,
91
+ context: RepositoryContext,
82
92
  id: string,
83
93
  params: GetParams = {}
84
94
  ): BaseResource | null {
85
- return this._storage.get(projectKey, this.getTypeId(), id, params)
95
+ return this._storage.get(context.projectKey, this.getTypeId(), id, params)
86
96
  }
87
97
 
88
98
  getByKey(
89
- projectKey: string,
99
+ context: RepositoryContext,
90
100
  key: string,
91
101
  params: GetParams = {}
92
102
  ): BaseResource | null {
93
- return this._storage.getByKey(projectKey, this.getTypeId(), key, params)
103
+ return this._storage.getByKey(
104
+ context.projectKey,
105
+ this.getTypeId(),
106
+ key,
107
+ params
108
+ )
94
109
  }
95
110
 
96
111
  delete(
97
- projectKey: string,
112
+ context: RepositoryContext,
98
113
  id: string,
99
114
  params: GetParams = {}
100
115
  ): BaseResource | null {
101
- return this._storage.delete(projectKey, this.getTypeId(), id, params)
116
+ return this._storage.delete(
117
+ context.projectKey,
118
+ this.getTypeId(),
119
+ id,
120
+ params
121
+ )
102
122
  }
103
123
 
104
- save(projectKey: string, resource: BaseResource) {
105
- const current = this.get(projectKey, resource.id)
124
+ save(context: RepositoryContext, resource: BaseResource) {
125
+ const current = this.get(context, resource.id)
106
126
 
107
127
  if (current) {
108
128
  checkConcurrentModification(current, resource.version)
@@ -120,6 +140,6 @@ export abstract class AbstractResourceRepository extends AbstractRepository {
120
140
 
121
141
  // @ts-ignore
122
142
  resource.version += 1
123
- this._storage.add(projectKey, this.getTypeId(), resource as any)
143
+ this._storage.add(context.projectKey, this.getTypeId(), resource as any)
124
144
  }
125
145
  }
@@ -18,7 +18,7 @@ import {
18
18
  } from '@commercetools/platform-sdk'
19
19
  import { Writable } from 'types'
20
20
  import { getBaseResourceProperties } from '../helpers'
21
- import { AbstractResourceRepository } from './abstract'
21
+ import { AbstractResourceRepository, RepositoryContext } from './abstract'
22
22
  import { createTypedMoney } from './helpers'
23
23
 
24
24
  export class CartDiscountRepository extends AbstractResourceRepository {
@@ -26,7 +26,7 @@ export class CartDiscountRepository extends AbstractResourceRepository {
26
26
  return 'cart-discount'
27
27
  }
28
28
 
29
- create(projectKey: string, draft: CartDiscountDraft): CartDiscount {
29
+ create(context: RepositoryContext, draft: CartDiscountDraft): CartDiscount {
30
30
  const resource: CartDiscount = {
31
31
  ...getBaseResourceProperties(),
32
32
  key: draft.key,
@@ -43,7 +43,7 @@ export class CartDiscountRepository extends AbstractResourceRepository {
43
43
  validUntil: draft.validUntil,
44
44
  value: this.transformValueDraft(draft.value),
45
45
  }
46
- this.save(projectKey, resource)
46
+ this.save(context, resource)
47
47
  return resource
48
48
  }
49
49
 
@@ -80,42 +80,42 @@ export class CartDiscountRepository extends AbstractResourceRepository {
80
80
  Record<
81
81
  CartDiscountUpdateAction['action'],
82
82
  (
83
- projectKey: string,
83
+ context: RepositoryContext,
84
84
  resource: Writable<CartDiscount>,
85
85
  action: any
86
86
  ) => void
87
87
  >
88
88
  > = {
89
89
  setKey: (
90
- projectKey: string,
90
+ context: RepositoryContext,
91
91
  resource: Writable<CartDiscount>,
92
92
  { key }: CartDiscountSetKeyAction
93
93
  ) => {
94
94
  resource.key = key
95
95
  },
96
96
  setDescription: (
97
- projectKey: string,
97
+ context: RepositoryContext,
98
98
  resource: Writable<CartDiscount>,
99
99
  { description }: CartDiscountSetDescriptionAction
100
100
  ) => {
101
101
  resource.description = description
102
102
  },
103
103
  setValidFrom: (
104
- projectKey: string,
104
+ context: RepositoryContext,
105
105
  resource: Writable<CartDiscount>,
106
106
  { validFrom }: CartDiscountSetValidFromAction
107
107
  ) => {
108
108
  resource.validFrom = validFrom
109
109
  },
110
110
  setValidUntil: (
111
- projectKey: string,
111
+ context: RepositoryContext,
112
112
  resource: Writable<CartDiscount>,
113
113
  { validUntil }: CartDiscountSetValidUntilAction
114
114
  ) => {
115
115
  resource.validUntil = validUntil
116
116
  },
117
117
  setValidFromAndUntil: (
118
- projectKey: string,
118
+ context: RepositoryContext,
119
119
  resource: Writable<CartDiscount>,
120
120
  { validFrom, validUntil }: CartDiscountSetValidFromAndUntilAction
121
121
  ) => {
@@ -123,14 +123,14 @@ export class CartDiscountRepository extends AbstractResourceRepository {
123
123
  resource.validUntil = validUntil
124
124
  },
125
125
  changeSortOrder: (
126
- projectKey: string,
126
+ context: RepositoryContext,
127
127
  resource: Writable<CartDiscount>,
128
128
  { sortOrder }: CartDiscountChangeSortOrderAction
129
129
  ) => {
130
130
  resource.sortOrder = sortOrder
131
131
  },
132
132
  changeIsActive: (
133
- projectKey: string,
133
+ context: RepositoryContext,
134
134
  resource: Writable<CartDiscount>,
135
135
  { isActive }: CartDiscountChangeIsActiveAction
136
136
  ) => {
@@ -22,7 +22,7 @@ import {
22
22
  } from '@commercetools/platform-sdk'
23
23
  import { v4 as uuidv4 } from 'uuid'
24
24
  import { getBaseResourceProperties } from '../helpers'
25
- import { AbstractResourceRepository } from './abstract'
25
+ import { AbstractResourceRepository, RepositoryContext } from './abstract'
26
26
  import { createCustomFields } from './helpers'
27
27
  import { Writable } from '../types'
28
28
  import { CommercetoolsError } from '../exceptions'
@@ -32,11 +32,11 @@ export class CartRepository extends AbstractResourceRepository {
32
32
  return 'cart'
33
33
  }
34
34
 
35
- create(projectKey: string, draft: CartDraft): Cart {
35
+ create(context: RepositoryContext, draft: CartDraft): Cart {
36
36
  const lineItems =
37
37
  draft.lineItems?.map(draftLineItem =>
38
38
  this.draftLineItemtoLineItem(
39
- projectKey,
39
+ context.projectKey,
40
40
  draftLineItem,
41
41
  draft.currency,
42
42
  draft.country
@@ -61,13 +61,17 @@ export class CartRepository extends AbstractResourceRepository {
61
61
  locale: draft.locale,
62
62
  country: draft.country,
63
63
  origin: draft.origin ?? 'Customer',
64
- custom: createCustomFields(draft.custom, projectKey, this._storage),
64
+ custom: createCustomFields(
65
+ draft.custom,
66
+ context.projectKey,
67
+ this._storage
68
+ ),
65
69
  }
66
70
 
67
71
  // @ts-ignore
68
72
  resource.totalPrice.centAmount = calculateCartTotalPrice(resource)
69
73
 
70
- this.save(projectKey, resource)
74
+ this.save(context, resource)
71
75
  return resource
72
76
  }
73
77
 
@@ -85,7 +89,7 @@ export class CartRepository extends AbstractResourceRepository {
85
89
 
86
90
  actions = {
87
91
  addLineItem: (
88
- projectKey: string,
92
+ context: RepositoryContext,
89
93
  resource: Writable<Cart>,
90
94
  { productId, variantId, sku, quantity = 1 }: CartAddLineItemAction
91
95
  ) => {
@@ -94,10 +98,15 @@ export class CartRepository extends AbstractResourceRepository {
94
98
 
95
99
  if (productId && variantId) {
96
100
  // Fetch product and variant by ID
97
- product = this._storage.get(projectKey, 'product', productId, {})
101
+ product = this._storage.get(
102
+ context.projectKey,
103
+ 'product',
104
+ productId,
105
+ {}
106
+ )
98
107
  } else if (sku) {
99
108
  // Fetch product and variant by SKU
100
- const items = this._storage.query(projectKey, 'product', {
109
+ const items = this._storage.query(context.projectKey, 'product', {
101
110
  where: [
102
111
  `masterData(current(masterVariant(sku="${sku}"))) or masterData(current(variants(sku="${sku}")))`,
103
112
  ],
@@ -196,7 +205,7 @@ export class CartRepository extends AbstractResourceRepository {
196
205
  resource.totalPrice.centAmount = calculateCartTotalPrice(resource)
197
206
  },
198
207
  removeLineItem: (
199
- projectKey: string,
208
+ context: RepositoryContext,
200
209
  resource: Writable<Cart>,
201
210
  { lineItemId, quantity }: CartRemoveLineItemAction
202
211
  ) => {
@@ -228,19 +237,19 @@ export class CartRepository extends AbstractResourceRepository {
228
237
  resource.totalPrice.centAmount = calculateCartTotalPrice(resource)
229
238
  },
230
239
  setBillingAddress: (
231
- projectKey: string,
240
+ context: RepositoryContext,
232
241
  resource: Writable<Cart>,
233
242
  { address }: CartSetBillingAddressAction
234
243
  ) => {
235
244
  resource.billingAddress = address
236
245
  },
237
246
  setShippingMethod: (
238
- projectKey: string,
247
+ context: RepositoryContext,
239
248
  resource: Writable<Cart>,
240
249
  { shippingMethod }: CartSetShippingMethodAction
241
250
  ) => {
242
251
  const resolvedType = this._storage.getByResourceIdentifier(
243
- projectKey,
252
+ context.projectKey,
244
253
  //@ts-ignore
245
254
  shippingMethod
246
255
  )
@@ -257,21 +266,21 @@ export class CartRepository extends AbstractResourceRepository {
257
266
  }
258
267
  },
259
268
  setCountry: (
260
- projectKey: string,
269
+ context: RepositoryContext,
261
270
  resource: Writable<Cart>,
262
271
  { country }: CartSetCountryAction
263
272
  ) => {
264
273
  resource.country = country
265
274
  },
266
275
  setCustomerEmail: (
267
- projectKey: string,
276
+ context: RepositoryContext,
268
277
  resource: Writable<Cart>,
269
278
  { email }: CartSetCustomerEmailAction
270
279
  ) => {
271
280
  resource.customerEmail = email
272
281
  },
273
282
  setCustomField: (
274
- projectKey: string,
283
+ context: RepositoryContext,
275
284
  resource: Cart,
276
285
  { name, value }: CartSetCustomFieldAction
277
286
  ) => {
@@ -281,7 +290,7 @@ export class CartRepository extends AbstractResourceRepository {
281
290
  resource.custom.fields[name] = value
282
291
  },
283
292
  setCustomType: (
284
- projectKey: string,
293
+ context: RepositoryContext,
285
294
  resource: Writable<Cart>,
286
295
  { type, fields }: CartSetCustomTypeAction
287
296
  ) => {
@@ -289,7 +298,7 @@ export class CartRepository extends AbstractResourceRepository {
289
298
  resource.custom = undefined
290
299
  } else {
291
300
  const resolvedType = this._storage.getByResourceIdentifier(
292
- projectKey,
301
+ context.projectKey,
293
302
  type
294
303
  )
295
304
  if (!resolvedType) {
@@ -306,14 +315,14 @@ export class CartRepository extends AbstractResourceRepository {
306
315
  }
307
316
  },
308
317
  setLocale: (
309
- projectKey: string,
318
+ context: RepositoryContext,
310
319
  resource: Writable<Cart>,
311
320
  { locale }: CartSetLocaleAction
312
321
  ) => {
313
322
  resource.locale = locale
314
323
  },
315
324
  setShippingAddress: (
316
- projectKey: string,
325
+ context: RepositoryContext,
317
326
  resource: Writable<Cart>,
318
327
  { address }: CartSetShippingAddressAction
319
328
  ) => {
@@ -16,14 +16,14 @@ import {
16
16
  import { Writable } from 'types'
17
17
  import { getBaseResourceProperties } from '../helpers'
18
18
  import { createCustomFields } from './helpers'
19
- import { AbstractResourceRepository } from './abstract'
19
+ import { AbstractResourceRepository, RepositoryContext } from './abstract'
20
20
 
21
21
  export class CategoryRepository extends AbstractResourceRepository {
22
22
  getTypeId(): ReferenceTypeId {
23
23
  return 'category'
24
24
  }
25
25
 
26
- create(projectKey: string, draft: CategoryDraft): Category {
26
+ create(context: RepositoryContext, draft: CategoryDraft): Category {
27
27
  const resource: Category = {
28
28
  ...getBaseResourceProperties(),
29
29
  key: draft.key,
@@ -44,17 +44,21 @@ export class CategoryRepository extends AbstractResourceRepository {
44
44
  sources: d.sources,
45
45
  tags: d.tags,
46
46
  key: d.key,
47
- custom: createCustomFields(draft.custom, projectKey, this._storage),
47
+ custom: createCustomFields(
48
+ draft.custom,
49
+ context.projectKey,
50
+ this._storage
51
+ ),
48
52
  }
49
53
  }) || [],
50
54
  }
51
- this.save(projectKey, resource)
55
+ this.save(context, resource)
52
56
  return resource
53
57
  }
54
58
 
55
59
  actions = {
56
60
  changeAssetName: (
57
- projectKey: string,
61
+ context: RepositoryContext,
58
62
  resource: Writable<Category>,
59
63
  { assetId, assetKey, name }: CategoryChangeAssetNameAction
60
64
  ) => {
@@ -68,21 +72,21 @@ export class CategoryRepository extends AbstractResourceRepository {
68
72
  })
69
73
  },
70
74
  changeSlug: (
71
- projectKey: string,
75
+ context: RepositoryContext,
72
76
  resource: Writable<Category>,
73
77
  { slug }: CategoryChangeSlugAction
74
78
  ) => {
75
79
  resource.slug = slug
76
80
  },
77
81
  setKey: (
78
- projectKey: string,
82
+ context: RepositoryContext,
79
83
  resource: Writable<Category>,
80
84
  { key }: CategorySetKeyAction
81
85
  ) => {
82
86
  resource.key = key
83
87
  },
84
88
  setAssetDescription: (
85
- projectKey: string,
89
+ context: RepositoryContext,
86
90
  resource: Writable<Category>,
87
91
  { assetId, assetKey, description }: CategorySetAssetDescriptionAction
88
92
  ) => {
@@ -96,7 +100,7 @@ export class CategoryRepository extends AbstractResourceRepository {
96
100
  })
97
101
  },
98
102
  setAssetSources: (
99
- projectKey: string,
103
+ context: RepositoryContext,
100
104
  resource: Writable<Category>,
101
105
  { assetId, assetKey, sources }: CategorySetAssetSourcesAction
102
106
  ) => {
@@ -110,28 +114,28 @@ export class CategoryRepository extends AbstractResourceRepository {
110
114
  })
111
115
  },
112
116
  setDescription: (
113
- projectKey: string,
117
+ context: RepositoryContext,
114
118
  resource: Writable<Category>,
115
119
  { description }: CategorySetDescriptionAction
116
120
  ) => {
117
121
  resource.description = description
118
122
  },
119
123
  setMetaDescription: (
120
- projectKey: string,
124
+ context: RepositoryContext,
121
125
  resource: Writable<Category>,
122
126
  { metaDescription }: CategorySetMetaDescriptionAction
123
127
  ) => {
124
128
  resource.metaDescription = metaDescription
125
129
  },
126
130
  setMetaKeywords: (
127
- projectKey: string,
131
+ context: RepositoryContext,
128
132
  resource: Writable<Category>,
129
133
  { metaKeywords }: CategorySetMetaKeywordsAction
130
134
  ) => {
131
135
  resource.metaKeywords = metaKeywords
132
136
  },
133
137
  setMetaTitle: (
134
- projectKey: string,
138
+ context: RepositoryContext,
135
139
  resource: Writable<Category>,
136
140
  { metaTitle }: CategorySetMetaTitleAction
137
141
  ) => {
@@ -4,20 +4,20 @@ import {
4
4
  ReferenceTypeId,
5
5
  } from '@commercetools/platform-sdk'
6
6
  import { getBaseResourceProperties } from '../helpers'
7
- import { AbstractResourceRepository } from './abstract'
7
+ import { AbstractResourceRepository, RepositoryContext } from './abstract'
8
8
 
9
9
  export class ChannelRepository extends AbstractResourceRepository {
10
10
  getTypeId(): ReferenceTypeId {
11
11
  return 'channel'
12
12
  }
13
13
 
14
- create(projectKey: string, draft: ChannelDraft): Channel {
14
+ create(context: RepositoryContext, draft: ChannelDraft): Channel {
15
15
  const resource: Channel = {
16
16
  ...getBaseResourceProperties(),
17
17
  key: draft.key,
18
18
  roles: draft.roles || [],
19
19
  }
20
- this.save(projectKey, resource)
20
+ this.save(context, resource)
21
21
  return resource
22
22
  }
23
23
  }
@@ -4,7 +4,7 @@ import {
4
4
  ReferenceTypeId,
5
5
  } from '@commercetools/platform-sdk'
6
6
  import { checkConcurrentModification } from './errors'
7
- import { AbstractResourceRepository } from './abstract'
7
+ import { AbstractResourceRepository, RepositoryContext } from './abstract'
8
8
  import { Writable } from '../types'
9
9
  import { getBaseResourceProperties } from '../helpers'
10
10
 
@@ -13,9 +13,12 @@ export class CustomObjectRepository extends AbstractResourceRepository {
13
13
  return 'key-value-document'
14
14
  }
15
15
 
16
- create(projectKey: string, draft: Writable<CustomObjectDraft>): CustomObject {
16
+ create(
17
+ context: RepositoryContext,
18
+ draft: Writable<CustomObjectDraft>
19
+ ): CustomObject {
17
20
  const current = this.getWithContainerAndKey(
18
- projectKey,
21
+ context,
19
22
  draft.container,
20
23
  draft.key
21
24
  )
@@ -47,14 +50,19 @@ export class CustomObjectRepository extends AbstractResourceRepository {
47
50
  value: draft.value,
48
51
  }
49
52
 
50
- this.save(projectKey, resource)
53
+ this.save(context, resource)
51
54
  return resource
52
55
  }
53
56
 
54
- getWithContainerAndKey(projectKey: string, container: string, key: string) {
55
- const items = this._storage.all(projectKey, this.getTypeId()) as Array<
56
- CustomObject
57
- >
57
+ getWithContainerAndKey(
58
+ context: RepositoryContext,
59
+ container: string,
60
+ key: string
61
+ ) {
62
+ const items = this._storage.all(
63
+ context.projectKey,
64
+ this.getTypeId()
65
+ ) as Array<CustomObject>
58
66
  return items.find(item => item.container === container && item.key === key)
59
67
  }
60
68
  }
@@ -7,32 +7,32 @@ import {
7
7
  } from '@commercetools/platform-sdk'
8
8
  import { Writable } from 'types'
9
9
  import { getBaseResourceProperties } from '../helpers'
10
- import { AbstractResourceRepository } from './abstract'
10
+ import { AbstractResourceRepository, RepositoryContext } from './abstract'
11
11
 
12
12
  export class CustomerGroupRepository extends AbstractResourceRepository {
13
13
  getTypeId(): ReferenceTypeId {
14
14
  return 'customer'
15
15
  }
16
- create(projectKey: string, draft: CustomerGroupDraft): CustomerGroup {
16
+ create(context: RepositoryContext, draft: CustomerGroupDraft): CustomerGroup {
17
17
  const resource: CustomerGroup = {
18
18
  ...getBaseResourceProperties(),
19
19
  key: draft.key,
20
20
  name: draft.groupName,
21
21
  }
22
- this.save(projectKey, resource)
22
+ this.save(context, resource)
23
23
  return resource
24
24
  }
25
25
 
26
26
  actions = {
27
27
  setKey: (
28
- projectKey: string,
28
+ context: RepositoryContext,
29
29
  resource: Writable<CustomerGroup>,
30
30
  { key }: CustomerGroupSetKeyAction
31
31
  ) => {
32
32
  resource.key = key
33
33
  },
34
34
  changeName: (
35
- projectKey: string,
35
+ context: RepositoryContext,
36
36
  resource: Writable<CustomerGroup>,
37
37
  { name }: CustomerGroupChangeNameAction
38
38
  ) => {
@@ -6,14 +6,14 @@ import {
6
6
  } from '@commercetools/platform-sdk'
7
7
  import { Writable } from 'types'
8
8
  import { getBaseResourceProperties } from '../helpers'
9
- import { AbstractResourceRepository } from './abstract'
9
+ import { AbstractResourceRepository, RepositoryContext } from './abstract'
10
10
 
11
11
  export class CustomerRepository extends AbstractResourceRepository {
12
12
  getTypeId(): ReferenceTypeId {
13
13
  return 'customer'
14
14
  }
15
15
 
16
- create(projectKey: string, draft: CustomerDraft): Customer {
16
+ create(context: RepositoryContext, draft: CustomerDraft): Customer {
17
17
  const resource: Customer = {
18
18
  ...getBaseResourceProperties(),
19
19
  email: draft.email,
@@ -23,12 +23,16 @@ export class CustomerRepository extends AbstractResourceRepository {
23
23
  isEmailVerified: draft.isEmailVerified || false,
24
24
  addresses: [],
25
25
  }
26
- this.save(projectKey, resource)
26
+ this.save(context, resource)
27
27
  return resource
28
28
  }
29
29
 
30
- getMe(projectKey: string): Customer | undefined {
31
- const results = this._storage.query(projectKey, this.getTypeId(), {}) // grab the first customer you can find
30
+ getMe(context: RepositoryContext): Customer | undefined {
31
+ const results = this._storage.query(
32
+ context.projectKey,
33
+ this.getTypeId(),
34
+ {}
35
+ ) // grab the first customer you can find
32
36
  if (results.count > 0) {
33
37
  return results.results[0] as Customer
34
38
  }
@@ -38,7 +42,7 @@ export class CustomerRepository extends AbstractResourceRepository {
38
42
 
39
43
  actions = {
40
44
  changeEmail: (
41
- _projectKey: string,
45
+ _context: RepositoryContext,
42
46
  resource: Writable<Customer>,
43
47
  { email }: CustomerChangeEmailAction
44
48
  ) => {