@labdigital/commercetools-mock 2.65.1 → 3.0.0-beta.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 (281) hide show
  1. package/README.md +31 -8
  2. package/dist/abstract-BKFcva6S.mjs +1044 -0
  3. package/dist/abstract-BKFcva6S.mjs.map +1 -0
  4. package/dist/config-BcNSzPZz.d.mts +1718 -0
  5. package/dist/index.d.mts +50 -1633
  6. package/dist/index.mjs +3771 -2654
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/storage/sqlite.d.mts +59 -0
  9. package/dist/storage/sqlite.mjs +234 -0
  10. package/dist/storage/sqlite.mjs.map +1 -0
  11. package/package.json +26 -29
  12. package/src/ctMock.ts +125 -136
  13. package/src/helpers.ts +14 -6
  14. package/src/index.ts +5 -0
  15. package/src/lib/masking.ts +4 -5
  16. package/src/lib/product-review-statistics.test.ts +257 -294
  17. package/src/lib/review-statistics.ts +17 -4
  18. package/src/oauth/helpers.ts +7 -4
  19. package/src/oauth/server.test.ts +102 -62
  20. package/src/oauth/server.ts +215 -213
  21. package/src/oauth/store.ts +20 -6
  22. package/src/orderSearch.ts +3 -3
  23. package/src/product-projection-search.ts +38 -20
  24. package/src/product-search-availability.test.ts +31 -52
  25. package/src/product-search.ts +19 -10
  26. package/src/projectAPI.ts +6 -22
  27. package/src/repositories/abstract.ts +182 -48
  28. package/src/repositories/as-associate.test.ts +19 -19
  29. package/src/repositories/associate-role.ts +12 -23
  30. package/src/repositories/attribute-group.test.ts +23 -23
  31. package/src/repositories/attribute-group.ts +6 -4
  32. package/src/repositories/business-unit.test.ts +63 -57
  33. package/src/repositories/business-unit.ts +107 -55
  34. package/src/repositories/cart/actions.ts +96 -65
  35. package/src/repositories/cart/helpers.ts +15 -11
  36. package/src/repositories/cart/index.test.ts +136 -30
  37. package/src/repositories/cart/index.ts +76 -59
  38. package/src/repositories/cart-discount/actions.ts +12 -44
  39. package/src/repositories/cart-discount/index.ts +20 -8
  40. package/src/repositories/category/actions.ts +27 -27
  41. package/src/repositories/category/index.test.ts +13 -9
  42. package/src/repositories/category/index.ts +40 -23
  43. package/src/repositories/channel.test.ts +53 -51
  44. package/src/repositories/channel.ts +12 -22
  45. package/src/repositories/custom-object.ts +34 -25
  46. package/src/repositories/customer/actions.ts +47 -25
  47. package/src/repositories/customer/index.test.ts +11 -11
  48. package/src/repositories/customer/index.ts +65 -35
  49. package/src/repositories/customer-group.test.ts +44 -42
  50. package/src/repositories/customer-group.ts +12 -22
  51. package/src/repositories/discount-code/actions.ts +3 -19
  52. package/src/repositories/discount-code/index.ts +9 -4
  53. package/src/repositories/discount-group/index.ts +8 -3
  54. package/src/repositories/extension.test.ts +27 -27
  55. package/src/repositories/extension.ts +10 -5
  56. package/src/repositories/helpers.ts +126 -47
  57. package/src/repositories/inventory-entry/actions.ts +3 -24
  58. package/src/repositories/inventory-entry/index.ts +19 -11
  59. package/src/repositories/my-customer.ts +13 -12
  60. package/src/repositories/my-order.ts +5 -2
  61. package/src/repositories/order/actions.ts +89 -56
  62. package/src/repositories/order/index.test.ts +36 -31
  63. package/src/repositories/order/index.ts +83 -49
  64. package/src/repositories/order-edit.ts +8 -3
  65. package/src/repositories/payment/actions.ts +64 -44
  66. package/src/repositories/payment/helpers.ts +3 -3
  67. package/src/repositories/payment/index.ts +28 -12
  68. package/src/repositories/product/actions.ts +133 -98
  69. package/src/repositories/product/helpers.ts +29 -16
  70. package/src/repositories/product/index.ts +42 -25
  71. package/src/repositories/product-discount.ts +6 -4
  72. package/src/repositories/product-projection.ts +41 -21
  73. package/src/repositories/product-selection.ts +8 -15
  74. package/src/repositories/product-tailoring.ts +22 -3
  75. package/src/repositories/product-type.ts +45 -4
  76. package/src/repositories/project.ts +57 -13
  77. package/src/repositories/quote/actions.ts +5 -28
  78. package/src/repositories/quote/index.ts +29 -6
  79. package/src/repositories/quote-request/actions.ts +5 -28
  80. package/src/repositories/quote-request/index.test.ts +3 -3
  81. package/src/repositories/quote-request/index.ts +31 -11
  82. package/src/repositories/quote-staged/actions.ts +5 -28
  83. package/src/repositories/quote-staged/index.ts +22 -8
  84. package/src/repositories/recurrence-policy/index.ts +6 -4
  85. package/src/repositories/recurring-order/actions.ts +7 -32
  86. package/src/repositories/recurring-order/index.ts +8 -6
  87. package/src/repositories/review.test.ts +147 -142
  88. package/src/repositories/review.ts +31 -37
  89. package/src/repositories/shipping-method/actions.ts +11 -28
  90. package/src/repositories/shipping-method/index.ts +26 -15
  91. package/src/repositories/shopping-list/actions.ts +21 -31
  92. package/src/repositories/shopping-list/index.ts +44 -22
  93. package/src/repositories/standalone-price.ts +6 -4
  94. package/src/repositories/state.ts +15 -9
  95. package/src/repositories/store.ts +21 -32
  96. package/src/repositories/subscription.test.ts +22 -22
  97. package/src/repositories/subscription.ts +8 -3
  98. package/src/repositories/tax-category/index.ts +8 -3
  99. package/src/repositories/type/actions.ts +21 -3
  100. package/src/repositories/type/index.ts +5 -3
  101. package/src/repositories/zone.test.ts +112 -77
  102. package/src/repositories/zone.ts +5 -3
  103. package/src/schemas/generated/associate-role.ts +13 -0
  104. package/src/schemas/generated/attribute-group.ts +12 -0
  105. package/src/schemas/generated/business-unit.ts +38 -0
  106. package/src/schemas/generated/cart-discount.ts +33 -0
  107. package/src/schemas/generated/cart.ts +61 -0
  108. package/src/schemas/generated/category.ts +25 -0
  109. package/src/schemas/generated/channel.ts +21 -0
  110. package/src/schemas/generated/common.ts +1372 -0
  111. package/src/schemas/generated/custom-object.ts +11 -0
  112. package/src/schemas/generated/customer-group.ts +11 -0
  113. package/src/schemas/generated/customer.ts +47 -0
  114. package/src/schemas/generated/discount-code.ts +25 -0
  115. package/src/schemas/generated/discount-group.ts +13 -0
  116. package/src/schemas/generated/extension.ts +15 -0
  117. package/src/schemas/generated/index.ts +42 -0
  118. package/src/schemas/generated/inventory-entry.ts +20 -0
  119. package/src/schemas/generated/my-quote-request.ts +10 -0
  120. package/src/schemas/generated/order-edit.ts +18 -0
  121. package/src/schemas/generated/order-from-cart.ts +25 -0
  122. package/src/schemas/generated/payment.ts +30 -0
  123. package/src/schemas/generated/product-discount.ts +20 -0
  124. package/src/schemas/generated/product-selection.ts +18 -0
  125. package/src/schemas/generated/product-tailoring.ts +26 -0
  126. package/src/schemas/generated/product-type.ts +12 -0
  127. package/src/schemas/generated/product.ts +37 -0
  128. package/src/schemas/generated/quote-request.ts +19 -0
  129. package/src/schemas/generated/quote.ts +18 -0
  130. package/src/schemas/generated/recurrence-policy.ts +15 -0
  131. package/src/schemas/generated/recurring-order.ts +19 -0
  132. package/src/schemas/generated/review.ts +24 -0
  133. package/src/schemas/generated/shipping-method.ts +24 -0
  134. package/src/schemas/generated/shopping-list.ts +28 -0
  135. package/src/schemas/generated/staged-quote.ts +18 -0
  136. package/src/schemas/generated/standalone-price.ts +32 -0
  137. package/src/schemas/generated/state.ts +20 -0
  138. package/src/schemas/generated/store.ts +23 -0
  139. package/src/schemas/generated/subscription.ts +20 -0
  140. package/src/schemas/generated/tax-category.ts +12 -0
  141. package/src/schemas/generated/type.ts +17 -0
  142. package/src/schemas/generated/zone.ts +12 -0
  143. package/src/schemas/update-request.ts +3 -5
  144. package/src/server.ts +32 -4
  145. package/src/services/abstract.ts +207 -101
  146. package/src/services/as-associate-cart.test.ts +28 -36
  147. package/src/services/as-associate-cart.ts +15 -12
  148. package/src/services/as-associate-order.test.ts +33 -40
  149. package/src/services/as-associate-order.ts +15 -12
  150. package/src/services/as-associate-quote-request.ts +15 -12
  151. package/src/services/as-associate-shopping-list.test.ts +25 -35
  152. package/src/services/as-associate-shopping-list.ts +15 -12
  153. package/src/services/as-associate.test.ts +21 -15
  154. package/src/services/as-associate.ts +23 -22
  155. package/src/services/associate-roles.test.ts +16 -22
  156. package/src/services/associate-roles.ts +2 -2
  157. package/src/services/attribute-group.test.ts +40 -44
  158. package/src/services/attribute-group.ts +2 -2
  159. package/src/services/business-units.test.ts +227 -163
  160. package/src/services/business-units.ts +2 -2
  161. package/src/services/cart-discount.test.ts +253 -187
  162. package/src/services/cart-discount.ts +2 -2
  163. package/src/services/cart.test.ts +833 -832
  164. package/src/services/cart.ts +31 -12
  165. package/src/services/category.test.ts +208 -130
  166. package/src/services/category.ts +2 -2
  167. package/src/services/channel.test.ts +39 -44
  168. package/src/services/channel.ts +2 -2
  169. package/src/services/custom-object.test.ts +103 -79
  170. package/src/services/custom-object.ts +106 -38
  171. package/src/services/customer-group.test.ts +39 -44
  172. package/src/services/customer-group.ts +2 -2
  173. package/src/services/customer.test.ts +357 -292
  174. package/src/services/customer.ts +70 -23
  175. package/src/services/discount-code.test.ts +57 -68
  176. package/src/services/discount-code.ts +2 -2
  177. package/src/services/discount-group.test.ts +111 -134
  178. package/src/services/discount-group.ts +2 -2
  179. package/src/services/draft-validation.test.ts +255 -0
  180. package/src/services/extension.test.ts +39 -44
  181. package/src/services/extension.ts +2 -2
  182. package/src/services/inventory-entry.test.ts +106 -87
  183. package/src/services/inventory-entry.ts +2 -2
  184. package/src/services/my-business-unit.test.ts +82 -112
  185. package/src/services/my-business-unit.ts +25 -19
  186. package/src/services/my-cart.test.ts +46 -41
  187. package/src/services/my-cart.ts +32 -28
  188. package/src/services/my-customer.test.ts +153 -88
  189. package/src/services/my-customer.ts +130 -61
  190. package/src/services/my-order.ts +15 -12
  191. package/src/services/my-payment.test.ts +30 -24
  192. package/src/services/my-payment.ts +2 -2
  193. package/src/services/my-shopping-list.ts +2 -2
  194. package/src/services/order.test.ts +332 -276
  195. package/src/services/order.ts +45 -27
  196. package/src/services/payment.test.ts +31 -29
  197. package/src/services/payment.ts +2 -2
  198. package/src/services/product-discount.test.ts +39 -46
  199. package/src/services/product-discount.ts +2 -2
  200. package/src/services/product-projection.test.ts +176 -166
  201. package/src/services/product-projection.ts +31 -15
  202. package/src/services/product-selection.test.ts +17 -9
  203. package/src/services/product-selection.ts +2 -2
  204. package/src/services/product-type.test.ts +80 -21
  205. package/src/services/product-type.ts +2 -2
  206. package/src/services/product.test.ts +569 -534
  207. package/src/services/product.ts +14 -7
  208. package/src/services/project.test.ts +22 -12
  209. package/src/services/project.ts +28 -13
  210. package/src/services/quote-request.test.ts +36 -39
  211. package/src/services/quote-request.ts +2 -2
  212. package/src/services/quote-staged.ts +2 -2
  213. package/src/services/quote.ts +2 -2
  214. package/src/services/recurrence-policy.test.ts +114 -139
  215. package/src/services/recurrence-policy.ts +2 -2
  216. package/src/services/recurring-order.test.ts +149 -194
  217. package/src/services/recurring-order.ts +2 -2
  218. package/src/services/reviews.test.ts +127 -106
  219. package/src/services/reviews.ts +2 -2
  220. package/src/services/shipping-method.test.ts +96 -125
  221. package/src/services/shipping-method.ts +24 -12
  222. package/src/services/shopping-list.test.ts +183 -141
  223. package/src/services/shopping-list.ts +2 -2
  224. package/src/services/standalone-price.test.ts +60 -46
  225. package/src/services/standalone-price.ts +2 -2
  226. package/src/services/state.test.ts +20 -25
  227. package/src/services/state.ts +2 -2
  228. package/src/services/store.test.ts +26 -45
  229. package/src/services/store.ts +2 -2
  230. package/src/services/subscription.test.ts +39 -44
  231. package/src/services/subscription.ts +2 -2
  232. package/src/services/tax-category.test.ts +33 -36
  233. package/src/services/tax-category.ts +2 -2
  234. package/src/services/type.test.ts +45 -44
  235. package/src/services/type.ts +2 -2
  236. package/src/services/zone.test.ts +40 -44
  237. package/src/services/zone.ts +2 -2
  238. package/src/shipping.ts +41 -11
  239. package/src/storage/abstract.ts +248 -17
  240. package/src/storage/in-memory.ts +147 -290
  241. package/src/storage/sqlite.ts +429 -0
  242. package/src/storage/storage-map.ts +75 -0
  243. package/src/storage/storage.test-helpers.ts +97 -0
  244. package/src/storage/storage.test.ts +802 -0
  245. package/src/testing/associate-role.ts +28 -0
  246. package/src/testing/attribute-group.ts +27 -0
  247. package/src/testing/business-unit.ts +9 -8
  248. package/src/testing/cart-discount.ts +34 -0
  249. package/src/testing/cart.ts +20 -0
  250. package/src/testing/category.ts +25 -0
  251. package/src/testing/channel.ts +23 -0
  252. package/src/testing/custom-object.ts +27 -0
  253. package/src/testing/customer-group.ts +26 -0
  254. package/src/testing/customer.ts +36 -33
  255. package/src/testing/discount-code.ts +29 -0
  256. package/src/testing/discount-group.ts +27 -0
  257. package/src/testing/extension.ts +32 -0
  258. package/src/testing/index.ts +33 -0
  259. package/src/testing/inventory-entry.ts +26 -0
  260. package/src/testing/order.ts +27 -0
  261. package/src/testing/payment.ts +23 -0
  262. package/src/testing/product-discount.ts +33 -0
  263. package/src/testing/product-selection.ts +28 -0
  264. package/src/testing/product-type.ts +27 -0
  265. package/src/testing/product.ts +38 -0
  266. package/src/testing/quote-request.ts +29 -0
  267. package/src/testing/recurrence-policy.ts +33 -0
  268. package/src/testing/recurring-order.ts +32 -0
  269. package/src/testing/review.ts +24 -0
  270. package/src/testing/shipping-method.ts +31 -0
  271. package/src/testing/shopping-list.ts +25 -0
  272. package/src/testing/standalone-price.ts +31 -0
  273. package/src/testing/state.ts +21 -0
  274. package/src/testing/store.ts +26 -0
  275. package/src/testing/subscription.ts +38 -0
  276. package/src/testing/tax-category.ts +27 -0
  277. package/src/testing/type.ts +9 -6
  278. package/src/testing/zone.ts +22 -0
  279. package/src/validate.test.ts +122 -0
  280. package/src/validate.ts +78 -7
  281. package/src/.env +0 -0
