@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.
- package/README.md +31 -8
- package/dist/abstract-BKFcva6S.mjs +1044 -0
- package/dist/abstract-BKFcva6S.mjs.map +1 -0
- package/dist/config-BcNSzPZz.d.mts +1718 -0
- package/dist/index.d.mts +50 -1633
- package/dist/index.mjs +3771 -2654
- package/dist/index.mjs.map +1 -1
- package/dist/storage/sqlite.d.mts +59 -0
- package/dist/storage/sqlite.mjs +234 -0
- package/dist/storage/sqlite.mjs.map +1 -0
- package/package.json +26 -29
- package/src/ctMock.ts +125 -136
- package/src/helpers.ts +14 -6
- package/src/index.ts +5 -0
- package/src/lib/masking.ts +4 -5
- package/src/lib/product-review-statistics.test.ts +257 -294
- package/src/lib/review-statistics.ts +17 -4
- package/src/oauth/helpers.ts +7 -4
- package/src/oauth/server.test.ts +102 -62
- package/src/oauth/server.ts +215 -213
- package/src/oauth/store.ts +20 -6
- package/src/orderSearch.ts +3 -3
- package/src/product-projection-search.ts +38 -20
- package/src/product-search-availability.test.ts +31 -52
- package/src/product-search.ts +19 -10
- package/src/projectAPI.ts +6 -22
- package/src/repositories/abstract.ts +182 -48
- package/src/repositories/as-associate.test.ts +19 -19
- package/src/repositories/associate-role.ts +12 -23
- package/src/repositories/attribute-group.test.ts +23 -23
- package/src/repositories/attribute-group.ts +6 -4
- package/src/repositories/business-unit.test.ts +63 -57
- package/src/repositories/business-unit.ts +107 -55
- package/src/repositories/cart/actions.ts +96 -65
- package/src/repositories/cart/helpers.ts +15 -11
- package/src/repositories/cart/index.test.ts +136 -30
- package/src/repositories/cart/index.ts +76 -59
- package/src/repositories/cart-discount/actions.ts +12 -44
- package/src/repositories/cart-discount/index.ts +20 -8
- package/src/repositories/category/actions.ts +27 -27
- package/src/repositories/category/index.test.ts +13 -9
- package/src/repositories/category/index.ts +40 -23
- package/src/repositories/channel.test.ts +53 -51
- package/src/repositories/channel.ts +12 -22
- package/src/repositories/custom-object.ts +34 -25
- package/src/repositories/customer/actions.ts +47 -25
- package/src/repositories/customer/index.test.ts +11 -11
- package/src/repositories/customer/index.ts +65 -35
- package/src/repositories/customer-group.test.ts +44 -42
- package/src/repositories/customer-group.ts +12 -22
- package/src/repositories/discount-code/actions.ts +3 -19
- package/src/repositories/discount-code/index.ts +9 -4
- package/src/repositories/discount-group/index.ts +8 -3
- package/src/repositories/extension.test.ts +27 -27
- package/src/repositories/extension.ts +10 -5
- package/src/repositories/helpers.ts +126 -47
- package/src/repositories/inventory-entry/actions.ts +3 -24
- package/src/repositories/inventory-entry/index.ts +19 -11
- package/src/repositories/my-customer.ts +13 -12
- package/src/repositories/my-order.ts +5 -2
- package/src/repositories/order/actions.ts +89 -56
- package/src/repositories/order/index.test.ts +36 -31
- package/src/repositories/order/index.ts +83 -49
- package/src/repositories/order-edit.ts +8 -3
- package/src/repositories/payment/actions.ts +64 -44
- package/src/repositories/payment/helpers.ts +3 -3
- package/src/repositories/payment/index.ts +28 -12
- package/src/repositories/product/actions.ts +133 -98
- package/src/repositories/product/helpers.ts +29 -16
- package/src/repositories/product/index.ts +42 -25
- package/src/repositories/product-discount.ts +6 -4
- package/src/repositories/product-projection.ts +41 -21
- package/src/repositories/product-selection.ts +8 -15
- package/src/repositories/product-tailoring.ts +22 -3
- package/src/repositories/product-type.ts +45 -4
- package/src/repositories/project.ts +57 -13
- package/src/repositories/quote/actions.ts +5 -28
- package/src/repositories/quote/index.ts +29 -6
- package/src/repositories/quote-request/actions.ts +5 -28
- package/src/repositories/quote-request/index.test.ts +3 -3
- package/src/repositories/quote-request/index.ts +31 -11
- package/src/repositories/quote-staged/actions.ts +5 -28
- package/src/repositories/quote-staged/index.ts +22 -8
- package/src/repositories/recurrence-policy/index.ts +6 -4
- package/src/repositories/recurring-order/actions.ts +7 -32
- package/src/repositories/recurring-order/index.ts +8 -6
- package/src/repositories/review.test.ts +147 -142
- package/src/repositories/review.ts +31 -37
- package/src/repositories/shipping-method/actions.ts +11 -28
- package/src/repositories/shipping-method/index.ts +26 -15
- package/src/repositories/shopping-list/actions.ts +21 -31
- package/src/repositories/shopping-list/index.ts +44 -22
- package/src/repositories/standalone-price.ts +6 -4
- package/src/repositories/state.ts +15 -9
- package/src/repositories/store.ts +21 -32
- package/src/repositories/subscription.test.ts +22 -22
- package/src/repositories/subscription.ts +8 -3
- package/src/repositories/tax-category/index.ts +8 -3
- package/src/repositories/type/actions.ts +21 -3
- package/src/repositories/type/index.ts +5 -3
- package/src/repositories/zone.test.ts +112 -77
- package/src/repositories/zone.ts +5 -3
- package/src/schemas/generated/associate-role.ts +13 -0
- package/src/schemas/generated/attribute-group.ts +12 -0
- package/src/schemas/generated/business-unit.ts +38 -0
- package/src/schemas/generated/cart-discount.ts +33 -0
- package/src/schemas/generated/cart.ts +61 -0
- package/src/schemas/generated/category.ts +25 -0
- package/src/schemas/generated/channel.ts +21 -0
- package/src/schemas/generated/common.ts +1372 -0
- package/src/schemas/generated/custom-object.ts +11 -0
- package/src/schemas/generated/customer-group.ts +11 -0
- package/src/schemas/generated/customer.ts +47 -0
- package/src/schemas/generated/discount-code.ts +25 -0
- package/src/schemas/generated/discount-group.ts +13 -0
- package/src/schemas/generated/extension.ts +15 -0
- package/src/schemas/generated/index.ts +42 -0
- package/src/schemas/generated/inventory-entry.ts +20 -0
- package/src/schemas/generated/my-quote-request.ts +10 -0
- package/src/schemas/generated/order-edit.ts +18 -0
- package/src/schemas/generated/order-from-cart.ts +25 -0
- package/src/schemas/generated/payment.ts +30 -0
- package/src/schemas/generated/product-discount.ts +20 -0
- package/src/schemas/generated/product-selection.ts +18 -0
- package/src/schemas/generated/product-tailoring.ts +26 -0
- package/src/schemas/generated/product-type.ts +12 -0
- package/src/schemas/generated/product.ts +37 -0
- package/src/schemas/generated/quote-request.ts +19 -0
- package/src/schemas/generated/quote.ts +18 -0
- package/src/schemas/generated/recurrence-policy.ts +15 -0
- package/src/schemas/generated/recurring-order.ts +19 -0
- package/src/schemas/generated/review.ts +24 -0
- package/src/schemas/generated/shipping-method.ts +24 -0
- package/src/schemas/generated/shopping-list.ts +28 -0
- package/src/schemas/generated/staged-quote.ts +18 -0
- package/src/schemas/generated/standalone-price.ts +32 -0
- package/src/schemas/generated/state.ts +20 -0
- package/src/schemas/generated/store.ts +23 -0
- package/src/schemas/generated/subscription.ts +20 -0
- package/src/schemas/generated/tax-category.ts +12 -0
- package/src/schemas/generated/type.ts +17 -0
- package/src/schemas/generated/zone.ts +12 -0
- package/src/schemas/update-request.ts +3 -5
- package/src/server.ts +32 -4
- package/src/services/abstract.ts +207 -101
- package/src/services/as-associate-cart.test.ts +28 -36
- package/src/services/as-associate-cart.ts +15 -12
- package/src/services/as-associate-order.test.ts +33 -40
- package/src/services/as-associate-order.ts +15 -12
- package/src/services/as-associate-quote-request.ts +15 -12
- package/src/services/as-associate-shopping-list.test.ts +25 -35
- package/src/services/as-associate-shopping-list.ts +15 -12
- package/src/services/as-associate.test.ts +21 -15
- package/src/services/as-associate.ts +23 -22
- package/src/services/associate-roles.test.ts +16 -22
- package/src/services/associate-roles.ts +2 -2
- package/src/services/attribute-group.test.ts +40 -44
- package/src/services/attribute-group.ts +2 -2
- package/src/services/business-units.test.ts +227 -163
- package/src/services/business-units.ts +2 -2
- package/src/services/cart-discount.test.ts +253 -187
- package/src/services/cart-discount.ts +2 -2
- package/src/services/cart.test.ts +833 -832
- package/src/services/cart.ts +31 -12
- package/src/services/category.test.ts +208 -130
- package/src/services/category.ts +2 -2
- package/src/services/channel.test.ts +39 -44
- package/src/services/channel.ts +2 -2
- package/src/services/custom-object.test.ts +103 -79
- package/src/services/custom-object.ts +106 -38
- package/src/services/customer-group.test.ts +39 -44
- package/src/services/customer-group.ts +2 -2
- package/src/services/customer.test.ts +357 -292
- package/src/services/customer.ts +70 -23
- package/src/services/discount-code.test.ts +57 -68
- package/src/services/discount-code.ts +2 -2
- package/src/services/discount-group.test.ts +111 -134
- package/src/services/discount-group.ts +2 -2
- package/src/services/draft-validation.test.ts +255 -0
- package/src/services/extension.test.ts +39 -44
- package/src/services/extension.ts +2 -2
- package/src/services/inventory-entry.test.ts +106 -87
- package/src/services/inventory-entry.ts +2 -2
- package/src/services/my-business-unit.test.ts +82 -112
- package/src/services/my-business-unit.ts +25 -19
- package/src/services/my-cart.test.ts +46 -41
- package/src/services/my-cart.ts +32 -28
- package/src/services/my-customer.test.ts +153 -88
- package/src/services/my-customer.ts +130 -61
- package/src/services/my-order.ts +15 -12
- package/src/services/my-payment.test.ts +30 -24
- package/src/services/my-payment.ts +2 -2
- package/src/services/my-shopping-list.ts +2 -2
- package/src/services/order.test.ts +332 -276
- package/src/services/order.ts +45 -27
- package/src/services/payment.test.ts +31 -29
- package/src/services/payment.ts +2 -2
- package/src/services/product-discount.test.ts +39 -46
- package/src/services/product-discount.ts +2 -2
- package/src/services/product-projection.test.ts +176 -166
- package/src/services/product-projection.ts +31 -15
- package/src/services/product-selection.test.ts +17 -9
- package/src/services/product-selection.ts +2 -2
- package/src/services/product-type.test.ts +80 -21
- package/src/services/product-type.ts +2 -2
- package/src/services/product.test.ts +569 -534
- package/src/services/product.ts +14 -7
- package/src/services/project.test.ts +22 -12
- package/src/services/project.ts +28 -13
- package/src/services/quote-request.test.ts +36 -39
- package/src/services/quote-request.ts +2 -2
- package/src/services/quote-staged.ts +2 -2
- package/src/services/quote.ts +2 -2
- package/src/services/recurrence-policy.test.ts +114 -139
- package/src/services/recurrence-policy.ts +2 -2
- package/src/services/recurring-order.test.ts +149 -194
- package/src/services/recurring-order.ts +2 -2
- package/src/services/reviews.test.ts +127 -106
- package/src/services/reviews.ts +2 -2
- package/src/services/shipping-method.test.ts +96 -125
- package/src/services/shipping-method.ts +24 -12
- package/src/services/shopping-list.test.ts +183 -141
- package/src/services/shopping-list.ts +2 -2
- package/src/services/standalone-price.test.ts +60 -46
- package/src/services/standalone-price.ts +2 -2
- package/src/services/state.test.ts +20 -25
- package/src/services/state.ts +2 -2
- package/src/services/store.test.ts +26 -45
- package/src/services/store.ts +2 -2
- package/src/services/subscription.test.ts +39 -44
- package/src/services/subscription.ts +2 -2
- package/src/services/tax-category.test.ts +33 -36
- package/src/services/tax-category.ts +2 -2
- package/src/services/type.test.ts +45 -44
- package/src/services/type.ts +2 -2
- package/src/services/zone.test.ts +40 -44
- package/src/services/zone.ts +2 -2
- package/src/shipping.ts +41 -11
- package/src/storage/abstract.ts +248 -17
- package/src/storage/in-memory.ts +147 -290
- package/src/storage/sqlite.ts +429 -0
- package/src/storage/storage-map.ts +75 -0
- package/src/storage/storage.test-helpers.ts +97 -0
- package/src/storage/storage.test.ts +802 -0
- package/src/testing/associate-role.ts +28 -0
- package/src/testing/attribute-group.ts +27 -0
- package/src/testing/business-unit.ts +9 -8
- package/src/testing/cart-discount.ts +34 -0
- package/src/testing/cart.ts +20 -0
- package/src/testing/category.ts +25 -0
- package/src/testing/channel.ts +23 -0
- package/src/testing/custom-object.ts +27 -0
- package/src/testing/customer-group.ts +26 -0
- package/src/testing/customer.ts +36 -33
- package/src/testing/discount-code.ts +29 -0
- package/src/testing/discount-group.ts +27 -0
- package/src/testing/extension.ts +32 -0
- package/src/testing/index.ts +33 -0
- package/src/testing/inventory-entry.ts +26 -0
- package/src/testing/order.ts +27 -0
- package/src/testing/payment.ts +23 -0
- package/src/testing/product-discount.ts +33 -0
- package/src/testing/product-selection.ts +28 -0
- package/src/testing/product-type.ts +27 -0
- package/src/testing/product.ts +38 -0
- package/src/testing/quote-request.ts +29 -0
- package/src/testing/recurrence-policy.ts +33 -0
- package/src/testing/recurring-order.ts +32 -0
- package/src/testing/review.ts +24 -0
- package/src/testing/shipping-method.ts +31 -0
- package/src/testing/shopping-list.ts +25 -0
- package/src/testing/standalone-price.ts +31 -0
- package/src/testing/state.ts +21 -0
- package/src/testing/store.ts +26 -0
- package/src/testing/subscription.ts +38 -0
- package/src/testing/tax-category.ts +27 -0
- package/src/testing/type.ts +9 -6
- package/src/testing/zone.ts +22 -0
- package/src/validate.test.ts +122 -0
- package/src/validate.ts +78 -7
- 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
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
|
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
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
const response = await ctMock.app.inject({
|
|
66
|
+
method: "GET",
|
|
67
|
+
url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
|
|
68
|
+
});
|
|
71
69
|
|
|
72
|
-
expect(response.
|
|
73
|
-
expect(response.
|
|
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
|
|
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
|
|
94
|
-
"
|
|
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.
|
|
98
|
-
expect(response.
|
|
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
|
|
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
|
|
120
|
-
"
|
|
121
|
-
|
|
108
|
+
const response = await ctMock.app.inject({
|
|
109
|
+
method: "GET",
|
|
110
|
+
url: "/dummy/recurrence-policies",
|
|
111
|
+
});
|
|
122
112
|
|
|
123
|
-
expect(response.
|
|
124
|
-
expect(response.
|
|
125
|
-
expect(response.
|
|
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
|
|
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
|
|
147
|
-
|
|
148
|
-
.
|
|
149
|
-
|
|
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.
|
|
162
|
-
expect(updateResponse.
|
|
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.
|
|
153
|
+
expect(updateResponse.json().version).toBe(2);
|
|
167
154
|
});
|
|
168
155
|
|
|
169
156
|
test("Update recurrence policy - setDescription", async () => {
|
|
170
|
-
const
|
|
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
|
|
187
|
-
|
|
188
|
-
.
|
|
189
|
-
|
|
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.
|
|
202
|
-
expect(updateResponse.
|
|
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.
|
|
190
|
+
expect(updateResponse.json().version).toBe(2);
|
|
207
191
|
});
|
|
208
192
|
|
|
209
193
|
test("Update recurrence policy - setKey", async () => {
|
|
210
|
-
const
|
|
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
|
|
228
|
-
|
|
229
|
-
.
|
|
230
|
-
|
|
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.
|
|
240
|
-
expect(updateResponse.
|
|
241
|
-
expect(updateResponse.
|
|
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
|
|
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
|
|
263
|
-
|
|
264
|
-
.
|
|
265
|
-
|
|
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.
|
|
278
|
-
expect(updateResponse.
|
|
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.
|
|
260
|
+
expect(updateResponse.json().version).toBe(2);
|
|
283
261
|
});
|
|
284
262
|
|
|
285
263
|
test("Delete recurrence policy", async () => {
|
|
286
|
-
const
|
|
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
|
|
304
|
-
|
|
305
|
-
|
|
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.
|
|
308
|
-
expect(deleteResponse.
|
|
281
|
+
expect(deleteResponse.statusCode).toBe(200);
|
|
282
|
+
expect(deleteResponse.json()).toEqual(recurrencePolicy);
|
|
309
283
|
|
|
310
|
-
const getResponse = await
|
|
311
|
-
|
|
312
|
-
|
|
284
|
+
const getResponse = await ctMock.app.inject({
|
|
285
|
+
method: "GET",
|
|
286
|
+
url: `/dummy/recurrence-policies/${recurrencePolicy.id}`,
|
|
287
|
+
});
|
|
313
288
|
|
|
314
|
-
expect(getResponse.
|
|
289
|
+
expect(getResponse.statusCode).toBe(404);
|
|
315
290
|
});
|
|
316
291
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
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:
|
|
8
|
+
constructor(parent: FastifyInstance, repository: RecurrencePolicyRepository) {
|
|
9
9
|
super(parent);
|
|
10
10
|
this.repository = repository;
|
|
11
11
|
}
|