@labdigital/commercetools-mock 2.66.0 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +3769 -2653
- 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 +84 -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 +1370 -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
|
@@ -5,88 +5,105 @@ import type {
|
|
|
5
5
|
Payment,
|
|
6
6
|
State,
|
|
7
7
|
} from "@commercetools/platform-sdk";
|
|
8
|
-
import
|
|
9
|
-
|
|
8
|
+
import {
|
|
9
|
+
afterEach,
|
|
10
|
+
beforeAll,
|
|
11
|
+
beforeEach,
|
|
12
|
+
describe,
|
|
13
|
+
expect,
|
|
14
|
+
it,
|
|
15
|
+
test,
|
|
16
|
+
} from "vitest";
|
|
10
17
|
import { generateRandomString } from "#src/helpers.ts";
|
|
18
|
+
import {
|
|
19
|
+
cartDraftFactory,
|
|
20
|
+
channelDraftFactory,
|
|
21
|
+
orderDraftFactory,
|
|
22
|
+
typeDraftFactory,
|
|
23
|
+
} from "#src/testing/index.ts";
|
|
11
24
|
import { CommercetoolsMock, getBaseResourceProperties } from "../index.ts";
|
|
12
25
|
|
|
13
26
|
describe("Order Query", () => {
|
|
14
27
|
const ctMock = new CommercetoolsMock();
|
|
28
|
+
const cartDraft = cartDraftFactory(ctMock);
|
|
29
|
+
const orderDraft = orderDraftFactory(ctMock);
|
|
15
30
|
let order: Order | undefined;
|
|
16
31
|
|
|
17
32
|
beforeEach(async () => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
type: {
|
|
24
|
-
key: "my-cart",
|
|
25
|
-
},
|
|
26
|
-
fields: {
|
|
27
|
-
description: "example description",
|
|
28
|
-
},
|
|
33
|
+
const cart = await cartDraft.create({
|
|
34
|
+
currency: "EUR",
|
|
35
|
+
custom: {
|
|
36
|
+
type: {
|
|
37
|
+
key: "my-cart",
|
|
29
38
|
},
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const cart = response.body;
|
|
33
|
-
|
|
34
|
-
response = await supertest(ctMock.app)
|
|
35
|
-
.post("/dummy/orders")
|
|
36
|
-
.send({
|
|
37
|
-
cart: {
|
|
38
|
-
typeId: "cart",
|
|
39
|
-
id: cart.id,
|
|
39
|
+
fields: {
|
|
40
|
+
description: "example description",
|
|
40
41
|
},
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
order =
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
order = await orderDraft.create({
|
|
46
|
+
cart: {
|
|
47
|
+
typeId: "cart",
|
|
48
|
+
id: cart.id,
|
|
49
|
+
},
|
|
50
|
+
version: cart.version,
|
|
51
|
+
orderNumber: "foobar",
|
|
52
|
+
});
|
|
45
53
|
});
|
|
46
54
|
|
|
47
|
-
afterEach(() => {
|
|
48
|
-
ctMock.clear();
|
|
55
|
+
afterEach(async () => {
|
|
56
|
+
await ctMock.clear();
|
|
49
57
|
});
|
|
50
58
|
|
|
51
59
|
test("no filter", async () => {
|
|
52
60
|
assert(order, "order not created");
|
|
53
61
|
|
|
54
|
-
const response = await
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
expect(response.
|
|
59
|
-
expect(response.
|
|
62
|
+
const response = await ctMock.app.inject({
|
|
63
|
+
method: "GET",
|
|
64
|
+
url: "/dummy/orders",
|
|
65
|
+
});
|
|
66
|
+
expect(response.statusCode).toBe(200);
|
|
67
|
+
expect(response.json().count).toBe(1);
|
|
68
|
+
expect(response.json().total).toBe(1);
|
|
69
|
+
expect(response.json().offset).toBe(0);
|
|
70
|
+
expect(response.json().limit).toBe(20);
|
|
60
71
|
});
|
|
61
72
|
|
|
62
73
|
test("filter orderNumber", async () => {
|
|
63
74
|
assert(order, "order not created");
|
|
64
75
|
|
|
65
76
|
{
|
|
66
|
-
const response = await
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
const response = await ctMock.app.inject({
|
|
78
|
+
method: "GET",
|
|
79
|
+
url: "/dummy/orders",
|
|
80
|
+
query: { where: 'orderNumber="nomatch"' },
|
|
81
|
+
});
|
|
82
|
+
expect(response.statusCode).toBe(200);
|
|
83
|
+
expect(response.json().count).toBe(0);
|
|
71
84
|
}
|
|
72
85
|
{
|
|
73
|
-
const response = await
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
86
|
+
const response = await ctMock.app.inject({
|
|
87
|
+
method: "GET",
|
|
88
|
+
url: "/dummy/orders",
|
|
89
|
+
query: { where: 'orderNumber="foobar"' },
|
|
90
|
+
});
|
|
91
|
+
expect(response.statusCode).toBe(200);
|
|
92
|
+
expect(response.json().count).toBe(1);
|
|
78
93
|
}
|
|
79
94
|
});
|
|
80
95
|
|
|
81
96
|
test("expand payment without payments", async () => {
|
|
82
97
|
assert(order, "order not created");
|
|
83
98
|
|
|
84
|
-
const response = await
|
|
85
|
-
|
|
86
|
-
|
|
99
|
+
const response = await ctMock.app.inject({
|
|
100
|
+
method: "GET",
|
|
101
|
+
url: `/dummy/orders/${order.id}`,
|
|
102
|
+
query: { expand: "paymentInfo.payments[*].paymentStatus.state" },
|
|
103
|
+
});
|
|
87
104
|
|
|
88
|
-
expect(response.
|
|
89
|
-
expect(response.
|
|
105
|
+
expect(response.statusCode).toBe(200);
|
|
106
|
+
expect(response.json().id).toBe(order.id);
|
|
90
107
|
});
|
|
91
108
|
});
|
|
92
109
|
|
|
@@ -95,8 +112,8 @@ describe("Order payment tests", () => {
|
|
|
95
112
|
defaultProjectKey: "dummy",
|
|
96
113
|
});
|
|
97
114
|
|
|
98
|
-
afterEach(() => {
|
|
99
|
-
ctMock.clear();
|
|
115
|
+
afterEach(async () => {
|
|
116
|
+
await ctMock.clear();
|
|
100
117
|
});
|
|
101
118
|
|
|
102
119
|
test("query payment id", async () => {
|
|
@@ -171,24 +188,28 @@ describe("Order payment tests", () => {
|
|
|
171
188
|
},
|
|
172
189
|
};
|
|
173
190
|
|
|
174
|
-
ctMock.project().
|
|
175
|
-
ctMock.project().
|
|
176
|
-
ctMock.project().
|
|
191
|
+
await ctMock.project().unsafeAdd("state", state);
|
|
192
|
+
await ctMock.project().unsafeAdd("payment", payment);
|
|
193
|
+
await ctMock.project().unsafeAdd("order", order);
|
|
177
194
|
|
|
178
|
-
const response = await
|
|
179
|
-
|
|
180
|
-
|
|
195
|
+
const response = await ctMock.app.inject({
|
|
196
|
+
method: "GET",
|
|
197
|
+
url: "/dummy/orders",
|
|
198
|
+
query: { where: `paymentInfo(payments(id="${payment.id}"))` },
|
|
199
|
+
});
|
|
181
200
|
|
|
182
|
-
expect(response.
|
|
183
|
-
expect(response.
|
|
201
|
+
expect(response.statusCode).toBe(200);
|
|
202
|
+
expect(response.json().results[0].id).toBe(order.id);
|
|
184
203
|
|
|
185
204
|
{
|
|
186
|
-
const response = await
|
|
187
|
-
|
|
188
|
-
|
|
205
|
+
const response = await ctMock.app.inject({
|
|
206
|
+
method: "GET",
|
|
207
|
+
url: "/dummy/orders",
|
|
208
|
+
query: { where: "paymentInfo(payments(id is defined))" },
|
|
209
|
+
});
|
|
189
210
|
|
|
190
|
-
expect(response.
|
|
191
|
-
expect(response.
|
|
211
|
+
expect(response.statusCode).toBe(200);
|
|
212
|
+
expect(response.json().results[0].id).toBe(order.id);
|
|
192
213
|
}
|
|
193
214
|
});
|
|
194
215
|
|
|
@@ -264,28 +285,31 @@ describe("Order payment tests", () => {
|
|
|
264
285
|
},
|
|
265
286
|
};
|
|
266
287
|
|
|
267
|
-
ctMock.project().
|
|
268
|
-
ctMock.project().
|
|
269
|
-
ctMock.project().
|
|
288
|
+
await ctMock.project().unsafeAdd("state", state);
|
|
289
|
+
await ctMock.project().unsafeAdd("payment", payment);
|
|
290
|
+
await ctMock.project().unsafeAdd("order", order);
|
|
270
291
|
|
|
271
|
-
const response = await
|
|
272
|
-
|
|
273
|
-
|
|
292
|
+
const response = await ctMock.app.inject({
|
|
293
|
+
method: "GET",
|
|
294
|
+
url: `/dummy/orders/order-number=${order.orderNumber}`,
|
|
295
|
+
query: { expand: "paymentInfo.payments[*].paymentStatus.state" },
|
|
296
|
+
});
|
|
274
297
|
|
|
275
|
-
expect(response.
|
|
276
|
-
expect(response.
|
|
277
|
-
const maybePayment = response.
|
|
298
|
+
expect(response.statusCode).toBe(200);
|
|
299
|
+
expect(response.json().id).toBe(order.id);
|
|
300
|
+
const maybePayment = response.json().paymentInfo.payments[0].obj;
|
|
278
301
|
expect(maybePayment).toBeDefined();
|
|
279
302
|
expect(maybePayment.paymentStatus.state.obj).toBeDefined();
|
|
280
303
|
});
|
|
281
304
|
|
|
282
305
|
test("get by orderNumber - not found", async () => {
|
|
283
|
-
const response = await
|
|
284
|
-
"
|
|
285
|
-
|
|
306
|
+
const response = await ctMock.app.inject({
|
|
307
|
+
method: "GET",
|
|
308
|
+
url: "/dummy/orders/order-number=nonexistent",
|
|
309
|
+
});
|
|
286
310
|
|
|
287
|
-
expect(response.
|
|
288
|
-
expect(response.
|
|
311
|
+
expect(response.statusCode).toBe(404);
|
|
312
|
+
expect(response.json()).toEqual({
|
|
289
313
|
statusCode: 404,
|
|
290
314
|
message: "The Resource with key 'nonexistent' was not found.",
|
|
291
315
|
errors: [
|
|
@@ -300,71 +324,75 @@ describe("Order payment tests", () => {
|
|
|
300
324
|
|
|
301
325
|
describe("Order Update Actions", () => {
|
|
302
326
|
const ctMock = new CommercetoolsMock();
|
|
327
|
+
const cartDraft = cartDraftFactory(ctMock);
|
|
328
|
+
const orderDraft = orderDraftFactory(ctMock);
|
|
303
329
|
let order: Order | undefined;
|
|
304
330
|
|
|
305
331
|
beforeEach(async () => {
|
|
306
|
-
|
|
332
|
+
const cart = await cartDraft.create({
|
|
307
333
|
currency: "EUR",
|
|
308
334
|
});
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
id: cart.id,
|
|
318
|
-
},
|
|
319
|
-
});
|
|
320
|
-
expect(response.status).toBe(201);
|
|
321
|
-
order = response.body;
|
|
335
|
+
|
|
336
|
+
order = await orderDraft.create({
|
|
337
|
+
cart: {
|
|
338
|
+
typeId: "cart",
|
|
339
|
+
id: cart.id,
|
|
340
|
+
},
|
|
341
|
+
version: cart.version,
|
|
342
|
+
});
|
|
322
343
|
});
|
|
323
344
|
|
|
324
345
|
test("no update", async () => {
|
|
325
346
|
assert(order, "order not created");
|
|
326
347
|
|
|
327
|
-
const response = await
|
|
328
|
-
|
|
329
|
-
.
|
|
348
|
+
const response = await ctMock.app.inject({
|
|
349
|
+
method: "POST",
|
|
350
|
+
url: `/dummy/orders/${order.id}`,
|
|
351
|
+
payload: {
|
|
330
352
|
version: 1,
|
|
331
353
|
actions: [{ action: "setLocale", locale: "nl-NL" }],
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
expect(response.
|
|
335
|
-
expect(response.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
expect(response.statusCode).toBe(200);
|
|
357
|
+
expect(response.json().version).toBe(2);
|
|
358
|
+
expect(response.json().locale).toBe("nl-NL");
|
|
359
|
+
|
|
360
|
+
const responseAgain = await ctMock.app.inject({
|
|
361
|
+
method: "POST",
|
|
362
|
+
url: `/dummy/orders/${order.id}`,
|
|
363
|
+
payload: {
|
|
340
364
|
version: 2,
|
|
341
365
|
actions: [{ action: "setLocale", locale: "nl-NL" }],
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
expect(responseAgain.
|
|
345
|
-
expect(responseAgain.
|
|
366
|
+
},
|
|
367
|
+
});
|
|
368
|
+
expect(responseAgain.statusCode).toBe(200);
|
|
369
|
+
expect(responseAgain.json().version).toBe(2);
|
|
370
|
+
expect(responseAgain.json().locale).toBe("nl-NL");
|
|
346
371
|
});
|
|
347
372
|
|
|
348
373
|
test("setCustomerEmail", async () => {
|
|
349
374
|
assert(order, "order not created");
|
|
350
375
|
|
|
351
|
-
const response = await
|
|
352
|
-
|
|
353
|
-
.
|
|
376
|
+
const response = await ctMock.app.inject({
|
|
377
|
+
method: "POST",
|
|
378
|
+
url: `/dummy/orders/${order.id}`,
|
|
379
|
+
payload: {
|
|
354
380
|
version: 1,
|
|
355
381
|
actions: [{ action: "setCustomerEmail", email: "john@doe.com" }],
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
expect(response.
|
|
359
|
-
expect(response.
|
|
382
|
+
},
|
|
383
|
+
});
|
|
384
|
+
expect(response.statusCode).toBe(200);
|
|
385
|
+
expect(response.json().version).toBe(2);
|
|
386
|
+
expect(response.json().customerEmail).toBe("john@doe.com");
|
|
360
387
|
});
|
|
361
388
|
|
|
362
389
|
test("setCustomerId", async () => {
|
|
363
390
|
assert(order, "order not created");
|
|
364
391
|
|
|
365
|
-
const response = await
|
|
366
|
-
|
|
367
|
-
.
|
|
392
|
+
const response = await ctMock.app.inject({
|
|
393
|
+
method: "POST",
|
|
394
|
+
url: `/dummy/orders/${order.id}`,
|
|
395
|
+
payload: {
|
|
368
396
|
version: 1,
|
|
369
397
|
actions: [
|
|
370
398
|
{
|
|
@@ -372,10 +400,11 @@ describe("Order Update Actions", () => {
|
|
|
372
400
|
customerId: "9e3479fc-cc92-4d10-820a-a080b45ddcc1",
|
|
373
401
|
},
|
|
374
402
|
],
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
expect(response.
|
|
378
|
-
expect(response.
|
|
403
|
+
},
|
|
404
|
+
});
|
|
405
|
+
expect(response.statusCode).toBe(200);
|
|
406
|
+
expect(response.json().version).toBe(2);
|
|
407
|
+
expect(response.json().customerId).toBe(
|
|
379
408
|
"9e3479fc-cc92-4d10-820a-a080b45ddcc1",
|
|
380
409
|
);
|
|
381
410
|
});
|
|
@@ -383,77 +412,87 @@ describe("Order Update Actions", () => {
|
|
|
383
412
|
test("setOrderNumber", async () => {
|
|
384
413
|
assert(order, "order not created");
|
|
385
414
|
|
|
386
|
-
const response = await
|
|
387
|
-
|
|
388
|
-
.
|
|
415
|
+
const response = await ctMock.app.inject({
|
|
416
|
+
method: "POST",
|
|
417
|
+
url: `/dummy/orders/${order.id}`,
|
|
418
|
+
payload: {
|
|
389
419
|
version: 1,
|
|
390
420
|
actions: [{ action: "setOrderNumber", orderNumber: "5000123" }],
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
expect(response.
|
|
394
|
-
expect(response.
|
|
421
|
+
},
|
|
422
|
+
});
|
|
423
|
+
expect(response.statusCode).toBe(200);
|
|
424
|
+
expect(response.json().version).toBe(2);
|
|
425
|
+
expect(response.json().orderNumber).toBe("5000123");
|
|
395
426
|
});
|
|
396
427
|
|
|
397
428
|
test("setPurchaseOrderNumber", async () => {
|
|
398
429
|
assert(order, "order not created");
|
|
399
430
|
|
|
400
|
-
const response = await
|
|
401
|
-
|
|
402
|
-
.
|
|
431
|
+
const response = await ctMock.app.inject({
|
|
432
|
+
method: "POST",
|
|
433
|
+
url: `/dummy/orders/${order.id}`,
|
|
434
|
+
payload: {
|
|
403
435
|
version: 1,
|
|
404
436
|
actions: [
|
|
405
437
|
{ action: "setPurchaseOrderNumber", purchaseOrderNumber: "abc123" },
|
|
406
438
|
],
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
expect(response.
|
|
410
|
-
expect(response.
|
|
439
|
+
},
|
|
440
|
+
});
|
|
441
|
+
expect(response.statusCode).toBe(200);
|
|
442
|
+
expect(response.json().version).toBe(2);
|
|
443
|
+
expect(response.json().purchaseOrderNumber).toBe("abc123");
|
|
411
444
|
});
|
|
412
445
|
|
|
413
446
|
test("changeOrderState", async () => {
|
|
414
447
|
assert(order, "order not created");
|
|
415
448
|
|
|
416
|
-
const response = await
|
|
417
|
-
|
|
418
|
-
.
|
|
449
|
+
const response = await ctMock.app.inject({
|
|
450
|
+
method: "POST",
|
|
451
|
+
url: `/dummy/orders/${order.id}`,
|
|
452
|
+
payload: {
|
|
419
453
|
version: 1,
|
|
420
454
|
actions: [{ action: "changeOrderState", orderState: "Complete" }],
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
expect(response.
|
|
424
|
-
expect(response.
|
|
455
|
+
},
|
|
456
|
+
});
|
|
457
|
+
expect(response.statusCode).toBe(200);
|
|
458
|
+
expect(response.json().version).toBe(2);
|
|
459
|
+
expect(response.json().orderState).toBe("Complete");
|
|
425
460
|
});
|
|
426
461
|
|
|
427
462
|
test("changePaymentState | changeOrderState", async () => {
|
|
428
463
|
assert(order, "order not created");
|
|
429
464
|
|
|
430
|
-
const response = await
|
|
431
|
-
|
|
432
|
-
.
|
|
465
|
+
const response = await ctMock.app.inject({
|
|
466
|
+
method: "POST",
|
|
467
|
+
url: `/dummy/orders/${order.id}`,
|
|
468
|
+
payload: {
|
|
433
469
|
version: 1,
|
|
434
470
|
actions: [
|
|
435
471
|
{ action: "changeOrderState", orderState: "Cancelled" },
|
|
436
472
|
{ action: "changePaymentState", paymentState: "Failed" },
|
|
437
473
|
],
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
expect(response.
|
|
441
|
-
expect(response.
|
|
442
|
-
expect(response.
|
|
474
|
+
},
|
|
475
|
+
});
|
|
476
|
+
expect(response.statusCode).toBe(200);
|
|
477
|
+
expect(response.json().version).toBe(3);
|
|
478
|
+
expect(response.json().orderState).toBe("Cancelled");
|
|
479
|
+
expect(response.json().paymentState).toBe("Failed");
|
|
443
480
|
});
|
|
444
481
|
|
|
445
482
|
test("changeShipmentState", async () => {
|
|
446
483
|
assert(order, "order not created");
|
|
447
484
|
|
|
448
|
-
const response = await
|
|
449
|
-
|
|
450
|
-
.
|
|
485
|
+
const response = await ctMock.app.inject({
|
|
486
|
+
method: "POST",
|
|
487
|
+
url: `/dummy/orders/${order.id}`,
|
|
488
|
+
payload: {
|
|
451
489
|
version: 1,
|
|
452
490
|
actions: [{ action: "changeShipmentState", shipmentState: "Delayed" }],
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
expect(response.
|
|
456
|
-
expect(response.
|
|
491
|
+
},
|
|
492
|
+
});
|
|
493
|
+
expect(response.statusCode).toBe(200);
|
|
494
|
+
expect(response.json().version).toBe(2);
|
|
495
|
+
expect(response.json().shipmentState).toBe("Delayed");
|
|
457
496
|
});
|
|
458
497
|
|
|
459
498
|
test("setDeliveryCustomField", async () => {
|
|
@@ -569,16 +608,18 @@ describe("Order Update Actions", () => {
|
|
|
569
608
|
currencyCode: "EUR",
|
|
570
609
|
},
|
|
571
610
|
};
|
|
572
|
-
ctMock.project("dummy").
|
|
611
|
+
await ctMock.project("dummy").unsafeAdd("order", order);
|
|
573
612
|
|
|
574
|
-
const response = await
|
|
575
|
-
|
|
576
|
-
|
|
613
|
+
const response = await ctMock.app.inject({
|
|
614
|
+
method: "GET",
|
|
615
|
+
url: `/dummy/orders/order-number=${order.orderNumber}`,
|
|
616
|
+
});
|
|
577
617
|
|
|
578
618
|
// check if status is set
|
|
579
|
-
const _updateResponse = await
|
|
580
|
-
|
|
581
|
-
.
|
|
619
|
+
const _updateResponse = await ctMock.app.inject({
|
|
620
|
+
method: "POST",
|
|
621
|
+
url: `/dummy/orders/${response.json().id}`,
|
|
622
|
+
payload: {
|
|
582
623
|
version: 0,
|
|
583
624
|
actions: [
|
|
584
625
|
{
|
|
@@ -588,17 +629,19 @@ describe("Order Update Actions", () => {
|
|
|
588
629
|
value: "delayed",
|
|
589
630
|
},
|
|
590
631
|
],
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
expect(_updateResponse.
|
|
632
|
+
},
|
|
633
|
+
});
|
|
634
|
+
expect(_updateResponse.statusCode).toBe(200);
|
|
635
|
+
expect(_updateResponse.json().version).toBe(1);
|
|
594
636
|
expect(
|
|
595
|
-
_updateResponse.
|
|
637
|
+
_updateResponse.json().shippingInfo.deliveries[0].custom.fields.status,
|
|
596
638
|
).toBe("delayed");
|
|
597
639
|
|
|
598
640
|
// check if other field can be set
|
|
599
|
-
const _updateResponse2 = await
|
|
600
|
-
|
|
601
|
-
.
|
|
641
|
+
const _updateResponse2 = await ctMock.app.inject({
|
|
642
|
+
method: "POST",
|
|
643
|
+
url: `/dummy/orders/${response.json().id}`,
|
|
644
|
+
payload: {
|
|
602
645
|
version: 1,
|
|
603
646
|
actions: [
|
|
604
647
|
{
|
|
@@ -608,11 +651,12 @@ describe("Order Update Actions", () => {
|
|
|
608
651
|
value: "dhl",
|
|
609
652
|
},
|
|
610
653
|
],
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
expect(_updateResponse2.
|
|
654
|
+
},
|
|
655
|
+
});
|
|
656
|
+
expect(_updateResponse2.statusCode).toBe(200);
|
|
657
|
+
expect(_updateResponse2.json().version).toBe(2);
|
|
614
658
|
expect(
|
|
615
|
-
_updateResponse2.
|
|
659
|
+
_updateResponse2.json().shippingInfo.deliveries[0].custom.fields.carrier,
|
|
616
660
|
).toBe("dhl");
|
|
617
661
|
});
|
|
618
662
|
|
|
@@ -686,14 +730,15 @@ describe("Order Update Actions", () => {
|
|
|
686
730
|
},
|
|
687
731
|
};
|
|
688
732
|
|
|
689
|
-
ctMock.project("dummy").
|
|
733
|
+
await ctMock.project("dummy").unsafeAdd("order", order);
|
|
690
734
|
|
|
691
735
|
const lineItem = order.lineItems[0];
|
|
692
736
|
assert(lineItem, "lineItem not created");
|
|
693
737
|
|
|
694
|
-
const response = await
|
|
695
|
-
|
|
696
|
-
.
|
|
738
|
+
const response = await ctMock.app.inject({
|
|
739
|
+
method: "POST",
|
|
740
|
+
url: `/dummy/orders/${order.id}`,
|
|
741
|
+
payload: {
|
|
697
742
|
version: order.version,
|
|
698
743
|
actions: [
|
|
699
744
|
{
|
|
@@ -703,11 +748,12 @@ describe("Order Update Actions", () => {
|
|
|
703
748
|
value: "bar",
|
|
704
749
|
},
|
|
705
750
|
],
|
|
706
|
-
}
|
|
751
|
+
},
|
|
752
|
+
});
|
|
707
753
|
|
|
708
|
-
expect(response.
|
|
709
|
-
expect(response.
|
|
710
|
-
expect(response.
|
|
754
|
+
expect(response.statusCode).toBe(200);
|
|
755
|
+
expect(response.json().version).toBe(2);
|
|
756
|
+
expect(response.json().lineItems).toMatchObject([
|
|
711
757
|
{
|
|
712
758
|
id: lineItem.id,
|
|
713
759
|
custom: {
|
|
@@ -782,42 +828,39 @@ describe("Order Update Actions", () => {
|
|
|
782
828
|
},
|
|
783
829
|
};
|
|
784
830
|
|
|
785
|
-
ctMock.project("dummy").
|
|
831
|
+
await ctMock.project("dummy").unsafeAdd("order", order);
|
|
786
832
|
|
|
787
|
-
const
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
en: "foo",
|
|
802
|
-
},
|
|
803
|
-
required: false,
|
|
804
|
-
type: {
|
|
805
|
-
name: "String",
|
|
806
|
-
},
|
|
807
|
-
inputHint: "SingleLine",
|
|
833
|
+
const typeDraft = typeDraftFactory(ctMock);
|
|
834
|
+
const type = await typeDraft.create({
|
|
835
|
+
key: "my-type",
|
|
836
|
+
name: {
|
|
837
|
+
en: "My Type",
|
|
838
|
+
},
|
|
839
|
+
description: {
|
|
840
|
+
en: "My Type Description",
|
|
841
|
+
},
|
|
842
|
+
fieldDefinitions: [
|
|
843
|
+
{
|
|
844
|
+
name: "foo",
|
|
845
|
+
label: {
|
|
846
|
+
en: "foo",
|
|
808
847
|
},
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
848
|
+
required: false,
|
|
849
|
+
type: {
|
|
850
|
+
name: "String",
|
|
851
|
+
},
|
|
852
|
+
inputHint: "SingleLine",
|
|
853
|
+
},
|
|
854
|
+
],
|
|
855
|
+
});
|
|
814
856
|
|
|
815
857
|
const lineItem = order.lineItems[0];
|
|
816
858
|
assert(lineItem, "lineItem not created");
|
|
817
859
|
|
|
818
|
-
const response = await
|
|
819
|
-
|
|
820
|
-
.
|
|
860
|
+
const response = await ctMock.app.inject({
|
|
861
|
+
method: "POST",
|
|
862
|
+
url: `/dummy/orders/${order.id}`,
|
|
863
|
+
payload: {
|
|
821
864
|
version: order.version,
|
|
822
865
|
actions: [
|
|
823
866
|
{
|
|
@@ -829,11 +872,12 @@ describe("Order Update Actions", () => {
|
|
|
829
872
|
},
|
|
830
873
|
},
|
|
831
874
|
],
|
|
832
|
-
}
|
|
875
|
+
},
|
|
876
|
+
});
|
|
833
877
|
|
|
834
|
-
expect(response.
|
|
835
|
-
expect(response.
|
|
836
|
-
expect(response.
|
|
878
|
+
expect(response.statusCode).toBe(200);
|
|
879
|
+
expect(response.json().version).toBe(2);
|
|
880
|
+
expect(response.json().lineItems).toMatchObject([
|
|
837
881
|
{
|
|
838
882
|
id: lineItem.id,
|
|
839
883
|
custom: {
|
|
@@ -968,16 +1012,18 @@ describe("Order Update Actions", () => {
|
|
|
968
1012
|
currencyCode: "EUR",
|
|
969
1013
|
},
|
|
970
1014
|
};
|
|
971
|
-
ctMock.project("dummy").
|
|
1015
|
+
await ctMock.project("dummy").unsafeAdd("order", order);
|
|
972
1016
|
|
|
973
|
-
const response = await
|
|
974
|
-
|
|
975
|
-
|
|
1017
|
+
const response = await ctMock.app.inject({
|
|
1018
|
+
method: "GET",
|
|
1019
|
+
url: `/dummy/orders/order-number=${order.orderNumber}`,
|
|
1020
|
+
});
|
|
976
1021
|
|
|
977
1022
|
// check if status is set
|
|
978
|
-
const _updateResponse = await
|
|
979
|
-
|
|
980
|
-
.
|
|
1023
|
+
const _updateResponse = await ctMock.app.inject({
|
|
1024
|
+
method: "POST",
|
|
1025
|
+
url: `/dummy/orders/${response.json().id}`,
|
|
1026
|
+
payload: {
|
|
981
1027
|
version: 0,
|
|
982
1028
|
actions: [
|
|
983
1029
|
{
|
|
@@ -987,11 +1033,12 @@ describe("Order Update Actions", () => {
|
|
|
987
1033
|
value: "delayed",
|
|
988
1034
|
},
|
|
989
1035
|
],
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
expect(_updateResponse.
|
|
1036
|
+
},
|
|
1037
|
+
});
|
|
1038
|
+
expect(_updateResponse.statusCode).toBe(200);
|
|
1039
|
+
expect(_updateResponse.json().version).toBe(1);
|
|
993
1040
|
expect(
|
|
994
|
-
_updateResponse.
|
|
1041
|
+
_updateResponse.json().shippingInfo.deliveries[0].parcels[0].custom.fields
|
|
995
1042
|
.status,
|
|
996
1043
|
).toBe("delayed");
|
|
997
1044
|
});
|
|
@@ -999,18 +1046,16 @@ describe("Order Update Actions", () => {
|
|
|
999
1046
|
test("updateSyncInfo", async () => {
|
|
1000
1047
|
assert(order, "order not created");
|
|
1001
1048
|
|
|
1002
|
-
const
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
});
|
|
1008
|
-
expect(channelResponse.status).toBe(201);
|
|
1009
|
-
const channel = channelResponse.body;
|
|
1049
|
+
const channelDraft = channelDraftFactory(ctMock);
|
|
1050
|
+
const channel = await channelDraft.create({
|
|
1051
|
+
key: "order-sync",
|
|
1052
|
+
roles: ["OrderImport", "OrderExport"],
|
|
1053
|
+
});
|
|
1010
1054
|
|
|
1011
|
-
const response = await
|
|
1012
|
-
|
|
1013
|
-
.
|
|
1055
|
+
const response = await ctMock.app.inject({
|
|
1056
|
+
method: "POST",
|
|
1057
|
+
url: `/dummy/orders/${order.id}`,
|
|
1058
|
+
payload: {
|
|
1014
1059
|
version: 1,
|
|
1015
1060
|
actions: [
|
|
1016
1061
|
{
|
|
@@ -1019,10 +1064,11 @@ describe("Order Update Actions", () => {
|
|
|
1019
1064
|
externalId: "1234",
|
|
1020
1065
|
},
|
|
1021
1066
|
],
|
|
1022
|
-
}
|
|
1023
|
-
|
|
1024
|
-
expect(response.
|
|
1025
|
-
expect(response.
|
|
1067
|
+
},
|
|
1068
|
+
});
|
|
1069
|
+
expect(response.statusCode).toBe(200);
|
|
1070
|
+
expect(response.json().version).toBe(2);
|
|
1071
|
+
expect(response.json().syncInfo).toMatchObject([
|
|
1026
1072
|
{
|
|
1027
1073
|
channel: { typeId: "channel", id: channel.id },
|
|
1028
1074
|
externalId: "1234",
|
|
@@ -1208,9 +1254,6 @@ describe("Order Update Actions", () => {
|
|
|
1208
1254
|
shippingInfo: shippingInfoWithoutDeliveries,
|
|
1209
1255
|
};
|
|
1210
1256
|
|
|
1211
|
-
ctMock.project("dummy").add("order", order);
|
|
1212
|
-
ctMock.project("dummy").add("order", orderWithoutDeliveries);
|
|
1213
|
-
|
|
1214
1257
|
const deliveryDraft: DeliveryDraft = {
|
|
1215
1258
|
key: `${order.orderNumber}-2`,
|
|
1216
1259
|
items: [
|
|
@@ -1221,16 +1264,23 @@ describe("Order Update Actions", () => {
|
|
|
1221
1264
|
],
|
|
1222
1265
|
};
|
|
1223
1266
|
|
|
1267
|
+
beforeAll(async () => {
|
|
1268
|
+
await ctMock.project("dummy").unsafeAdd("order", order);
|
|
1269
|
+
await ctMock.project("dummy").unsafeAdd("order", orderWithoutDeliveries);
|
|
1270
|
+
});
|
|
1271
|
+
|
|
1224
1272
|
it.each([
|
|
1225
1273
|
[order, 1],
|
|
1226
1274
|
[orderWithoutDeliveries, 0],
|
|
1227
1275
|
])("should add to deliveries", async (order, index) => {
|
|
1228
|
-
const response = await
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1276
|
+
const response = await ctMock.app.inject({
|
|
1277
|
+
method: "GET",
|
|
1278
|
+
url: `/dummy/orders/order-number=${order.orderNumber}`,
|
|
1279
|
+
});
|
|
1280
|
+
const _updateResponse = await ctMock.app.inject({
|
|
1281
|
+
method: "POST",
|
|
1282
|
+
url: `/dummy/orders/${response.json().id}`,
|
|
1283
|
+
payload: {
|
|
1234
1284
|
version: 0,
|
|
1235
1285
|
actions: [
|
|
1236
1286
|
{
|
|
@@ -1238,11 +1288,12 @@ describe("Order Update Actions", () => {
|
|
|
1238
1288
|
...deliveryDraft,
|
|
1239
1289
|
},
|
|
1240
1290
|
],
|
|
1241
|
-
}
|
|
1291
|
+
},
|
|
1292
|
+
});
|
|
1242
1293
|
|
|
1243
|
-
expect(_updateResponse.
|
|
1244
|
-
expect(_updateResponse.
|
|
1245
|
-
expect(_updateResponse.
|
|
1294
|
+
expect(_updateResponse.statusCode).toBe(200);
|
|
1295
|
+
expect(_updateResponse.json().version).toBe(1);
|
|
1296
|
+
expect(_updateResponse.json().shippingInfo.deliveries[index].key).toBe(
|
|
1246
1297
|
deliveryDraft.key,
|
|
1247
1298
|
);
|
|
1248
1299
|
});
|
|
@@ -1251,27 +1302,31 @@ describe("Order Update Actions", () => {
|
|
|
1251
1302
|
|
|
1252
1303
|
describe("Order Import", () => {
|
|
1253
1304
|
const ctMock = new CommercetoolsMock();
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1305
|
+
|
|
1306
|
+
beforeAll(async () => {
|
|
1307
|
+
await ctMock.project("dummy").unsafeAdd("product", {
|
|
1308
|
+
id: "15fc56ba-a74e-4cf8-b4b0-bada5c101541",
|
|
1309
|
+
masterData: {
|
|
1310
|
+
// @ts-expect-error
|
|
1311
|
+
current: {
|
|
1312
|
+
name: { "nl-NL": "Dummy" },
|
|
1313
|
+
slug: { "nl-NL": "Dummy" },
|
|
1314
|
+
categories: [],
|
|
1315
|
+
masterVariant: {
|
|
1316
|
+
id: 0,
|
|
1317
|
+
sku: "MYSKU",
|
|
1318
|
+
},
|
|
1319
|
+
variants: [],
|
|
1265
1320
|
},
|
|
1266
|
-
variants: [],
|
|
1267
1321
|
},
|
|
1268
|
-
}
|
|
1322
|
+
});
|
|
1269
1323
|
});
|
|
1270
1324
|
|
|
1271
1325
|
test("Import", async () => {
|
|
1272
|
-
const response = await
|
|
1273
|
-
|
|
1274
|
-
|
|
1326
|
+
const response = await ctMock.app.inject({
|
|
1327
|
+
method: "POST",
|
|
1328
|
+
url: "/dummy/orders/import",
|
|
1329
|
+
payload: {
|
|
1275
1330
|
orderNumber: "100000001",
|
|
1276
1331
|
totalPrice: {
|
|
1277
1332
|
centAmount: 1000,
|
|
@@ -1412,11 +1467,12 @@ describe("Order Import", () => {
|
|
|
1412
1467
|
lineItemMode: "Standard",
|
|
1413
1468
|
},
|
|
1414
1469
|
],
|
|
1415
|
-
}
|
|
1470
|
+
},
|
|
1471
|
+
});
|
|
1416
1472
|
|
|
1417
|
-
expect(response.
|
|
1473
|
+
expect(response.statusCode).toBe(200);
|
|
1418
1474
|
|
|
1419
|
-
const created: Order = response.
|
|
1475
|
+
const created: Order = response.json();
|
|
1420
1476
|
expect(created.lineItems).toHaveLength(1);
|
|
1421
1477
|
expect(created.customLineItems).toHaveLength(1);
|
|
1422
1478
|
});
|