@labdigital/commercetools-mock 1.5.0 → 1.6.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 (129) hide show
  1. package/README.md +5 -4
  2. package/dist/index.cjs +117 -17
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +30 -7
  5. package/dist/index.d.ts +30 -7
  6. package/dist/index.js +117 -17
  7. package/dist/index.js.map +1 -1
  8. package/package.json +4 -3
  9. package/src/constants.ts +2 -2
  10. package/src/ctMock.ts +176 -176
  11. package/src/exceptions.ts +10 -10
  12. package/src/helpers.ts +26 -26
  13. package/src/index.test.ts +173 -173
  14. package/src/index.ts +3 -3
  15. package/src/lib/expandParser.ts +19 -19
  16. package/src/lib/haversine.test.ts +13 -13
  17. package/src/lib/haversine.ts +14 -14
  18. package/src/lib/masking.ts +15 -15
  19. package/src/lib/parser.ts +2 -2
  20. package/src/lib/predicateParser.test.ts +204 -204
  21. package/src/lib/predicateParser.ts +398 -398
  22. package/src/lib/projectionSearchFilter.test.ts +168 -168
  23. package/src/lib/projectionSearchFilter.ts +272 -269
  24. package/src/lib/proxy.ts +8 -8
  25. package/src/oauth/errors.ts +4 -4
  26. package/src/oauth/helpers.ts +6 -6
  27. package/src/oauth/server.ts +103 -101
  28. package/src/oauth/store.ts +27 -27
  29. package/src/priceSelector.test.ts +68 -68
  30. package/src/priceSelector.ts +70 -70
  31. package/src/product-projection-search.ts +296 -296
  32. package/src/projectAPI.test.ts +3 -3
  33. package/src/projectAPI.ts +46 -46
  34. package/src/repositories/abstract.ts +190 -190
  35. package/src/repositories/associate-role.ts +10 -7
  36. package/src/repositories/attribute-group.ts +63 -8
  37. package/src/repositories/business-unit.ts +10 -7
  38. package/src/repositories/cart-discount.ts +134 -134
  39. package/src/repositories/cart.ts +517 -514
  40. package/src/repositories/category.ts +170 -167
  41. package/src/repositories/channel.ts +114 -111
  42. package/src/repositories/custom-object.ts +66 -63
  43. package/src/repositories/customer-group.ts +72 -69
  44. package/src/repositories/customer.ts +90 -90
  45. package/src/repositories/discount-code.ts +171 -168
  46. package/src/repositories/errors.ts +15 -15
  47. package/src/repositories/extension.ts +79 -76
  48. package/src/repositories/helpers.ts +180 -180
  49. package/src/repositories/index.ts +39 -39
  50. package/src/repositories/inventory-entry.ts +98 -95
  51. package/src/repositories/my-order.ts +11 -11
  52. package/src/repositories/order-edit.ts +29 -29
  53. package/src/repositories/order.test.ts +191 -191
  54. package/src/repositories/order.ts +393 -393
  55. package/src/repositories/payment.ts +155 -155
  56. package/src/repositories/product-discount.ts +149 -149
  57. package/src/repositories/product-projection.ts +135 -50
  58. package/src/repositories/product-selection.ts +31 -31
  59. package/src/repositories/product-type.ts +156 -156
  60. package/src/repositories/product.ts +600 -597
  61. package/src/repositories/project.ts +136 -135
  62. package/src/repositories/quote-request.ts +19 -19
  63. package/src/repositories/quote.ts +19 -19
  64. package/src/repositories/review.ts +24 -24
  65. package/src/repositories/shipping-method.ts +217 -217
  66. package/src/repositories/shopping-list.ts +49 -49
  67. package/src/repositories/staged-quote.ts +20 -20
  68. package/src/repositories/standalone-price.ts +72 -61
  69. package/src/repositories/state.ts +84 -84
  70. package/src/repositories/store.ts +114 -114
  71. package/src/repositories/subscription.ts +40 -40
  72. package/src/repositories/tax-category.ts +98 -98
  73. package/src/repositories/type.ts +157 -157
  74. package/src/repositories/zone.ts +71 -71
  75. package/src/server.ts +2 -2
  76. package/src/services/abstract.ts +173 -173
  77. package/src/services/attribute-group.ts +16 -0
  78. package/src/services/cart-discount.ts +8 -8
  79. package/src/services/cart.test.ts +409 -409
  80. package/src/services/cart.ts +50 -50
  81. package/src/services/category.test.ts +25 -25
  82. package/src/services/category.ts +8 -8
  83. package/src/services/channel.ts +8 -8
  84. package/src/services/custom-object.test.ts +184 -184
  85. package/src/services/custom-object.ts +48 -48
  86. package/src/services/customer-group.ts +8 -8
  87. package/src/services/customer.test.ts +151 -151
  88. package/src/services/customer.ts +27 -27
  89. package/src/services/discount-code.ts +8 -8
  90. package/src/services/extension.ts +8 -8
  91. package/src/services/index.ts +52 -44
  92. package/src/services/inventory-entry.test.ts +162 -162
  93. package/src/services/inventory-entry.ts +8 -8
  94. package/src/services/my-cart.test.ts +78 -78
  95. package/src/services/my-cart.ts +28 -28
  96. package/src/services/my-customer.test.ts +44 -44
  97. package/src/services/my-customer.ts +53 -53
  98. package/src/services/my-order.ts +20 -20
  99. package/src/services/my-payment.test.ts +65 -65
  100. package/src/services/my-payment.ts +8 -8
  101. package/src/services/order.test.ts +527 -527
  102. package/src/services/order.ts +31 -31
  103. package/src/services/payment.test.ts +65 -65
  104. package/src/services/payment.ts +8 -8
  105. package/src/services/product-discount.ts +8 -8
  106. package/src/services/product-projection.test.ts +502 -428
  107. package/src/services/product-projection.ts +32 -18
  108. package/src/services/product-type.test.ts +56 -56
  109. package/src/services/product-type.ts +8 -8
  110. package/src/services/product.test.ts +510 -510
  111. package/src/services/product.ts +8 -8
  112. package/src/services/project.ts +34 -34
  113. package/src/services/shipping-method.test.ts +81 -81
  114. package/src/services/shipping-method.ts +12 -12
  115. package/src/services/shopping-list.ts +8 -8
  116. package/src/services/standalone-price.test.ts +256 -256
  117. package/src/services/standalone-price.ts +8 -8
  118. package/src/services/state.test.ts +42 -42
  119. package/src/services/state.ts +8 -8
  120. package/src/services/store.test.ts +57 -57
  121. package/src/services/store.ts +8 -8
  122. package/src/services/subscription.ts +8 -8
  123. package/src/services/tax-category.test.ts +61 -61
  124. package/src/services/tax-category.ts +8 -8
  125. package/src/services/type.ts +8 -8
  126. package/src/services/zone.ts +8 -8
  127. package/src/storage/abstract.ts +58 -58
  128. package/src/storage/in-memory.ts +419 -419
  129. package/src/types.ts +82 -82
