@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
@@ -1,147 +1,148 @@
1
1
  import type {
2
- Project,
3
- ProjectChangeCartsConfigurationAction,
4
- ProjectChangeCountriesAction,
5
- ProjectChangeCountryTaxRateFallbackEnabledAction,
6
- ProjectChangeCurrenciesAction,
7
- ProjectChangeLanguagesAction,
8
- ProjectChangeMessagesConfigurationAction,
9
- ProjectChangeNameAction,
10
- ProjectChangeOrderSearchStatusAction,
11
- ProjectChangeProductSearchIndexingEnabledAction,
12
- ProjectSetExternalOAuthAction,
13
- ProjectSetShippingRateInputTypeAction,
14
- ProjectUpdateAction,
2
+ Project,
3
+ ProjectChangeCartsConfigurationAction,
4
+ ProjectChangeCountriesAction,
5
+ ProjectChangeCountryTaxRateFallbackEnabledAction,
6
+ ProjectChangeCurrenciesAction,
7
+ ProjectChangeLanguagesAction,
8
+ ProjectChangeMessagesConfigurationAction,
9
+ ProjectChangeNameAction,
10
+ ProjectChangeOrderSearchStatusAction,
11
+ ProjectChangeProductSearchIndexingEnabledAction,
12
+ ProjectSetExternalOAuthAction,
13
+ ProjectSetShippingRateInputTypeAction,
14
+ ProjectUpdateAction,
15
15
  } from '@commercetools/platform-sdk'
16
16
  import { maskSecretValue } from '../lib/masking.js'
17
17
  import type { Writable } from '../types.js'
18
18
  import { AbstractRepository, RepositoryContext } from './abstract.js'
19
19
 