@@ -1,5 +1,3 @@
1
- import type { StandalonePriceDraft } from "@commercetools/platform-sdk";
2
- import supertest from "supertest";
3
1
  import {
4
2
  afterAll,
5
3
  afterEach,
@@ -9,13 +7,16 @@ import {
9
7
  expect,
10
8
  test,
11
9
  } from "vitest";
10
+ import { standalonePriceDraftFactory } from "#src/testing/index.ts";
12
11
  import { CommercetoolsMock } from "../index.ts";
13
12
 
14
13
  const ctMock = new CommercetoolsMock();
15
14
 
16
15
  describe("Standalone price Query", () => {
16
+ const standalonePriceDraft = standalonePriceDraftFactory(ctMock);
17
+
17
18
  beforeAll(async () => {
18
- const draft: StandalonePriceDraft = {
19
+ await standalonePriceDraft.create({
19
20
  value: {
20
21
  centAmount: 100,
21
22
  currencyCode: "EUR",
@@ -37,25 +38,22 @@ describe("Standalone price Query", () => {
37
38
  id: "baz",
38
39
  },
39
40
  },
40
- };
41
- const createResponse = await supertest(ctMock.app)
42
- .post("/dummy/standalone-prices")
43
- .send(draft);
44
- expect(createResponse.status).toEqual(201);
41
+ });
45
42
  });
46
43
 
47
44
  afterAll(async () => {
48
- ctMock.clear();
45
+ await ctMock.clear();
49
46
  });
50
47
 
51
48
  test("Get standalone price", async () => {
52
- const response = await supertest(ctMock.app).get(
53
- "/dummy/standalone-prices?sku=foo",
54
- );
49
+ const response = await ctMock.app.inject({
50
+ method: "GET",
51
+ url: "/dummy/standalone-prices?sku=foo",
52
+ });
55
53
 
56
- expect(response.status).toBe(200);
54
+ expect(response.statusCode).toBe(200);
57
55
 
58
- expect(response.body.results).toEqual([
56
+ expect(response.json().results).toEqual([
59
57
  {
60
58
  active: true,
61
59
  channel: {
@@ -64,6 +62,7 @@ describe("Standalone price Query", () => {
64
62
  },
65
63
  country: "DE",
66
64
  createdAt: expect.anything(),
65
+ createdBy: expect.anything(),
67
66
  discounted: {
68
67
  discount: {
69
68
  id: "baz",
@@ -78,6 +77,7 @@ describe("Standalone price Query", () => {
78
77
  },
79
78
  id: expect.anything(),
80
79
  lastModifiedAt: expect.anything(),
80
+ lastModifiedBy: expect.anything(),
81
81
  sku: "foo",
82
82
  value: {
83
83
  centAmount: 100,
@@ -92,9 +92,11 @@ describe("Standalone price Query", () => {
92
92
  });
93
93
 
94
94
  describe("Standalone price Actions", () => {
95
+ const standalonePriceDraft = standalonePriceDraftFactory(ctMock);
95
96
  let id: string | undefined;
97
+
96
98
  beforeEach(async () => {
97
- const draft: StandalonePriceDraft = {
99
+ const resource = await standalonePriceDraft.create({
98
100
  value: {
99
101
  centAmount: 100,
100
102
  currencyCode: "EUR",
@@ -106,22 +108,19 @@ describe("Standalone price Actions", () => {
106
108
  typeId: "channel",
107
109
  id: "bar",
108
110
  },
109
- };
110
- const createResponse = await supertest(ctMock.app)
111
- .post("/dummy/standalone-prices")
112
- .send(draft);
113
- expect(createResponse.status).toEqual(201);
114
- id = createResponse.body.id;
111
+ });
112
+ id = resource.id;
115
113
  });
116
114
 
117
115
  afterEach(async () => {
118
- ctMock.clear();
116
+ await ctMock.clear();
119
117
  });
120
118
 
121
119
  test("changeValue", async () => {
122
- const response = await supertest(ctMock.app)
123
- .post(`/dummy/standalone-prices/${id}`)
124
- .send({
120
+ const response = await ctMock.app.inject({
121
+ method: "POST",
122
+ url: `/dummy/standalone-prices/${id}`,
123
+ payload: {
125
124
  version: 1,
126
125
  actions: [
127
126
  {
@@ -132,11 +131,12 @@ describe("Standalone price Actions", () => {
132
131
  },
133
132
  },
134
133
  ],
135
- });
134
+ },
135
+ });
136
136
 
137
- expect(response.status).toBe(200);
137
+ expect(response.statusCode).toBe(200);
138
138
 
139
- expect(response.body).toEqual({
139
+ expect(response.json()).toEqual({
140
140
  active: true,
141
141
  channel: {
142
142
  id: "bar",
@@ -144,8 +144,10 @@ describe("Standalone price Actions", () => {
144
144
  },
145
145
  country: "DE",
146
146
  createdAt: expect.anything(),
147
+ createdBy: expect.anything(),
147
148
  id: id,
148
149
  lastModifiedAt: expect.anything(),
150
+ lastModifiedBy: expect.anything(),
149
151
  sku: "foo",
150
152
  value: {
151
153
  centAmount: 200,
@@ -158,9 +160,10 @@ describe("Standalone price Actions", () => {
158
160
  });
159
161
 
160
162
  test("setActive", async () => {
161
- const response = await supertest(ctMock.app)
162
- .post(`/dummy/standalone-prices/${id}`)
163
- .send({
163
+ const response = await ctMock.app.inject({
164
+ method: "POST",
165
+ url: `/dummy/standalone-prices/${id}`,
166
+ payload: {
164
167
  version: 1,
165
168
  actions: [
166
169
  {
@@ -168,11 +171,12 @@ describe("Standalone price Actions", () => {
168
171
  active: false,
169
172
  },
170
173
  ],
171
- });
174
+ },
175
+ });
172
176
 
173
- expect(response.status).toBe(200);
177
+ expect(response.statusCode).toBe(200);
174
178
 
175
- expect(response.body).toEqual({
179
+ expect(response.json()).toEqual({
176
180
  active: false,
177
181
  channel: {
178
182
  id: "bar",
@@ -180,8 +184,10 @@ describe("Standalone price Actions", () => {
180
184
  },
181
185
  country: "DE",
182
186
  createdAt: expect.anything(),
187
+ createdBy: expect.anything(),
183
188
  id: id,
184
189
  lastModifiedAt: expect.anything(),
190
+ lastModifiedBy: expect.anything(),
185
191
  sku: "foo",
186
192
  value: {
187
193
  centAmount: 100,
@@ -194,9 +200,10 @@ describe("Standalone price Actions", () => {
194
200
  });
195
201
 
196
202
  test("setDiscounted", async () => {
197
- const response = await supertest(ctMock.app)
198
- .post(`/dummy/standalone-prices/${id}`)
199
- .send({
203
+ const response = await ctMock.app.inject({
204
+ method: "POST",
205
+ url: `/dummy/standalone-prices/${id}`,
206
+ payload: {
200
207
  version: 1,
201
208
  actions: [
202
209
  {
@@ -213,11 +220,12 @@ describe("Standalone price Actions", () => {
213
220
  },
214
221
  },
215
222
  ],
216
- });
223
+ },
224
+ });
217
225
 
218
- expect(response.status).toBe(200);
226
+ expect(response.statusCode).toBe(200);
219
227
 
220
- expect(response.body).toEqual({
228
+ expect(response.json()).toEqual({
221
229
  active: true,
222
230
  channel: {
223
231
  id: "bar",
@@ -225,6 +233,7 @@ describe("Standalone price Actions", () => {
225
233
  },
226
234
  country: "DE",
227
235
  createdAt: expect.anything(),
236
+ createdBy: expect.anything(),
228
237
  discounted: {
229
238
  discount: {
230
239
  id: "baz",
@@ -239,6 +248,7 @@ describe("Standalone price Actions", () => {
239
248
  },
240
249
  id: id,
241
250
  lastModifiedAt: expect.anything(),
251
+ lastModifiedBy: expect.anything(),
242
252
  sku: "foo",
243
253
  value: {
244
254
  centAmount: 100,
@@ -249,9 +259,10 @@ describe("Standalone price Actions", () => {
249
259
  version: 2,
250
260
  });
251
261
 
252
- const response2 = await supertest(ctMock.app)
253
- .post(`/dummy/standalone-prices/${id}`)
254
- .send({
262
+ const response2 = await ctMock.app.inject({
263
+ method: "POST",
264
+ url: `/dummy/standalone-prices/${id}`,
265
+ payload: {
255
266
  version: 2,
256
267
  actions: [
257
268
  {
@@ -259,11 +270,12 @@ describe("Standalone price Actions", () => {
259
270
  discounted: null,
260
271
  },
261
272
  ],
262
- });
273
+ },
274
+ });
263
275
 
264
- expect(response2.status).toBe(200);
276
+ expect(response2.statusCode).toBe(200);
265
277
 
266
- expect(response2.body).toEqual({
278
+ expect(response2.json()).toEqual({
267
279
  active: true,
268
280
  channel: {
269
281
  id: "bar",
@@ -271,8 +283,10 @@ describe("Standalone price Actions", () => {
271
283
  },
272
284
  country: "DE",
273
285
  createdAt: expect.anything(),
286
+ createdBy: expect.anything(),
274
287
  id: id,
275
288
  lastModifiedAt: expect.anything(),
289
+ lastModifiedBy: expect.anything(),
276
290
  sku: "foo",
277
291
  value: {
278
292
  centAmount: 100,
@@ -1,11 +1,11 @@
1
- import type { Router } from "express";
1
+ import type { FastifyInstance } from "fastify";
2
2
  import type { StandAlonePriceRepository } from "../repositories/standalone-price.ts";
3
3
  import AbstractService from "./abstract.ts";
4
4
 
5
5
  export class StandAlonePriceService extends AbstractService {
6
6
  public repository: StandAlonePriceRepository;
7
7
 
8
- constructor(parent: Router, repository: StandAlonePriceRepository) {
8
+ constructor(parent: FastifyInstance, repository: StandAlonePriceRepository) {
9
9
  super(parent);
10
10
  this.repository = repository;
11
11
  }
@@ -1,29 +1,31 @@
1
- import type { StateDraft } from "@commercetools/platform-sdk";
2
- import supertest from "supertest";
3
1
  import { describe, expect, test } from "vitest";
2
+ import { stateDraftFactory } from "#src/testing/index.ts";
4
3
  import { CommercetoolsMock } from "../index.ts";
5
4
 
6
5
  const ctMock = new CommercetoolsMock();
7
6
 
8
7
  describe("State", () => {
8
+ const stateDraft = stateDraftFactory(ctMock);
9
+
9
10
  test("Create state", async () => {
10
- const draft: StateDraft = {
11
- key: "foo",
12
- type: "PaymentState",
13
- };
14
- const response = await supertest(ctMock.app)
15
- .post("/dummy/states")
16
- .send(draft);
11
+ const draft = stateDraft.build({ key: "foo", type: "PaymentState" });
17
12
 
18
- expect(response.status).toBe(201);
13
+ const response = await ctMock.app.inject({
14
+ method: "POST",
15
+ url: "/dummy/states",
16
+ payload: draft,
17
+ });
19
18
 
20
- expect(response.body).toEqual({
19
+ expect(response.statusCode).toBe(201);
20
+ expect(response.json()).toEqual({
21
21
  builtIn: false,
22
22
  createdAt: expect.anything(),
23
+ createdBy: expect.anything(),
23
24
  id: expect.anything(),
24
25
  initial: false,
25
26
  key: "foo",
26
27
  lastModifiedAt: expect.anything(),
28
+ lastModifiedBy: expect.anything(),
27
29
  transitions: [],
28
30
  type: "PaymentState",
29
31
  version: 1,
@@ -31,21 +33,14 @@ describe("State", () => {
31
33
  });
32
34
 
33
35
  test("Get state", async () => {
34
- const draft: StateDraft = {
35
- key: "foo",
36
- type: "PaymentState",
37
- };
38
- const createResponse = await supertest(ctMock.app)
39
- .post("/dummy/states")
40
- .send(draft);
36
+ const state = await stateDraft.create({ key: "foo", type: "PaymentState" });
41
37
 
42
- expect(createResponse.status).toBe(201);
43
-
44
- const response = await supertest(ctMock.app).get(
45
- `/dummy/states/${createResponse.body.id}`,
46
- );
38
+ const response = await ctMock.app.inject({
39
+ method: "GET",
40
+ url: `/dummy/states/${state.id}`,
41
+ });
47
42
 
48
- expect(response.status).toBe(200);
49
- expect(response.body).toEqual(createResponse.body);
43
+ expect(response.statusCode).toBe(200);
44
+ expect(response.json()).toEqual(state);
50
45
  });
51
46
  });
@@ -1,11 +1,11 @@
1
- import type { Router } from "express";
1
+ import type { FastifyInstance } from "fastify";
2
2
  import type { StateRepository } from "../repositories/state.ts";
3
3
  import AbstractService from "./abstract.ts";
4
4
 
5
5
  export class StateService extends AbstractService {
6
6
  public repository: StateRepository;
7
7
 
8
- constructor(parent: Router, repository: StateRepository) {
8
+ constructor(parent: FastifyInstance, repository: StateRepository) {
9
9
  super(parent);
10
10
  this.repository = repository;
11
11
  }
@@ -1,62 +1,43 @@
1
- import type { Store } from "@commercetools/platform-sdk";
2
- import supertest from "supertest";
3
1
  import { describe, expect, test } from "vitest";
2
+ import { storeDraftFactory } from "#src/testing/index.ts";
4
3
  import { CommercetoolsMock } from "../index.ts";
5
4
 
6
5
  const ctMock = new CommercetoolsMock();
7
6
 
8
7
  describe("Store", () => {
8
+ const factory = storeDraftFactory(ctMock);
9
+
9
10
  test("Get store by key", async () => {
10
- ctMock.project("dummy").add("store", {
11
- id: "fake-store",
12
- version: 1,
13
- createdAt: "",
14
- lastModifiedAt: "",
15
- key: "STOREKEY",
16
- countries: [],
17
- languages: [],
18
- distributionChannels: [],
19
- supplyChannels: [],
20
- productSelections: [],
11
+ const store = await factory.create({ key: "STOREKEY" });
12
+
13
+ const response = await ctMock.app.inject({
14
+ method: "GET",
15
+ url: "/dummy/stores/key=STOREKEY",
21
16
  });
22
17
 
23
- const response = await supertest(ctMock.app).get(
24
- "/dummy/stores/key=STOREKEY",
18
+ expect(response.statusCode).toBe(200);
19
+ expect(response.json()).toEqual(
20
+ expect.objectContaining({
21
+ key: "STOREKEY",
22
+ id: store.id,
23
+ version: store.version,
24
+ countries: [],
25
+ languages: [],
26
+ distributionChannels: [],
27
+ supplyChannels: [],
28
+ productSelections: [],
29
+ }),
25
30
  );
26
-
27
- expect(response.status).toBe(200);
28
- expect(response.body).toEqual({
29
- version: 1,
30
- createdAt: "",
31
- id: "fake-store",
32
- key: "STOREKEY",
33
- lastModifiedAt: "",
34
- countries: [],
35
- languages: [],
36
- distributionChannels: [],
37
- supplyChannels: [],
38
- productSelections: [],
39
- } as Store);
40
31
  });
41
32
 
42
33
  test("Get store by 404 when not found by key", async () => {
43
- ctMock.project("dummy").add("store", {
44
- id: "fake-store",
45
- version: 1,
46
- createdAt: "",
47
- lastModifiedAt: "",
48
- key: "STOREKEY",
49
- countries: [],
50
- languages: [],
51
- distributionChannels: [],
52
- supplyChannels: [],
53
- productSelections: [],
54
- });
34
+ await factory.create({ key: "STOREKEY" });
55
35
 
56
- const response = await supertest(ctMock.app).get(
57
- "/dummy/stores/key=DOESNOTEXIST",
58
- );
36
+ const response = await ctMock.app.inject({
37
+ method: "GET",
38
+ url: "/dummy/stores/key=DOESNOTEXIST",
39
+ });
59
40
 
60
- expect(response.status).toBe(404);
41
+ expect(response.statusCode).toBe(404);
61
42
  });
62
43
  });
@@ -1,11 +1,11 @@
1
- import type { Router } from "express";
1
+ import type { FastifyInstance } from "fastify";
2
2
  import type { StoreRepository } from "../repositories/store.ts";
3
3
  import AbstractService from "./abstract.ts";
4
4
 
5
5
  export class StoreService extends AbstractService {
6
6
  public repository: StoreRepository;
7
7
 
8
- constructor(parent: Router, repository: StoreRepository) {
8
+ constructor(parent: FastifyInstance, repository: StoreRepository) {
9
9
  super(parent);
10
10
  this.repository = repository;
11
11
  }
@@ -1,13 +1,14 @@
1
- import type { SubscriptionDraft } from "@commercetools/platform-sdk";
2
- import supertest from "supertest";
3
1
  import { describe, expect, test } from "vitest";
2
+ import { subscriptionDraftFactory } from "#src/testing/index.ts";
4
3
  import { CommercetoolsMock } from "../index.ts";
5
4
 
6
5
  const ctMock = new CommercetoolsMock();
7
6
 
8
7
  describe("Subscription", () => {
8
+ const subscriptionDraft = subscriptionDraftFactory(ctMock);
9
+
9
10
  test("Create subscription", async () => {
10
- const draft: SubscriptionDraft = {
11
+ const draft = subscriptionDraft.build({
11
12
  key: "order-notifications",
12
13
  destination: {
13
14
  type: "SQS",
@@ -22,16 +23,19 @@ describe("Subscription", () => {
22
23
  types: ["OrderCreated", "OrderStateChanged"],
23
24
  },
24
25
  ],
25
- };
26
- const response = await supertest(ctMock.app)
27
- .post("/dummy/subscriptions")
28
- .send(draft);
26
+ });
29
27
 
30
- expect(response.status).toBe(201);
28
+ const response = await ctMock.app.inject({
29
+ method: "POST",
30
+ url: "/dummy/subscriptions",
31
+ payload: draft,
32
+ });
31
33
 
32
- expect(response.body).toEqual({
34
+ expect(response.statusCode).toBe(201);
35
+ expect(response.json()).toEqual({
33
36
  changes: [],
34
37
  createdAt: expect.anything(),
38
+ createdBy: expect.anything(),
35
39
  destination: {
36
40
  accessKey: "AKIAIOSFODNN7EXAMPLE",
37
41
  accessSecret: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
@@ -46,6 +50,7 @@ describe("Subscription", () => {
46
50
  id: expect.anything(),
47
51
  key: "order-notifications",
48
52
  lastModifiedAt: expect.anything(),
53
+ lastModifiedBy: expect.anything(),
49
54
  messages: [
50
55
  {
51
56
  resourceTypeId: "order",
@@ -58,7 +63,7 @@ describe("Subscription", () => {
58
63
  });
59
64
 
60
65
  test("Get subscription", async () => {
61
- const draft: SubscriptionDraft = {
66
+ const subscription = await subscriptionDraft.create({
62
67
  key: "test-subscription",
63
68
  destination: {
64
69
  type: "SQS",
@@ -73,23 +78,19 @@ describe("Subscription", () => {
73
78
  types: ["CustomerCreated"],
74
79
  },
75
80
  ],
76
- };
77
- const createResponse = await supertest(ctMock.app)
78
- .post("/dummy/subscriptions")
79
- .send(draft);
80
-
81
- expect(createResponse.status).toBe(201);
81
+ });
82
82
 
83
- const response = await supertest(ctMock.app).get(
84
- `/dummy/subscriptions/${createResponse.body.id}`,
85
- );
83
+ const response = await ctMock.app.inject({
84
+ method: "GET",
85
+ url: `/dummy/subscriptions/${subscription.id}`,
86
+ });
86
87
 
87
- expect(response.status).toBe(200);
88
- expect(response.body).toEqual(createResponse.body);
88
+ expect(response.statusCode).toBe(200);
89
+ expect(response.json()).toEqual(subscription);
89
90
  });
90
91
 
91
92
  test("Get subscription by key", async () => {
92
- const draft: SubscriptionDraft = {
93
+ const subscription = await subscriptionDraft.create({
93
94
  key: "key-subscription",
94
95
  destination: {
95
96
  type: "SQS",
@@ -104,23 +105,19 @@ describe("Subscription", () => {
104
105
  types: ["ProductPublished"],
105
106
  },
106
107
  ],
107
- };
108
- const createResponse = await supertest(ctMock.app)
109
- .post("/dummy/subscriptions")
110
- .send(draft);
111
-
112
- expect(createResponse.status).toBe(201);
108
+ });
113
109
 
114
- const response = await supertest(ctMock.app).get(
115
- "/dummy/subscriptions/key=key-subscription",
116
- );
110
+ const response = await ctMock.app.inject({
111
+ method: "GET",
112
+ url: "/dummy/subscriptions/key=key-subscription",
113
+ });
117
114
 
118
- expect(response.status).toBe(200);
119
- expect(response.body).toEqual(createResponse.body);
115
+ expect(response.statusCode).toBe(200);
116
+ expect(response.json()).toEqual(subscription);
120
117
  });
121
118
 
122
119
  test("Query subscriptions", async () => {
123
- const draft: SubscriptionDraft = {
120
+ const subscription = await subscriptionDraft.create({
124
121
  key: "query-subscription",
125
122
  destination: {
126
123
  type: "SQS",
@@ -135,17 +132,15 @@ describe("Subscription", () => {
135
132
  types: ["CartCreated"],
136
133
  },
137
134
  ],
138
- };
139
- const createResponse = await supertest(ctMock.app)
140
- .post("/dummy/subscriptions")
141
- .send(draft);
142
-
143
- expect(createResponse.status).toBe(201);
135
+ });
144
136
 
145
- const response = await supertest(ctMock.app).get("/dummy/subscriptions");
137
+ const response = await ctMock.app.inject({
138
+ method: "GET",
139
+ url: "/dummy/subscriptions",
140
+ });
146
141
 
147
- expect(response.status).toBe(200);
148
- expect(response.body.count).toBeGreaterThan(0);
149
- expect(response.body.results).toContainEqual(createResponse.body);
142
+ expect(response.statusCode).toBe(200);
143
+ expect(response.json().count).toBeGreaterThan(0);
144
+ expect(response.json().results).toContainEqual(subscription);
150
145
  });
151
146
  });
@@ -1,11 +1,11 @@
1
- import type { Router } from "express";
1
+ import type { FastifyInstance } from "fastify";
2
2
  import type { SubscriptionRepository } from "../repositories/subscription.ts";
3
3
  import AbstractService from "./abstract.ts";
4
4
 
5
5
  export class SubscriptionService extends AbstractService {
6
6
  public repository: SubscriptionRepository;
7
7
 
8
- constructor(parent: Router, repository: SubscriptionRepository) {
8
+ constructor(parent: FastifyInstance, repository: SubscriptionRepository) {
9
9
  super(parent);
10
10
  this.repository = repository;
11
11
  }