@@ -3,14 +3,14 @@ import { StateRepository } from '../repositories/state.js'
3
3
  import AbstractService from './abstract.js'
4
4
 
5
5
  export class StateService extends AbstractService {
6
- public repository: StateRepository
6
+ public repository: StateRepository
7
7
 
8
- constructor(parent: Router, repository: StateRepository) {
9
- super(parent)
10
- this.repository = repository
11
- }
8
+ constructor(parent: Router, repository: StateRepository) {
9
+ super(parent)
10
+ this.repository = repository
11
+ }
12
12
 
13
- getBasePath() {
14
- return 'states'
15
- }
13
+ getBasePath() {
14
+ return 'states'
15
+ }
16
16
  }
@@ -6,69 +6,69 @@ import { CommercetoolsMock } from '../index.js'
6
6
  const ctMock = new CommercetoolsMock()
7
7
 
8
8
  describe('Store', () => {
9
- beforeAll(() => {
10
- ctMock.start()
11
- })
9
+ beforeAll(() => {
10
+ ctMock.start()
11
+ })
12
12
 
13
- afterEach(() => {
14
- ctMock.clear()
15
- })
13
+ afterEach(() => {
14
+ ctMock.clear()
15
+ })
16
16
 
17
- afterAll(() => {
18
- ctMock.stop()
19
- })
17
+ afterAll(() => {
18
+ ctMock.stop()
19
+ })
20
20
 
21
- test('Get store by key', async () => {
22
- ctMock.project('dummy').add('store', {
23
- id: 'fake-store',
24
- version: 1,
25
- createdAt: '',
26
- lastModifiedAt: '',
27
- key: 'STOREKEY',
28
- countries: [],
29
- languages: [],
30
- distributionChannels: [],
31
- supplyChannels: [],
32
- productSelections: [],
33
- })
21
+ test('Get store by key', async () => {
22
+ ctMock.project('dummy').add('store', {
23
+ id: 'fake-store',
24
+ version: 1,
25
+ createdAt: '',
26
+ lastModifiedAt: '',
27
+ key: 'STOREKEY',
28
+ countries: [],
29
+ languages: [],
30
+ distributionChannels: [],
31
+ supplyChannels: [],
32
+ productSelections: [],
33
+ })
34
34
 
35
- const response = await supertest(ctMock.app).get(
36
- `/dummy/stores/key=STOREKEY`
37
- )
35
+ const response = await supertest(ctMock.app).get(
36
+ `/dummy/stores/key=STOREKEY`
37
+ )
38
38
 
39
- expect(response.status).toBe(200)
40
- expect(response.body).toEqual({
41
- version: 1,
42
- createdAt: '',
43
- id: 'fake-store',
44
- key: 'STOREKEY',
45
- lastModifiedAt: '',
46
- countries: [],
47
- languages: [],
48
- distributionChannels: [],
49
- supplyChannels: [],
50
- productSelections: [],
51
- } as Store)
52
- })
39
+ expect(response.status).toBe(200)
40
+ expect(response.body).toEqual({
41
+ version: 1,
42
+ createdAt: '',
43
+ id: 'fake-store',
44
+ key: 'STOREKEY',
45
+ lastModifiedAt: '',
46
+ countries: [],
47
+ languages: [],
48
+ distributionChannels: [],
49
+ supplyChannels: [],
50
+ productSelections: [],
51
+ } as Store)
52
+ })
53
53
 
54
- test('Get store by 404 when not found by key', async () => {
55
- ctMock.project('dummy').add('store', {
56
- id: 'fake-store',
57
- version: 1,
58
- createdAt: '',
59
- lastModifiedAt: '',
60
- key: 'STOREKEY',
61
- countries: [],
62
- languages: [],
63
- distributionChannels: [],
64
- supplyChannels: [],
65
- productSelections: [],
66
- })
54
+ test('Get store by 404 when not found by key', async () => {
55
+ ctMock.project('dummy').add('store', {
56
+ id: 'fake-store',
57
+ version: 1,
58
+ createdAt: '',
59
+ lastModifiedAt: '',
60
+ key: 'STOREKEY',
61
+ countries: [],
62
+ languages: [],
63
+ distributionChannels: [],
64
+ supplyChannels: [],
65
+ productSelections: [],
66
+ })
67
67
 
68
- const response = await supertest(ctMock.app).get(
69
- `/dummy/stores/key=DOESNOTEXIST`
70
- )
68
+ const response = await supertest(ctMock.app).get(
69
+ `/dummy/stores/key=DOESNOTEXIST`
70
+ )
71
71
 
72
- expect(response.status).toBe(404)
73
- })
72
+ expect(response.status).toBe(404)
73
+ })
74
74
  })