20
20
  export class ProjectRepository extends AbstractRepository<Project> {
21
- get(context: RepositoryContext): Project | null {
22
- const resource = this._storage.getProject(context.projectKey)
23
- return this.postProcessResource(resource)
24
- }
21
+ get(context: RepositoryContext): Project | null {
22
+ const resource = this._storage.getProject(context.projectKey)
23
+ return this.postProcessResource(resource)
24
+ }
25
25
 
26
- postProcessResource(resource: Project): Project {
27
- if (resource) {
28
- return maskSecretValue(resource, 'externalOAuth.authorizationHeader')
29
- }
30
- return resource
31
- }
26
+ postProcessResource(resource: Project): Project {
27
+ if (resource) {
28
+ return maskSecretValue(resource, 'externalOAuth.authorizationHeader')
29
+ }
30
+ return resource
31
+ }
32
32
 
33
- saveNew(context: RepositoryContext, resource: Writable<Project>) {
34
- resource.version = 1
35
- this._storage.saveProject(resource)
36
- }
33
+ saveNew(context: RepositoryContext, resource: Writable<Project>) {
34
+ resource.version = 1
35
+ this._storage.saveProject(resource)
36
+ }
37
37
 
38
- saveUpdate(context: RepositoryContext, version: number, resource: Project) {
39
- this._storage.saveProject(resource)
40
- }
38
+ saveUpdate(context: RepositoryContext, version: number, resource: Project) {
39
+ this._storage.saveProject(resource)
40
+ }
41
41
 
42
- actions: Partial<
43
- Record<
44
- ProjectUpdateAction['action'],
45
- (
46
- context: RepositoryContext,
47
- resource: Writable<Project>,
48
- action: any
49
- ) => void
50
- >
51
- > = {
52
- changeName: (
53
- context: RepositoryContext,
54
- resource: Writable<Project>,
55
- { name }: ProjectChangeNameAction
56
- ) => {
57
- resource.name = name
58
- },
59
- changeCurrencies: (
60
- context: RepositoryContext,
61
- resource: Writable<Project>,
62
- { currencies }: ProjectChangeCurrenciesAction
63
- ) => {
64
- resource.currencies = currencies
65
- },
66
- changeCountries: (
67
- context: RepositoryContext,
68
- resource: Writable<Project>,
69
- { countries }: ProjectChangeCountriesAction
70
- ) => {
71
- resource.countries = countries
72
- },
73
- changeLanguages: (
74
- context: RepositoryContext,
75
- resource: Writable<Project>,
76
- { languages }: ProjectChangeLanguagesAction
77
- ) => {
78
- resource.languages = languages
79
- },
80
- changeMessagesConfiguration: (
81
- context: RepositoryContext,
82
- resource: Writable<Project>,
83
- { messagesConfiguration }: ProjectChangeMessagesConfigurationAction
84
- ) => {
85
- resource.messages.enabled = messagesConfiguration.enabled
86
- resource.messages.deleteDaysAfterCreation = messagesConfiguration.deleteDaysAfterCreation
87
- },
88
- changeProductSearchIndexingEnabled: (
89
- context: RepositoryContext,
90
- resource: Writable<Project>,
91
- { enabled }: ProjectChangeProductSearchIndexingEnabledAction
92
- ) => {
93
- if (!resource.searchIndexing?.products) {
94
- throw new Error('Invalid project state')
95
- }
96
- resource.searchIndexing.products.status = enabled
97
- ? 'Activated'
98
- : 'Deactivated'
99
- resource.searchIndexing.products.lastModifiedAt = new Date().toISOString()
100
- },
101
- changeOrderSearchStatus: (
102
- context: RepositoryContext,
103
- resource: Writable<Project>,
104
- { status }: ProjectChangeOrderSearchStatusAction
105
- ) => {
106
- if (!resource.searchIndexing?.orders) {
107
- throw new Error('Invalid project state')
108
- }
109
- resource.searchIndexing.orders.status = status
110
- resource.searchIndexing.orders.lastModifiedAt = new Date().toISOString()
111
- },
112
- setShippingRateInputType: (
113
- context: RepositoryContext,
114
- resource: Writable<Project>,
115
- { shippingRateInputType }: ProjectSetShippingRateInputTypeAction
116
- ) => {
117
- resource.shippingRateInputType = shippingRateInputType
118
- },
119
- setExternalOAuth: (
120
- context: RepositoryContext,
121
- resource: Writable<Project>,
122
- { externalOAuth }: ProjectSetExternalOAuthAction
123
- ) => {
124
- resource.externalOAuth = externalOAuth
125
- },
126
- changeCountryTaxRateFallbackEnabled: (
127
- context: RepositoryContext,
128
- resource: Writable<Project>,
129
- {
130
- countryTaxRateFallbackEnabled,
131
- }: ProjectChangeCountryTaxRateFallbackEnabledAction
132
- ) => {
133
- resource.carts.countryTaxRateFallbackEnabled =
134
- countryTaxRateFallbackEnabled
135
- },
136
- changeCartsConfiguration: (
137
- context: RepositoryContext,
138
- resource: Writable<Project>,
139
- { cartsConfiguration }: ProjectChangeCartsConfigurationAction
140
- ) => {
141
- resource.carts = cartsConfiguration || {
142
- countryTaxRateFallbackEnabled: false,
143
- deleteDaysAfterLastModification: 90,
144
- }
145
- },
146
- }
42
+ actions: Partial<
43
+ Record<
44
+ ProjectUpdateAction['action'],
45
+ (
46
+ context: RepositoryContext,
47
+ resource: Writable<Project>,
48
+ action: any
49
+ ) => void
50
+ >
51
+ > = {
52
+ changeName: (
53
+ context: RepositoryContext,
54
+ resource: Writable<Project>,
55
+ { name }: ProjectChangeNameAction
56
+ ) => {
57
+ resource.name = name
58
+ },
59
+ changeCurrencies: (
60
+ context: RepositoryContext,
61
+ resource: Writable<Project>,
62
+ { currencies }: ProjectChangeCurrenciesAction
63
+ ) => {
64
+ resource.currencies = currencies
65
+ },
66
+ changeCountries: (
67
+ context: RepositoryContext,
68
+ resource: Writable<Project>,
69
+ { countries }: ProjectChangeCountriesAction
70
+ ) => {
71
+ resource.countries = countries
72
+ },
73
+ changeLanguages: (
74
+ context: RepositoryContext,
75
+ resource: Writable<Project>,
76
+ { languages }: ProjectChangeLanguagesAction
77
+ ) => {
78
+ resource.languages = languages
79
+ },
80
+ changeMessagesConfiguration: (
81
+ context: RepositoryContext,
82
+ resource: Writable<Project>,
83
+ { messagesConfiguration }: ProjectChangeMessagesConfigurationAction
84
+ ) => {
85
+ resource.messages.enabled = messagesConfiguration.enabled
86
+ resource.messages.deleteDaysAfterCreation =
87
+ messagesConfiguration.deleteDaysAfterCreation
88
+ },
89
+ changeProductSearchIndexingEnabled: (
90
+ context: RepositoryContext,
91
+ resource: Writable<Project>,
92
+ { enabled }: ProjectChangeProductSearchIndexingEnabledAction
93
+ ) => {
94
+ if (!resource.searchIndexing?.products) {
95
+ throw new Error('Invalid project state')
96
+ }
97
+ resource.searchIndexing.products.status = enabled
98
+ ? 'Activated'
99
+ : 'Deactivated'
100
+ resource.searchIndexing.products.lastModifiedAt = new Date().toISOString()
101
+ },
102
+ changeOrderSearchStatus: (
103
+ context: RepositoryContext,
104
+ resource: Writable<Project>,
105
+ { status }: ProjectChangeOrderSearchStatusAction
106
+ ) => {
107
+ if (!resource.searchIndexing?.orders) {
108
+ throw new Error('Invalid project state')
109
+ }
110
+ resource.searchIndexing.orders.status = status
111
+ resource.searchIndexing.orders.lastModifiedAt = new Date().toISOString()
112
+ },
113
+ setShippingRateInputType: (
114
+ context: RepositoryContext,
115
+ resource: Writable<Project>,
116
+ { shippingRateInputType }: ProjectSetShippingRateInputTypeAction
117
+ ) => {
118
+ resource.shippingRateInputType = shippingRateInputType
119
+ },
120
+ setExternalOAuth: (
121
+ context: RepositoryContext,
122
+ resource: Writable<Project>,
123
+ { externalOAuth }: ProjectSetExternalOAuthAction
124
+ ) => {
125
+ resource.externalOAuth = externalOAuth
126
+ },
127
+ changeCountryTaxRateFallbackEnabled: (
128
+ context: RepositoryContext,
129
+ resource: Writable<Project>,
130
+ {
131
+ countryTaxRateFallbackEnabled,
132
+ }: ProjectChangeCountryTaxRateFallbackEnabledAction
133
+ ) => {
134
+ resource.carts.countryTaxRateFallbackEnabled =
135
+ countryTaxRateFallbackEnabled
136
+ },
137
+ changeCartsConfiguration: (
138
+ context: RepositoryContext,
139
+ resource: Writable<Project>,
140
+ { cartsConfiguration }: ProjectChangeCartsConfigurationAction
141
+ ) => {
142
+ resource.carts = cartsConfiguration || {
143
+ countryTaxRateFallbackEnabled: false,
144
+ deleteDaysAfterLastModification: 90,
145
+ }
146
+ },
147
+ }
147
148
  }
