@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,13 +1,14 @@
1
- import type { RecurrencePolicyDraft } from "@commercetools/platform-sdk";
2
- import supertest from "supertest";
3
1
  import { describe, expect, test } from "vitest";
2
+ import { recurrencePolicyDraftFactory } 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("RecurrencePolicy", () => {
8
+ const factory = recurrencePolicyDraftFactory(ctMock);
9
+
9
10
  test("Create recurrence policy", async () => {
10
- const draft: RecurrencePolicyDraft = {
11
+ const draft = factory.build({
11
12
  key: "monthly-policy",
12
13
  name: {
13
14
  "en-GB": "Monthly Recurrence Policy",
@@ -20,35 +21,36 @@ describe("RecurrencePolicy", () => {
20
21
  value: 1,
21
22
  intervalUnit: "Months",
22
23
  },
23
- };
24
- const response = await supertest(ctMock.app)
25
- .post("/dummy/recurrence-policies")
26
- .send(draft);
27
-
28
- expect(response.status).toBe(201);
24
+ });
29
25
 
30
- expect(response.body).toEqual({
31
- createdAt: expect.anything(),
32
- id: expect.anything(),
33
- key: "monthly-policy",
34
- lastModifiedAt: expect.anything(),
35
- name: {
36
- "en-GB": "Monthly Recurrence Policy",
37
- },
38
- description: {
39
- "en-GB": "A policy for monthly recurring orders",
40
- },
41
- schedule: {
42
- type: "standard",
43
- value: 1,
44
- intervalUnit: "Months",
45
- },
46
- version: 1,
26
+ const response = await ctMock.app.inject({
27
+ method: "POST",
28
+ url: "/dummy/recurrence-policies",
29
+ payload: draft,
47
30
  });
31
+
32
+ expect(response.statusCode).toBe(201);
33
+ expect(response.json()).toEqual(
34
+ expect.objectContaining({
35
+ key: "monthly-policy",
36
+ name: expect.objectContaining({
37
+ "en-GB": "Monthly Recurrence Policy",
38
+ }),
39
+ description: {
40
+ "en-GB": "A policy for monthly recurring orders",
41
+ },
42
+ schedule: {
43
+ type: "standard",
44
+ value: 1,
45
+ intervalUnit: "Months",
46
+ },
47
+ version: 1,
48
+ }),
49
+ );
48
50
  });
49
51
 
50
52
  test("Get recurrence policy", async () => {
51
- const draft: RecurrencePolicyDraft = {
53
+ const recurrencePolicy = await factory.create({
52
54
  key: "test-policy",
53
55
  name: {
54
56
  "en-GB": "Test Policy",
@@ -58,23 +60,19 @@ describe("RecurrencePolicy", () => {
58
60
  value: 1,
59
61
  intervalUnit: "Days",
60
62
  },
61
- };
62
- const createResponse = await supertest(ctMock.app)
63
- .post("/dummy/recurrence-policies")
64
- .send(draft);
65
-
66
- expect(createResponse.status).toBe(201);
63
+ });
67
64
 
68
- const response = await supertest(ctMock.app).get(
69
- `/dummy/recurrence-policies/${createResponse.body.id}`,
70
- );
65
+ const response = await ctMock.app.inject({
66
+ method: "GET",
67
+ url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
68
+ });
71
69
 
72
- expect(response.status).toBe(200);
73
- expect(response.body).toEqual(createResponse.body);
70
+ expect(response.statusCode).toBe(200);
71
+ expect(response.json()).toEqual(recurrencePolicy);
74
72
  });
75
73
 
76
74
  test("Get recurrence policy by key", async () => {
77
- const draft: RecurrencePolicyDraft = {
75
+ const recurrencePolicy = await factory.create({
78
76
  key: "key-policy",
79
77
  name: {
80
78
  en: "Key Policy",
@@ -83,23 +81,19 @@ describe("RecurrencePolicy", () => {
83
81
  type: "dayOfMonth",
84
82
  day: 15,
85
83
  },
86
- };
87
- const createResponse = await supertest(ctMock.app)
88
- .post("/dummy/recurrence-policies")
89
- .send(draft);
90
-
91
- expect(createResponse.status).toBe(201);
84
+ });
92
85
 
93
- const response = await supertest(ctMock.app).get(
94
- "/dummy/recurrence-policies/key=key-policy",
95
- );
86
+ const response = await ctMock.app.inject({
87
+ method: "GET",
88
+ url: "/dummy/recurrence-policies/key=key-policy",
89
+ });
96
90
 
97
- expect(response.status).toBe(200);
98
- expect(response.body).toEqual(createResponse.body);
91
+ expect(response.statusCode).toBe(200);
92
+ expect(response.json()).toEqual(recurrencePolicy);
99
93
  });
100
94
 
101
95
  test("Query recurrence policies", async () => {
102
- const draft: RecurrencePolicyDraft = {
96
+ const recurrencePolicy = await factory.create({
103
97
  key: "query-policy",
104
98
  name: {
105
99
  en: "Query Policy",
@@ -109,24 +103,20 @@ describe("RecurrencePolicy", () => {
109
103
  value: 3,
110
104
  intervalUnit: "Months",
111
105
  },
112
- };
113
- const createResponse = await supertest(ctMock.app)
114
- .post("/dummy/recurrence-policies")
115
- .send(draft);
116
-
117
- expect(createResponse.status).toBe(201);
106
+ });
118
107
 
119
- const response = await supertest(ctMock.app).get(
120
- "/dummy/recurrence-policies",
121
- );
108
+ const response = await ctMock.app.inject({
109
+ method: "GET",
110
+ url: "/dummy/recurrence-policies",
111
+ });
122
112
 
123
- expect(response.status).toBe(200);
124
- expect(response.body.count).toBeGreaterThan(0);
125
- expect(response.body.results).toContainEqual(createResponse.body);
113
+ expect(response.statusCode).toBe(200);
114
+ expect(response.json().count).toBeGreaterThan(0);
115
+ expect(response.json().results).toContainEqual(recurrencePolicy);
126
116
  });
127
117
 
128
118
  test("Update recurrence policy - setName", async () => {
129
- const draft: RecurrencePolicyDraft = {
119
+ const recurrencePolicy = await factory.create({
130
120
  key: "update-name-policy",
131
121
  name: {
132
122
  en: "Original Name",
@@ -136,17 +126,13 @@ describe("RecurrencePolicy", () => {
136
126
  value: 1,
137
127
  intervalUnit: "Weeks",
138
128
  },
139
- };
140
- const createResponse = await supertest(ctMock.app)
141
- .post("/dummy/recurrence-policies")
142
- .send(draft);
143
-
144
- expect(createResponse.status).toBe(201);
129
+ });
145
130
 
146
- const updateResponse = await supertest(ctMock.app)
147
- .post(`/dummy/recurrence-policies/${createResponse.body.id}`)
148
- .send({
149
- version: createResponse.body.version,
131
+ const updateResponse = await ctMock.app.inject({
132
+ method: "POST",
133
+ url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
134
+ payload: {
135
+ version: recurrencePolicy.version,
150
136
  actions: [
151
137
  {
152
138
  action: "setName",
@@ -156,18 +142,19 @@ describe("RecurrencePolicy", () => {
156
142
  },
157
143
  },
158
144
  ],
159
- });
145
+ },
146
+ });
160
147
 
161
- expect(updateResponse.status).toBe(200);
162
- expect(updateResponse.body.name).toEqual({
148
+ expect(updateResponse.statusCode).toBe(200);
149
+ expect(updateResponse.json().name).toEqual({
163
150
  en: "Updated Name",
164
151
  de: "Aktualisierter Name",
165
152
  });
166
- expect(updateResponse.body.version).toBe(2);
153
+ expect(updateResponse.json().version).toBe(2);
167
154
  });
168
155
 
169
156
  test("Update recurrence policy - setDescription", async () => {
170
- const draft: RecurrencePolicyDraft = {
157
+ const recurrencePolicy = await factory.create({
171
158
  key: "update-description-policy",
172
159
  name: {
173
160
  en: "Test Policy",
@@ -176,17 +163,13 @@ describe("RecurrencePolicy", () => {
176
163
  type: "dayOfMonth",
177
164
  day: 10,
178
165
  },
179
- };
180
- const createResponse = await supertest(ctMock.app)
181
- .post("/dummy/recurrence-policies")
182
- .send(draft);
183
-
184
- expect(createResponse.status).toBe(201);
166
+ });
185
167
 
186
- const updateResponse = await supertest(ctMock.app)
187
- .post(`/dummy/recurrence-policies/${createResponse.body.id}`)
188
- .send({
189
- version: createResponse.body.version,
168
+ const updateResponse = await ctMock.app.inject({
169
+ method: "POST",
170
+ url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
171
+ payload: {
172
+ version: recurrencePolicy.version,
190
173
  actions: [
191
174
  {
192
175
  action: "setDescription",
@@ -196,18 +179,19 @@ describe("RecurrencePolicy", () => {
196
179
  },
197
180
  },
198
181
  ],
199
- });
182
+ },
183
+ });
200
184
 
201
- expect(updateResponse.status).toBe(200);
202
- expect(updateResponse.body.description).toEqual({
185
+ expect(updateResponse.statusCode).toBe(200);
186
+ expect(updateResponse.json().description).toEqual({
203
187
  en: "New description",
204
188
  de: "Neue Beschreibung",
205
189
  });
206
- expect(updateResponse.body.version).toBe(2);
190
+ expect(updateResponse.json().version).toBe(2);
207
191
  });
208
192
 
209
193
  test("Update recurrence policy - setKey", async () => {
210
- const draft: RecurrencePolicyDraft = {
194
+ const recurrencePolicy = await factory.create({
211
195
  key: "original-key",
212
196
  name: {
213
197
  en: "Test Policy",
@@ -217,32 +201,29 @@ describe("RecurrencePolicy", () => {
217
201
  value: 1,
218
202
  intervalUnit: "Months",
219
203
  },
220
- };
221
- const createResponse = await supertest(ctMock.app)
222
- .post("/dummy/recurrence-policies")
223
- .send(draft);
224
-
225
- expect(createResponse.status).toBe(201);
204
+ });
226
205
 
227
- const updateResponse = await supertest(ctMock.app)
228
- .post(`/dummy/recurrence-policies/${createResponse.body.id}`)
229
- .send({
230
- version: createResponse.body.version,
206
+ const updateResponse = await ctMock.app.inject({
207
+ method: "POST",
208
+ url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
209
+ payload: {
210
+ version: recurrencePolicy.version,
231
211
  actions: [
232
212
  {
233
213
  action: "setKey",
234
214
  key: "updated-key",
235
215
  },
236
216
  ],
237
- });
217
+ },
218
+ });
238
219
 
239
- expect(updateResponse.status).toBe(200);
240
- expect(updateResponse.body.key).toBe("updated-key");
241
- expect(updateResponse.body.version).toBe(2);
220
+ expect(updateResponse.statusCode).toBe(200);
221
+ expect(updateResponse.json().key).toBe("updated-key");
222
+ expect(updateResponse.json().version).toBe(2);
242
223
  });
243
224
 
244
225
  test("Update recurrence policy - setSchedule", async () => {
245
- const draft: RecurrencePolicyDraft = {
226
+ const recurrencePolicy = await factory.create({
246
227
  key: "update-schedule-policy",
247
228
  name: {
248
229
  en: "Schedule Policy",
@@ -252,17 +233,13 @@ describe("RecurrencePolicy", () => {
252
233
  value: 1,
253
234
  intervalUnit: "Weeks",
254
235
  },
255
- };
256
- const createResponse = await supertest(ctMock.app)
257
- .post("/dummy/recurrence-policies")
258
- .send(draft);
259
-
260
- expect(createResponse.status).toBe(201);
236
+ });
261
237
 
262
- const updateResponse = await supertest(ctMock.app)
263
- .post(`/dummy/recurrence-policies/${createResponse.body.id}`)
264
- .send({
265
- version: createResponse.body.version,
238
+ const updateResponse = await ctMock.app.inject({
239
+ method: "POST",
240
+ url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
241
+ payload: {
242
+ version: recurrencePolicy.version,
266
243
  actions: [
267
244
  {
268
245
  action: "setSchedule",
@@ -272,18 +249,19 @@ describe("RecurrencePolicy", () => {
272
249
  },
273
250
  },
274
251
  ],
275
- });
252
+ },
253
+ });
276
254
 
277
- expect(updateResponse.status).toBe(200);
278
- expect(updateResponse.body.schedule).toEqual({
255
+ expect(updateResponse.statusCode).toBe(200);
256
+ expect(updateResponse.json().schedule).toEqual({
279
257
  type: "dayOfMonth",
280
258
  day: 25,
281
259
  });
282
- expect(updateResponse.body.version).toBe(2);
260
+ expect(updateResponse.json().version).toBe(2);
283
261
  });
284
262
 
285
263
  test("Delete recurrence policy", async () => {
286
- const draft: RecurrencePolicyDraft = {
264
+ const recurrencePolicy = await factory.create({
287
265
  key: "delete-policy",
288
266
  name: {
289
267
  en: "Delete Policy",
@@ -293,24 +271,21 @@ describe("RecurrencePolicy", () => {
293
271
  value: 1,
294
272
  intervalUnit: "Days",
295
273
  },
296
- };
297
- const createResponse = await supertest(ctMock.app)
298
- .post("/dummy/recurrence-policies")
299
- .send(draft);
300
-
301
- expect(createResponse.status).toBe(201);
274
+ });
302
275
 
303
- const deleteResponse = await supertest(ctMock.app)
304
- .delete(`/dummy/recurrence-policies/${createResponse.body.id}`)
305
- .query({ version: createResponse.body.version });
276
+ const deleteResponse = await ctMock.app.inject({
277
+ method: "DELETE",
278
+ url: `/dummy/recurrence-policies/${recurrencePolicy.id}?version=${recurrencePolicy.version}`,
279
+ });
306
280
 
307
- expect(deleteResponse.status).toBe(200);
308
- expect(deleteResponse.body).toEqual(createResponse.body);
281
+ expect(deleteResponse.statusCode).toBe(200);
282
+ expect(deleteResponse.json()).toEqual(recurrencePolicy);
309
283
 
310
- const getResponse = await supertest(ctMock.app).get(
311
- `/dummy/recurrence-policies/${createResponse.body.id}`,
312
- );
284
+ const getResponse = await ctMock.app.inject({
285
+ method: "GET",
286
+ url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
287
+ });
313
288
 
314
- expect(getResponse.status).toBe(404);
289
+ expect(getResponse.statusCode).toBe(404);
315
290
  });
316
291
  });
@@ -1,11 +1,11 @@
1
- import type { Router } from "express";
1
+ import type { FastifyInstance } from "fastify";
2
2
  import type { RecurrencePolicyRepository } from "../repositories/recurrence-policy/index.ts";
3
3
  import AbstractService from "./abstract.ts";
4
4
 
5
5
  export class RecurrencePolicyService extends AbstractService {
6
6
  public repository: RecurrencePolicyRepository;
7
7
 
8
- constructor(parent: Router, repository: RecurrencePolicyRepository) {
8
+ constructor(parent: FastifyInstance, repository: RecurrencePolicyRepository) {
9
9
  super(parent);
10
10
  this.repository = repository;
11
11
  }