@@ -3,14 +3,14 @@ import { StoreRepository } from '../repositories/store.js'
3
3
  import AbstractService from './abstract.js'
4
4
 
5
5
  export class StoreService extends AbstractService {
6
- public repository: StoreRepository
6
+ public repository: StoreRepository
7
7
 
8
- constructor(parent: Router, repository: StoreRepository) {
9
- super(parent)
10
- this.repository = repository
11
- }
8
+ constructor(parent: Router, repository: StoreRepository) {
9
+ super(parent)
10
+ this.repository = repository
11
+ }
12
12
 
13
- getBasePath() {
14
- return 'stores'
15
- }
13
+ getBasePath() {
14
+ return 'stores'
15
+ }
16
16
  }
@@ -3,14 +3,14 @@ import { SubscriptionRepository } from '../repositories/subscription.js'
3
3
  import AbstractService from './abstract.js'
4
4
 
5
5
  export class SubscriptionService extends AbstractService {
6
- public repository: SubscriptionRepository
6
+ public repository: SubscriptionRepository
7
7
 
8
- constructor(parent: Router, repository: SubscriptionRepository) {
9
- super(parent)
10
- this.repository = repository
11
- }
8
+ constructor(parent: Router, repository: SubscriptionRepository) {
9
+ super(parent)
10
+ this.repository = repository
11
+ }
12
12
 
13
- getBasePath() {
14
- return 'subscriptions'
15
- }
13
+ getBasePath() {
14
+ return 'subscriptions'
15
+ }
16
16
  }