@@ -1,28 +1,28 @@
1
1
  import type {
2
- QuoteRequest,
3
- QuoteRequestDraft,
4
- QuoteRequestUpdateAction,
2
+ QuoteRequest,
3
+ QuoteRequestDraft,
4
+ QuoteRequestUpdateAction,
5
5
  } from '@commercetools/platform-sdk'
6
6
  import type { Writable } from '../types.js'
7
7
  import { AbstractResourceRepository, RepositoryContext } from './abstract.js'
8
8
 
9
9
  export class QuoteRequestRepository extends AbstractResourceRepository<'quote-request'> {
10
- getTypeId() {
11
- return 'quote-request' as const
12
- }
10
+ getTypeId() {
11
+ return 'quote-request' as const
12
+ }
13
13
 
14
- create(context: RepositoryContext, draft: QuoteRequestDraft): QuoteRequest {
15
- throw new Error('not implemented')
16
- }
14
+ create(context: RepositoryContext, draft: QuoteRequestDraft): QuoteRequest {
15
+ throw new Error('not implemented')
16
+ }
17
17
 
18
- actions: Partial<
19
- Record<
20
- QuoteRequestUpdateAction['action'],
21
- (
22
- context: RepositoryContext,
23
- resource: Writable<QuoteRequest>,
24
- action: any
25
- ) => void
26
- >
27
- > = {}
18
+ actions: Partial<
19
+ Record<
20
+ QuoteRequestUpdateAction['action'],
21
+ (
22
+ context: RepositoryContext,
23
+ resource: Writable<QuoteRequest>,
24
+ action: any
25
+ ) => void
26
+ >
27
+ > = {}
28
28
  }