@@ -6,75 +6,75 @@ import { CommercetoolsMock } from '../index.js'
6
6
  const ctMock = new CommercetoolsMock()
7
7
 
8
8
  describe('Tax Category', () => {
9
- afterEach(() => {
10
- ctMock.clear()
11
- })
12
- test('Create tax category', async () => {
13
- const draft: TaxCategoryDraft = {
14
- name: 'foo',
15
- key: 'standard',
16
- rates: [],
17
- }
18
- const response = await supertest(ctMock.app)
19
- .post('/dummy/tax-categories')
20
- .send(draft)
9
+ afterEach(() => {
10
+ ctMock.clear()
11
+ })
12
+ test('Create tax category', async () => {
13
+ const draft: TaxCategoryDraft = {
14
+ name: 'foo',
15
+ key: 'standard',
16
+ rates: [],
17
+ }
18
+ const response = await supertest(ctMock.app)
19
+ .post('/dummy/tax-categories')
20
+ .send(draft)
21
21
 
22
- expect(response.status).toBe(201)
22
+ expect(response.status).toBe(201)
23
23
 
24
- expect(response.body).toEqual({
25
- createdAt: expect.anything(),
26
- id: expect.anything(),
27
- lastModifiedAt: expect.anything(),
28
- name: 'foo',
29
- rates: [],
30
- key: 'standard',
31
- version: 1,
32
- })
33
- })
24
+ expect(response.body).toEqual({
25
+ createdAt: expect.anything(),
26
+ id: expect.anything(),
27
+ lastModifiedAt: expect.anything(),
28
+ name: 'foo',
29
+ rates: [],
30
+ key: 'standard',
31
+ version: 1,
32
+ })
33
+ })
34
34
 
35
- test('Get tax category', async () => {
36
- const draft: TaxCategoryDraft = {
37
- name: 'foo',
38
- key: 'standard',
39
- rates: [],
40
- }
41
- const createResponse = await supertest(ctMock.app)
42
- .post('/dummy/tax-categories')
43
- .send(draft)
35
+ test('Get tax category', async () => {
36
+ const draft: TaxCategoryDraft = {
37
+ name: 'foo',
38
+ key: 'standard',
39
+ rates: [],
40
+ }
41
+ const createResponse = await supertest(ctMock.app)
42
+ .post('/dummy/tax-categories')
43
+ .send(draft)
44
44
 
45
- expect(createResponse.status).toBe(201)
45
+ expect(createResponse.status).toBe(201)
46
46
 
47
- const response = await supertest(ctMock.app).get(
48
- `/dummy/tax-categories/${createResponse.body.id}`
49
- )
47
+ const response = await supertest(ctMock.app).get(
48
+ `/dummy/tax-categories/${createResponse.body.id}`
49
+ )
50
50
 
51
- expect(response.status).toBe(200)
52
- expect(response.body).toEqual(createResponse.body)
53
- })
51
+ expect(response.status).toBe(200)
52
+ expect(response.body).toEqual(createResponse.body)
53
+ })
54
54
 
55
- test('Get tax category with key', async () => {
56
- const draft: TaxCategoryDraft = {
57
- name: 'foo',
58
- key: 'standard',
59
- rates: [],
60
- }
61
- const createResponse = await supertest(ctMock.app)
62
- .post('/dummy/tax-categories')
63
- .send(draft)
55
+ test('Get tax category with key', async () => {
56
+ const draft: TaxCategoryDraft = {
57
+ name: 'foo',
58
+ key: 'standard',
59
+ rates: [],
60
+ }
61
+ const createResponse = await supertest(ctMock.app)
62
+ .post('/dummy/tax-categories')
63
+ .send(draft)
64
64
 
65
- expect(createResponse.status).toBe(201)
65
+ expect(createResponse.status).toBe(201)
66
66
 
67
- const response = await supertest(ctMock.app)
68
- .get(`/dummy/tax-categories/`)
69
- .query({ where: `key="${createResponse.body.key}"` })
67
+ const response = await supertest(ctMock.app)
68
+ .get(`/dummy/tax-categories/`)
69
+ .query({ where: `key="${createResponse.body.key}"` })
70
70
 
71
- expect(response.status).toBe(200)
72
- expect(response.body).toEqual({
73
- count: 1,
74
- limit: 20,
75
- offset: 0,
76
- total: 1,
77
- results: [createResponse.body],
78
- })
79
- })
71
+ expect(response.status).toBe(200)
72
+ expect(response.body).toEqual({
73
+ count: 1,
74
+ limit: 20,
75
+ offset: 0,
76
+ total: 1,
77
+ results: [createResponse.body],
78
+ })
79
+ })
80
80
  })
@@ -3,14 +3,14 @@ import { TaxCategoryRepository } from '../repositories/tax-category.js'
3
3
  import AbstractService from './abstract.js'
4
4
 
5
5
  export class TaxCategoryService extends AbstractService {
6
- public repository: TaxCategoryRepository
6
+ public repository: TaxCategoryRepository
7
7
 
8
- constructor(parent: Router, repository: TaxCategoryRepository) {
9
- super(parent)
10
- this.repository = repository
11
- }
8
+ constructor(parent: Router, repository: TaxCategoryRepository) {
9
+ super(parent)
10
+ this.repository = repository
11
+ }
12
12
 
13
- getBasePath() {
14
- return 'tax-categories'
15
- }
13
+ getBasePath() {
14
+ return 'tax-categories'
15
+ }
16
16
  }
@@ -3,14 +3,14 @@ import { TypeRepository } from '../repositories/type.js'
3
3
  import AbstractService from './abstract.js'
4
4
 
5
5
  export class TypeService extends AbstractService {
6
- public repository: TypeRepository
6
+ public repository: TypeRepository
7
7
 
8
- constructor(parent: Router, repository: TypeRepository) {
9
- super(parent)
10
- this.repository = repository
11
- }
8
+ constructor(parent: Router, repository: TypeRepository) {
9
+ super(parent)
10
+ this.repository = repository
11
+ }
12
12
 
13
- getBasePath() {
14
- return 'types'
15
- }
13
+ getBasePath() {
14
+ return 'types'
15
+ }
16
16
  }
@@ -3,14 +3,14 @@ import { ZoneRepository } from '../repositories/zone.js'
3
3
  import AbstractService from './abstract.js'
4
4
 
5
5
  export class ZoneService extends AbstractService {
6
- public repository: ZoneRepository
6
+ public repository: ZoneRepository
7
7
 
8
- constructor(parent: Router, repository: ZoneRepository) {
9
- super(parent)
10
- this.repository = repository
11
- }
8
+ constructor(parent: Router, repository: ZoneRepository) {
9
+ super(parent)
10
+ this.repository = repository
11
+ }
12
12
 
13
- getBasePath() {
14
- return 'zones'
15
- }
13
+ getBasePath() {
14
+ return 'zones'
15
+ }
16
16
  }
@@ -1,82 +1,82 @@
1
1
  import type {
2
- BaseResource,
3
- Project,
4
- QueryParam,
5
- ResourceIdentifier
2
+ BaseResource,
3
+ Project,
4
+ QueryParam,
5
+ ResourceIdentifier,
6
6
  } from '@commercetools/platform-sdk'
7
7
  import { PagedQueryResponseMap, ResourceMap, ResourceType } from '../types.js'
8
8
 
9
9
  export type GetParams = {
10
- expand?: string[]
10
+ expand?: string[]
11
11
  }
12
12
 