@@ -1,28 +1,28 @@
1
1
  import type {
2
- Quote,
3
- QuoteDraft,
4
- QuoteUpdateAction,
2
+ Quote,
3
+ QuoteDraft,
4
+ QuoteUpdateAction,
5
5
  } from '@commercetools/platform-sdk'
6
6
  import type { Writable } from '../types.js'
7
7
  import { AbstractResourceRepository, RepositoryContext } from './abstract.js'
8
8
 
9
9
  export class QuoteRepository extends AbstractResourceRepository<'quote'> {
10
- getTypeId() {
11
- return 'quote' as const
12
- }
10
+ getTypeId() {
11
+ return 'quote' as const
12
+ }
13
13
 
14
- create(context: RepositoryContext, draft: QuoteDraft): Quote {
15
- throw new Error('not implemented')
16
- }
14
+ create(context: RepositoryContext, draft: QuoteDraft): Quote {
15
+ throw new Error('not implemented')
16
+ }
17
17
 
18
- actions: Partial<
19
- Record<
20
- QuoteUpdateAction['action'],
21
- (
22
- context: RepositoryContext,
23
- resource: Writable<Quote>,
24
- action: any
25
- ) => void
26
- >
27
- > = {}
18
+ actions: Partial<
19
+ Record<
20
+ QuoteUpdateAction['action'],
21
+ (
22
+ context: RepositoryContext,
23
+ resource: Writable<Quote>,
24
+ action: any
25
+ ) => void
26
+ >
27
+ > = {}
28
28
  }
@@ -1,34 +1,34 @@
1
1
  import type {
2
- Review,
3
- ReviewDraft,
4
- ReviewUpdateAction,
2
+ Review,
3
+ ReviewDraft,
4
+ ReviewUpdateAction,
5
5
  } from '@commercetools/platform-sdk'
6
6
  import { getBaseResourceProperties } from '../helpers.js'
7
7
  import type { Writable } from '../types.js'
8
8
  import { AbstractResourceRepository, RepositoryContext } from './abstract.js'
9
9
 
10
10
  export class ReviewRepository extends AbstractResourceRepository<'review'> {
11
- getTypeId() {
12
- return 'review' as const
13
- }
11
+ getTypeId() {
12
+ return 'review' as const
13
+ }
14
14
 
15
- create(context: RepositoryContext, draft: ReviewDraft): Review {
16
- const resource: Review = {
17
- ...getBaseResourceProperties(),
18
- includedInStatistics: false,
19
- }
20
- this.saveNew(context, resource)
21
- return resource
22
- }
15
+ create(context: RepositoryContext, draft: ReviewDraft): Review {
16
+ const resource: Review = {
17
+ ...getBaseResourceProperties(),
18
+ includedInStatistics: false,
19
+ }
20
+ this.saveNew(context, resource)
21
+ return resource
22
+ }
23
23
 
24
- actions: Partial<
25
- Record<
26
- ReviewUpdateAction['action'],
27
- (
28
- context: RepositoryContext,
29
- resource: Writable<Review>,
30
- action: any
31
- ) => void
32
- >
33
- > = {}
24
+ actions: Partial<
25
+ Record<
26
+ ReviewUpdateAction['action'],
27
+ (
28
+ context: RepositoryContext,
29
+ resource: Writable<Review>,
30
+ action: any
31
+ ) => void
32
+ >
33
+ > = {}
34
34
  }