13
13
  export type QueryParams = {
14
- expand?: string | string[]
15
- sort?: string | string[]
16
- limit?: number
17
- offset?: number
18
- withTotal?: boolean
19
- where?: string | string[]
20
- [key: string]: QueryParam
14
+ expand?: string | string[]
15
+ sort?: string | string[]
16
+ limit?: number
17
+ offset?: number
18
+ withTotal?: boolean
19
+ where?: string | string[]
20
+ [key: string]: QueryParam
21
21
  }
22
22
 
23
23
  export abstract class AbstractStorage {
24
- abstract clear(): void
24
+ abstract clear(): void
25
25
 
26
- abstract all<RT extends ResourceType>(
27
- projectKey: string,
28
- typeId: RT
29
- ): Array<ResourceMap[RT]>
26
+ abstract all<RT extends ResourceType>(
27
+ projectKey: string,
28
+ typeId: RT
29
+ ): Array<ResourceMap[RT]>
30
30
 
31
- abstract add<RT extends ResourceType>(
32
- projectKey: string,
33
- typeId: RT,
34
- obj: ResourceMap[RT]
35
- ): void
31
+ abstract add<RT extends ResourceType>(
32
+ projectKey: string,
33
+ typeId: RT,
34
+ obj: ResourceMap[RT]
35
+ ): void
36
36
 
37
- abstract get<RT extends ResourceType>(
38
- projectKey: string,
39
- typeId: RT,
40
- id: string,
41
- params?: GetParams
42
- ): ResourceMap[RT] | null
37
+ abstract get<RT extends ResourceType>(
38
+ projectKey: string,
39
+ typeId: RT,
40
+ id: string,
41
+ params?: GetParams
42
+ ): ResourceMap[RT] | null
43
43
 
44
- abstract getByKey<RT extends ResourceType>(
45
- projectKey: string,
46
- typeId: RT,
47
- key: string,
48
- params: GetParams
49
- ): ResourceMap[RT] | null
44
+ abstract getByKey<RT extends ResourceType>(
45
+ projectKey: string,
46
+ typeId: RT,
47
+ key: string,
48
+ params: GetParams
49
+ ): ResourceMap[RT] | null
50
50
 
51
- abstract addProject(projectKey: string): Project
52
- abstract getProject(projectKey: string): Project
53
- abstract saveProject(project: Project): Project
51
+ abstract addProject(projectKey: string): Project
52
+ abstract getProject(projectKey: string): Project
53
+ abstract saveProject(project: Project): Project
54
54
 
55
- abstract delete<RT extends ResourceType>(
56
- projectKey: string,
57
- typeId: RT,
58
- id: string,
59
- params: GetParams
60
- ): ResourceMap[RT] | null
55
+ abstract delete<RT extends ResourceType>(
56
+ projectKey: string,
57
+ typeId: RT,
58
+ id: string,
59
+ params: GetParams
60
+ ): ResourceMap[RT] | null
61
61
 
62
- abstract query<RT extends ResourceType>(
63
- projectKey: string,
64
- typeId: RT,
65
- params: QueryParams
66
- ): PagedQueryResponseMap[RT]
62
+ abstract query<RT extends ResourceType>(
63
+ projectKey: string,
64
+ typeId: RT,
65
+ params: QueryParams
66
+ ): PagedQueryResponseMap[RT]
67
67
 
68
- abstract getByResourceIdentifier<RT extends ResourceType>(
69
- projectKey: string,
70
- identifier: ResourceIdentifier
71
- ): ResourceMap[RT] | null
68
+ abstract getByResourceIdentifier<RT extends ResourceType>(
69
+ projectKey: string,
70
+ identifier: ResourceIdentifier
71
+ ): ResourceMap[RT] | null
72
72
 
73
- abstract expand<T>(
74
- projectKey: string,
75
- obj: T,
76
- clause: undefined | string | string[]
77
- ): T
73
+ abstract expand<T>(
74
+ projectKey: string,
75
+ obj: T,
76
+ clause: undefined | string | string[]
77
+ ): T
78
78
  }
79
79
 
80
80
  export type ProjectStorage = {
81
- [index in ResourceType]: Map<string, BaseResource>
81
+ [index in ResourceType]: Map<string, BaseResource>
82
82
  }