@labdigital/commercetools-mock 2.17.0 → 2.18.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/dist/index.cjs +4219 -3989
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +268 -415
- package/dist/index.d.ts +268 -415
- package/dist/index.js +4219 -3989
- package/dist/index.js.map +1 -1
- package/package.json +44 -46
- package/src/constants.ts +2 -2
- package/src/ctMock.test.ts +11 -11
- package/src/ctMock.ts +141 -127
- package/src/deprecation.ts +8 -0
- package/src/exceptions.ts +17 -15
- package/src/helpers.ts +32 -32
- package/src/index.test.ts +128 -128
- package/src/index.ts +3 -3
- package/src/lib/expandParser.ts +13 -13
- package/src/lib/haversine.test.ts +9 -9
- package/src/lib/haversine.ts +11 -11
- package/src/lib/masking.ts +11 -11
- package/src/lib/parser.ts +2 -2
- package/src/lib/password.ts +23 -3
- package/src/lib/predicateParser.test.ts +185 -183
- package/src/lib/predicateParser.ts +234 -234
- package/src/lib/projectionSearchFilter.test.ts +103 -101
- package/src/lib/projectionSearchFilter.ts +152 -150
- package/src/lib/proxy.ts +5 -5
- package/src/oauth/errors.ts +4 -4
- package/src/oauth/helpers.ts +6 -6
- package/src/oauth/server.test.ts +110 -67
- package/src/oauth/server.ts +161 -141
- package/src/oauth/store.ts +49 -44
- package/src/priceSelector.test.ts +35 -35
- package/src/priceSelector.ts +30 -30
- package/src/product-projection-search.ts +136 -134
- package/src/projectAPI.test.ts +7 -7
- package/src/projectAPI.ts +24 -22
- package/src/repositories/abstract.ts +168 -116
- package/src/repositories/associate-role.ts +90 -77
- package/src/repositories/attribute-group.ts +51 -40
- package/src/repositories/business-unit.ts +168 -148
- package/src/repositories/cart/actions.ts +489 -0
- package/src/repositories/cart/helpers.ts +30 -0
- package/src/repositories/cart/index.ts +180 -0
- package/src/repositories/cart-discount/actions.ts +148 -0
- package/src/repositories/cart-discount/index.ts +86 -0
- package/src/repositories/category/actions.ts +231 -0
- package/src/repositories/category/index.ts +52 -0
- package/src/repositories/channel.ts +88 -90
- package/src/repositories/custom-object.ts +46 -45
- package/src/repositories/customer/actions.ts +165 -0
- package/src/repositories/customer/index.ts +79 -0
- package/src/repositories/customer-group.ts +66 -55
- package/src/repositories/discount-code/actions.ts +149 -0
- package/src/repositories/discount-code/index.ts +50 -0
- package/src/repositories/errors.ts +10 -10
- package/src/repositories/extension.ts +64 -62
- package/src/repositories/helpers.ts +117 -118
- package/src/repositories/index.ts +80 -79
- package/src/repositories/inventory-entry/actions.ts +84 -0
- package/src/repositories/inventory-entry/index.ts +44 -0
- package/src/repositories/my-customer.ts +114 -0
- package/src/repositories/my-order.ts +8 -8
- package/src/repositories/order/actions.ts +281 -0
- package/src/repositories/{order.test.ts → order/index.test.ts} +77 -77
- package/src/repositories/order/index.ts +260 -0
- package/src/repositories/order-edit.ts +10 -23
- package/src/repositories/payment/actions.ts +305 -0
- package/src/repositories/payment/helpers.ts +17 -0
- package/src/repositories/payment/index.ts +56 -0
- package/src/repositories/product/actions.ts +943 -0
- package/src/repositories/product/helpers.ts +98 -0
- package/src/repositories/product/index.ts +130 -0
- package/src/repositories/product-discount.ts +127 -117
- package/src/repositories/product-projection.ts +56 -62
- package/src/repositories/product-selection.ts +31 -28
- package/src/repositories/product-type.ts +136 -134
- package/src/repositories/project.ts +133 -118
- package/src/repositories/quote-request.ts +7 -19
- package/src/repositories/quote.ts +7 -22
- package/src/repositories/review.ts +13 -26
- package/src/repositories/shipping-method/actions.ts +198 -0
- package/src/repositories/shipping-method/helpers.ts +10 -0
- package/src/repositories/shipping-method/index.ts +138 -0
- package/src/repositories/shopping-list/actions.ts +295 -0
- package/src/repositories/shopping-list/index.ts +122 -0
- package/src/repositories/staged-quote.ts +7 -20
- package/src/repositories/standalone-price.ts +57 -44
- package/src/repositories/state.ts +113 -68
- package/src/repositories/store.ts +106 -94
- package/src/repositories/subscription.ts +46 -22
- package/src/repositories/tax-category/actions.ts +94 -0
- package/src/repositories/tax-category/helpers.ts +8 -0
- package/src/repositories/tax-category/index.ts +25 -0
- package/src/repositories/type/actions.ts +162 -0
- package/src/repositories/type/index.ts +24 -0
- package/src/repositories/zone.ts +62 -58
- package/src/server.ts +9 -9
- package/src/services/abstract.ts +75 -72
- package/src/services/associate-roles.test.ts +27 -27
- package/src/services/associate-roles.ts +7 -7
- package/src/services/attribute-group.ts +7 -7
- package/src/services/business-units.test.ts +28 -28
- package/src/services/business-units.ts +7 -7
- package/src/services/cart-discount.test.ts +199 -199
- package/src/services/cart-discount.ts +7 -7
- package/src/services/cart.test.ts +261 -261
- package/src/services/cart.ts +22 -21
- package/src/services/category.test.ts +121 -121
- package/src/services/category.ts +7 -7
- package/src/services/channel.ts +7 -7
- package/src/services/custom-object.test.ts +130 -130
- package/src/services/custom-object.ts +34 -31
- package/src/services/customer-group.ts +7 -7
- package/src/services/customer.test.ts +205 -205
- package/src/services/customer.ts +31 -29
- package/src/services/discount-code.ts +7 -7
- package/src/services/extension.ts +7 -7
- package/src/services/index.ts +85 -81
- package/src/services/inventory-entry.test.ts +106 -106
- package/src/services/inventory-entry.ts +7 -7
- package/src/services/my-cart.test.ts +56 -56
- package/src/services/my-cart.ts +20 -20
- package/src/services/my-customer.test.ts +155 -104
- package/src/services/my-customer.ts +61 -75
- package/src/services/my-order.ts +16 -16
- package/src/services/my-payment.test.ts +40 -40
- package/src/services/my-payment.ts +7 -7
- package/src/services/my-shopping-list.ts +7 -7
- package/src/services/order.test.ts +243 -243
- package/src/services/order.ts +23 -18
- package/src/services/payment.test.ts +40 -40
- package/src/services/payment.ts +7 -7
- package/src/services/product-discount.ts +7 -7
- package/src/services/product-projection.test.ts +190 -190
- package/src/services/product-projection.ts +34 -32
- package/src/services/product-selection.test.ts +19 -19
- package/src/services/product-selection.ts +7 -7
- package/src/services/product-type.test.ts +38 -38
- package/src/services/product-type.ts +7 -7
- package/src/services/product.test.ts +658 -656
- package/src/services/product.ts +7 -7
- package/src/services/project.test.ts +24 -24
- package/src/services/project.ts +17 -17
- package/src/services/reviews.ts +7 -7
- package/src/services/shipping-method.test.ts +78 -78
- package/src/services/shipping-method.ts +16 -16
- package/src/services/shopping-list.test.ts +170 -170
- package/src/services/shopping-list.ts +7 -7
- package/src/services/standalone-price.test.ts +112 -112
- package/src/services/standalone-price.ts +7 -7
- package/src/services/state.test.ts +30 -30
- package/src/services/state.ts +7 -7
- package/src/services/store.test.ts +40 -40
- package/src/services/store.ts +7 -7
- package/src/services/subscription.ts +7 -7
- package/src/services/tax-category.test.ts +43 -43
- package/src/services/tax-category.ts +7 -7
- package/src/services/type.ts +7 -7
- package/src/services/zone.ts +7 -7
- package/src/shippingCalculator.test.ts +43 -43
- package/src/shippingCalculator.ts +23 -23
- package/src/storage/abstract.ts +36 -34
- package/src/storage/in-memory.ts +237 -233
- package/src/storage/index.ts +2 -2
- package/src/types.ts +91 -91
- package/src/repositories/cart-discount.ts +0 -219
- package/src/repositories/cart.ts +0 -659
- package/src/repositories/category.ts +0 -256
- package/src/repositories/customer.ts +0 -228
- package/src/repositories/discount-code.ts +0 -181
- package/src/repositories/inventory-entry.ts +0 -109
- package/src/repositories/order.ts +0 -514
- package/src/repositories/payment.ts +0 -342
- package/src/repositories/product.ts +0 -1106
- package/src/repositories/shipping-method.ts +0 -312
- package/src/repositories/shopping-list.ts +0 -392
- package/src/repositories/tax-category.ts +0 -111
- package/src/repositories/type.ts +0 -172
|
@@ -1,383 +1,383 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import supertest from
|
|
4
|
-
import { afterEach, beforeEach, describe, expect, test } from
|
|
5
|
-
import { CommercetoolsMock, getBaseResourceProperties } from
|
|
1
|
+
import type { Order, Payment, State } from "@commercetools/platform-sdk";
|
|
2
|
+
import assert from "assert";
|
|
3
|
+
import supertest from "supertest";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, test } from "vitest";
|
|
5
|
+
import { CommercetoolsMock, getBaseResourceProperties } from "../index";
|
|
6
6
|
|
|
7
|
-
describe(
|
|
8
|
-
const ctMock = new CommercetoolsMock()
|
|
9
|
-
let order: Order | undefined
|
|
7
|
+
describe("Order Query", () => {
|
|
8
|
+
const ctMock = new CommercetoolsMock();
|
|
9
|
+
let order: Order | undefined;
|
|
10
10
|
|
|
11
11
|
beforeEach(async () => {
|
|
12
12
|
let response = await supertest(ctMock.app)
|
|
13
|
-
.post(
|
|
13
|
+
.post("/dummy/carts")
|
|
14
14
|
.send({
|
|
15
|
-
currency:
|
|
15
|
+
currency: "EUR",
|
|
16
16
|
custom: {
|
|
17
17
|
type: {
|
|
18
|
-
key:
|
|
18
|
+
key: "my-cart",
|
|
19
19
|
},
|
|
20
20
|
fields: {
|
|
21
|
-
description:
|
|
21
|
+
description: "example description",
|
|
22
22
|
},
|
|
23
23
|
},
|
|
24
|
-
})
|
|
25
|
-
expect(response.status).toBe(201)
|
|
26
|
-
const cart = response.body
|
|
24
|
+
});
|
|
25
|
+
expect(response.status).toBe(201);
|
|
26
|
+
const cart = response.body;
|
|
27
27
|
|
|
28
28
|
response = await supertest(ctMock.app)
|
|
29
|
-
.post(
|
|
29
|
+
.post("/dummy/orders")
|
|
30
30
|
.send({
|
|
31
31
|
cart: {
|
|
32
|
-
typeId:
|
|
32
|
+
typeId: "cart",
|
|
33
33
|
id: cart.id,
|
|
34
34
|
},
|
|
35
|
-
orderNumber:
|
|
36
|
-
})
|
|
37
|
-
expect(response.status).toBe(201)
|
|
38
|
-
order = response.body
|
|
39
|
-
})
|
|
35
|
+
orderNumber: "foobar",
|
|
36
|
+
});
|
|
37
|
+
expect(response.status).toBe(201);
|
|
38
|
+
order = response.body;
|
|
39
|
+
});
|
|
40
40
|
|
|
41
41
|
afterEach(() => {
|
|
42
|
-
ctMock.clear()
|
|
43
|
-
})
|
|
42
|
+
ctMock.clear();
|
|
43
|
+
});
|
|
44
44
|
|
|
45
|
-
test(
|
|
46
|
-
assert(order,
|
|
45
|
+
test("no filter", async () => {
|
|
46
|
+
assert(order, "order not created");
|
|
47
47
|
|
|
48
|
-
const response = await supertest(ctMock.app).get(`/dummy/orders`)
|
|
49
|
-
expect(response.status).toBe(200)
|
|
50
|
-
expect(response.body.count).toBe(1)
|
|
51
|
-
expect(response.body.total).toBe(1)
|
|
52
|
-
expect(response.body.offset).toBe(0)
|
|
53
|
-
expect(response.body.limit).toBe(20)
|
|
54
|
-
})
|
|
48
|
+
const response = await supertest(ctMock.app).get(`/dummy/orders`);
|
|
49
|
+
expect(response.status).toBe(200);
|
|
50
|
+
expect(response.body.count).toBe(1);
|
|
51
|
+
expect(response.body.total).toBe(1);
|
|
52
|
+
expect(response.body.offset).toBe(0);
|
|
53
|
+
expect(response.body.limit).toBe(20);
|
|
54
|
+
});
|
|
55
55
|
|
|
56
|
-
test(
|
|
57
|
-
assert(order,
|
|
56
|
+
test("filter orderNumber", async () => {
|
|
57
|
+
assert(order, "order not created");
|
|
58
58
|
|
|
59
59
|
{
|
|
60
60
|
const response = await supertest(ctMock.app)
|
|
61
61
|
.get(`/dummy/orders`)
|
|
62
|
-
.query({ where: 'orderNumber="nomatch"' })
|
|
63
|
-
expect(response.status).toBe(200)
|
|
64
|
-
expect(response.body.count).toBe(0)
|
|
62
|
+
.query({ where: 'orderNumber="nomatch"' });
|
|
63
|
+
expect(response.status).toBe(200);
|
|
64
|
+
expect(response.body.count).toBe(0);
|
|
65
65
|
}
|
|
66
66
|
{
|
|
67
67
|
const response = await supertest(ctMock.app)
|
|
68
68
|
.get(`/dummy/orders`)
|
|
69
|
-
.query({ where: 'orderNumber="foobar"' })
|
|
70
|
-
expect(response.status).toBe(200)
|
|
71
|
-
expect(response.body.count).toBe(1)
|
|
69
|
+
.query({ where: 'orderNumber="foobar"' });
|
|
70
|
+
expect(response.status).toBe(200);
|
|
71
|
+
expect(response.body.count).toBe(1);
|
|
72
72
|
}
|
|
73
|
-
})
|
|
73
|
+
});
|
|
74
74
|
|
|
75
|
-
test(
|
|
76
|
-
assert(order,
|
|
75
|
+
test("expand payment without payments", async () => {
|
|
76
|
+
assert(order, "order not created");
|
|
77
77
|
|
|
78
78
|
const response = await supertest(ctMock.app)
|
|
79
79
|
.get(`/dummy/orders/${order.id}`)
|
|
80
|
-
.query({ expand:
|
|
80
|
+
.query({ expand: "paymentInfo.payments[*].paymentStatus.state" });
|
|
81
81
|
|
|
82
|
-
expect(response.status).toBe(200)
|
|
83
|
-
expect(response.body.id).toBe(order.id)
|
|
84
|
-
})
|
|
85
|
-
})
|
|
82
|
+
expect(response.status).toBe(200);
|
|
83
|
+
expect(response.body.id).toBe(order.id);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
86
|
|
|
87
|
-
describe(
|
|
87
|
+
describe("Order payment tests", () => {
|
|
88
88
|
const ctMock = new CommercetoolsMock({
|
|
89
|
-
defaultProjectKey:
|
|
90
|
-
})
|
|
89
|
+
defaultProjectKey: "dummy",
|
|
90
|
+
});
|
|
91
91
|
|
|
92
92
|
afterEach(() => {
|
|
93
|
-
ctMock.clear()
|
|
94
|
-
})
|
|
93
|
+
ctMock.clear();
|
|
94
|
+
});
|
|
95
95
|
|
|
96
|
-
test(
|
|
96
|
+
test("query payment id", async () => {
|
|
97
97
|
const state: State = {
|
|
98
98
|
...getBaseResourceProperties(),
|
|
99
99
|
builtIn: false,
|
|
100
100
|
initial: false,
|
|
101
|
-
key:
|
|
102
|
-
type:
|
|
103
|
-
}
|
|
101
|
+
key: "PaymentSuccess",
|
|
102
|
+
type: "PaymentState",
|
|
103
|
+
};
|
|
104
104
|
|
|
105
105
|
const payment: Payment = {
|
|
106
106
|
...getBaseResourceProperties(),
|
|
107
107
|
interfaceInteractions: [],
|
|
108
108
|
paymentStatus: {
|
|
109
109
|
state: {
|
|
110
|
-
typeId:
|
|
110
|
+
typeId: "state",
|
|
111
111
|
id: state.id,
|
|
112
112
|
},
|
|
113
113
|
},
|
|
114
114
|
amountPlanned: {
|
|
115
|
-
type:
|
|
115
|
+
type: "centPrecision",
|
|
116
116
|
fractionDigits: 2,
|
|
117
117
|
centAmount: 1234,
|
|
118
|
-
currencyCode:
|
|
118
|
+
currencyCode: "EUR",
|
|
119
119
|
},
|
|
120
120
|
paymentMethodInfo: {
|
|
121
|
-
paymentInterface:
|
|
122
|
-
method:
|
|
121
|
+
paymentInterface: "buckaroo",
|
|
122
|
+
method: "mastercard",
|
|
123
123
|
},
|
|
124
124
|
version: 2,
|
|
125
125
|
transactions: [
|
|
126
126
|
{
|
|
127
|
-
id:
|
|
128
|
-
type:
|
|
127
|
+
id: "fake-transaction-id",
|
|
128
|
+
type: "Charge",
|
|
129
129
|
amount: {
|
|
130
130
|
centAmount: 1234,
|
|
131
|
-
currencyCode:
|
|
132
|
-
type:
|
|
131
|
+
currencyCode: "EUR",
|
|
132
|
+
type: "centPrecision",
|
|
133
133
|
fractionDigits: 2,
|
|
134
134
|
},
|
|
135
|
-
state:
|
|
135
|
+
state: "Success",
|
|
136
136
|
},
|
|
137
137
|
],
|
|
138
|
-
}
|
|
138
|
+
};
|
|
139
139
|
|
|
140
140
|
const order: Order = {
|
|
141
141
|
...getBaseResourceProperties(),
|
|
142
142
|
customLineItems: [],
|
|
143
143
|
lastMessageSequenceNumber: 0,
|
|
144
144
|
lineItems: [],
|
|
145
|
-
orderNumber:
|
|
146
|
-
orderState:
|
|
147
|
-
origin:
|
|
145
|
+
orderNumber: "1337",
|
|
146
|
+
orderState: "Open",
|
|
147
|
+
origin: "Customer",
|
|
148
148
|
paymentInfo: {
|
|
149
149
|
payments: [
|
|
150
150
|
{
|
|
151
|
-
typeId:
|
|
151
|
+
typeId: "payment",
|
|
152
152
|
id: payment.id,
|
|
153
153
|
},
|
|
154
154
|
],
|
|
155
155
|
},
|
|
156
156
|
refusedGifts: [],
|
|
157
157
|
shipping: [],
|
|
158
|
-
shippingMode:
|
|
158
|
+
shippingMode: "Single",
|
|
159
159
|
syncInfo: [],
|
|
160
160
|
totalPrice: {
|
|
161
|
-
type:
|
|
161
|
+
type: "centPrecision",
|
|
162
162
|
fractionDigits: 2,
|
|
163
163
|
centAmount: 2000,
|
|
164
|
-
currencyCode:
|
|
164
|
+
currencyCode: "EUR",
|
|
165
165
|
},
|
|
166
|
-
}
|
|
166
|
+
};
|
|
167
167
|
|
|
168
|
-
ctMock.project().add(
|
|
169
|
-
ctMock.project().add(
|
|
170
|
-
ctMock.project().add(
|
|
168
|
+
ctMock.project().add("state", state);
|
|
169
|
+
ctMock.project().add("payment", payment);
|
|
170
|
+
ctMock.project().add("order", order);
|
|
171
171
|
|
|
172
172
|
const response = await supertest(ctMock.app)
|
|
173
173
|
.get(`/dummy/orders`)
|
|
174
|
-
.query({ where: `paymentInfo(payments(id="${payment.id}"))` })
|
|
174
|
+
.query({ where: `paymentInfo(payments(id="${payment.id}"))` });
|
|
175
175
|
|
|
176
|
-
expect(response.status).toBe(200)
|
|
177
|
-
expect(response.body.results[0].id).toBe(order.id)
|
|
176
|
+
expect(response.status).toBe(200);
|
|
177
|
+
expect(response.body.results[0].id).toBe(order.id);
|
|
178
178
|
|
|
179
179
|
{
|
|
180
180
|
const response = await supertest(ctMock.app)
|
|
181
181
|
.get(`/dummy/orders`)
|
|
182
|
-
.query({ where: `paymentInfo(payments(id is defined))` })
|
|
182
|
+
.query({ where: `paymentInfo(payments(id is defined))` });
|
|
183
183
|
|
|
184
|
-
expect(response.status).toBe(200)
|
|
185
|
-
expect(response.body.results[0].id).toBe(order.id)
|
|
184
|
+
expect(response.status).toBe(200);
|
|
185
|
+
expect(response.body.results[0].id).toBe(order.id);
|
|
186
186
|
}
|
|
187
|
-
})
|
|
187
|
+
});
|
|
188
188
|
|
|
189
|
-
test(
|
|
189
|
+
test("expand payment states", async () => {
|
|
190
190
|
const state: State = {
|
|
191
191
|
...getBaseResourceProperties(),
|
|
192
192
|
builtIn: false,
|
|
193
193
|
initial: false,
|
|
194
|
-
key:
|
|
195
|
-
type:
|
|
196
|
-
}
|
|
194
|
+
key: "PaymentSuccess",
|
|
195
|
+
type: "PaymentState",
|
|
196
|
+
};
|
|
197
197
|
|
|
198
198
|
const payment: Payment = {
|
|
199
199
|
...getBaseResourceProperties(),
|
|
200
200
|
interfaceInteractions: [],
|
|
201
201
|
paymentStatus: {
|
|
202
202
|
state: {
|
|
203
|
-
typeId:
|
|
203
|
+
typeId: "state",
|
|
204
204
|
id: state.id,
|
|
205
205
|
},
|
|
206
206
|
},
|
|
207
207
|
amountPlanned: {
|
|
208
|
-
type:
|
|
208
|
+
type: "centPrecision",
|
|
209
209
|
fractionDigits: 2,
|
|
210
210
|
centAmount: 1234,
|
|
211
|
-
currencyCode:
|
|
211
|
+
currencyCode: "EUR",
|
|
212
212
|
},
|
|
213
213
|
paymentMethodInfo: {
|
|
214
|
-
paymentInterface:
|
|
215
|
-
method:
|
|
214
|
+
paymentInterface: "buckaroo",
|
|
215
|
+
method: "mastercard",
|
|
216
216
|
},
|
|
217
217
|
version: 2,
|
|
218
218
|
transactions: [
|
|
219
219
|
{
|
|
220
|
-
id:
|
|
221
|
-
type:
|
|
220
|
+
id: "fake-transaction-id",
|
|
221
|
+
type: "Charge",
|
|
222
222
|
amount: {
|
|
223
223
|
centAmount: 1234,
|
|
224
|
-
currencyCode:
|
|
225
|
-
type:
|
|
224
|
+
currencyCode: "EUR",
|
|
225
|
+
type: "centPrecision",
|
|
226
226
|
fractionDigits: 2,
|
|
227
227
|
},
|
|
228
|
-
state:
|
|
228
|
+
state: "Success",
|
|
229
229
|
},
|
|
230
230
|
],
|
|
231
|
-
}
|
|
231
|
+
};
|
|
232
232
|
|
|
233
233
|
const order: Order = {
|
|
234
234
|
...getBaseResourceProperties(),
|
|
235
235
|
customLineItems: [],
|
|
236
236
|
lastMessageSequenceNumber: 0,
|
|
237
237
|
lineItems: [],
|
|
238
|
-
orderNumber:
|
|
239
|
-
orderState:
|
|
240
|
-
origin:
|
|
238
|
+
orderNumber: "1337",
|
|
239
|
+
orderState: "Open",
|
|
240
|
+
origin: "Customer",
|
|
241
241
|
paymentInfo: {
|
|
242
242
|
payments: [
|
|
243
243
|
{
|
|
244
|
-
typeId:
|
|
244
|
+
typeId: "payment",
|
|
245
245
|
id: payment.id,
|
|
246
246
|
},
|
|
247
247
|
],
|
|
248
248
|
},
|
|
249
249
|
refusedGifts: [],
|
|
250
250
|
shipping: [],
|
|
251
|
-
shippingMode:
|
|
251
|
+
shippingMode: "Single",
|
|
252
252
|
syncInfo: [],
|
|
253
253
|
totalPrice: {
|
|
254
|
-
type:
|
|
254
|
+
type: "centPrecision",
|
|
255
255
|
fractionDigits: 2,
|
|
256
256
|
centAmount: 2000,
|
|
257
|
-
currencyCode:
|
|
257
|
+
currencyCode: "EUR",
|
|
258
258
|
},
|
|
259
|
-
}
|
|
259
|
+
};
|
|
260
260
|
|
|
261
|
-
ctMock.project().add(
|
|
262
|
-
ctMock.project().add(
|
|
263
|
-
ctMock.project().add(
|
|
261
|
+
ctMock.project().add("state", state);
|
|
262
|
+
ctMock.project().add("payment", payment);
|
|
263
|
+
ctMock.project().add("order", order);
|
|
264
264
|
|
|
265
265
|
const response = await supertest(ctMock.app)
|
|
266
266
|
.get(`/dummy/orders/order-number=${order.orderNumber}`)
|
|
267
|
-
.query({ expand:
|
|
267
|
+
.query({ expand: "paymentInfo.payments[*].paymentStatus.state" });
|
|
268
268
|
|
|
269
|
-
expect(response.status).toBe(200)
|
|
270
|
-
expect(response.body.id).toBe(order.id)
|
|
271
|
-
const maybePayment = response.body.paymentInfo.payments[0].obj
|
|
272
|
-
expect(maybePayment).toBeDefined()
|
|
273
|
-
expect(maybePayment.paymentStatus.state.obj).toBeDefined()
|
|
274
|
-
})
|
|
275
|
-
})
|
|
269
|
+
expect(response.status).toBe(200);
|
|
270
|
+
expect(response.body.id).toBe(order.id);
|
|
271
|
+
const maybePayment = response.body.paymentInfo.payments[0].obj;
|
|
272
|
+
expect(maybePayment).toBeDefined();
|
|
273
|
+
expect(maybePayment.paymentStatus.state.obj).toBeDefined();
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
276
|
|
|
277
|
-
describe(
|
|
278
|
-
const ctMock = new CommercetoolsMock()
|
|
279
|
-
let order: Order | undefined
|
|
277
|
+
describe("Order Update Actions", () => {
|
|
278
|
+
const ctMock = new CommercetoolsMock();
|
|
279
|
+
let order: Order | undefined;
|
|
280
280
|
|
|
281
281
|
beforeEach(async () => {
|
|
282
|
-
let response = await supertest(ctMock.app).post(
|
|
283
|
-
currency:
|
|
284
|
-
})
|
|
285
|
-
expect(response.status).toBe(201)
|
|
286
|
-
const cart = response.body
|
|
282
|
+
let response = await supertest(ctMock.app).post("/dummy/carts").send({
|
|
283
|
+
currency: "EUR",
|
|
284
|
+
});
|
|
285
|
+
expect(response.status).toBe(201);
|
|
286
|
+
const cart = response.body;
|
|
287
287
|
|
|
288
288
|
response = await supertest(ctMock.app)
|
|
289
|
-
.post(
|
|
289
|
+
.post("/dummy/orders")
|
|
290
290
|
.send({
|
|
291
291
|
cart: {
|
|
292
|
-
typeId:
|
|
292
|
+
typeId: "cart",
|
|
293
293
|
id: cart.id,
|
|
294
294
|
},
|
|
295
|
-
})
|
|
296
|
-
expect(response.status).toBe(201)
|
|
297
|
-
order = response.body
|
|
298
|
-
})
|
|
295
|
+
});
|
|
296
|
+
expect(response.status).toBe(201);
|
|
297
|
+
order = response.body;
|
|
298
|
+
});
|
|
299
299
|
|
|
300
|
-
test(
|
|
301
|
-
assert(order,
|
|
300
|
+
test("no update", async () => {
|
|
301
|
+
assert(order, "order not created");
|
|
302
302
|
|
|
303
303
|
const response = await supertest(ctMock.app)
|
|
304
304
|
.post(`/dummy/orders/${order.id}`)
|
|
305
305
|
.send({
|
|
306
306
|
version: 1,
|
|
307
|
-
actions: [{ action:
|
|
308
|
-
})
|
|
309
|
-
expect(response.status).toBe(200)
|
|
310
|
-
expect(response.body.version).toBe(2)
|
|
311
|
-
expect(response.body.locale).toBe(
|
|
307
|
+
actions: [{ action: "setLocale", locale: "nl-NL" }],
|
|
308
|
+
});
|
|
309
|
+
expect(response.status).toBe(200);
|
|
310
|
+
expect(response.body.version).toBe(2);
|
|
311
|
+
expect(response.body.locale).toBe("nl-NL");
|
|
312
312
|
|
|
313
313
|
const responseAgain = await supertest(ctMock.app)
|
|
314
314
|
.post(`/dummy/orders/${order.id}`)
|
|
315
315
|
.send({
|
|
316
316
|
version: 2,
|
|
317
|
-
actions: [{ action:
|
|
318
|
-
})
|
|
319
|
-
expect(responseAgain.status).toBe(200)
|
|
320
|
-
expect(responseAgain.body.version).toBe(2)
|
|
321
|
-
expect(responseAgain.body.locale).toBe(
|
|
322
|
-
})
|
|
317
|
+
actions: [{ action: "setLocale", locale: "nl-NL" }],
|
|
318
|
+
});
|
|
319
|
+
expect(responseAgain.status).toBe(200);
|
|
320
|
+
expect(responseAgain.body.version).toBe(2);
|
|
321
|
+
expect(responseAgain.body.locale).toBe("nl-NL");
|
|
322
|
+
});
|
|
323
323
|
|
|
324
|
-
test(
|
|
325
|
-
assert(order,
|
|
324
|
+
test("setOrderNumber", async () => {
|
|
325
|
+
assert(order, "order not created");
|
|
326
326
|
|
|
327
327
|
const response = await supertest(ctMock.app)
|
|
328
328
|
.post(`/dummy/orders/${order.id}`)
|
|
329
329
|
.send({
|
|
330
330
|
version: 1,
|
|
331
|
-
actions: [{ action:
|
|
332
|
-
})
|
|
333
|
-
expect(response.status).toBe(200)
|
|
334
|
-
expect(response.body.version).toBe(2)
|
|
335
|
-
expect(response.body.orderNumber).toBe(
|
|
336
|
-
})
|
|
331
|
+
actions: [{ action: "setOrderNumber", orderNumber: "5000123" }],
|
|
332
|
+
});
|
|
333
|
+
expect(response.status).toBe(200);
|
|
334
|
+
expect(response.body.version).toBe(2);
|
|
335
|
+
expect(response.body.orderNumber).toBe("5000123");
|
|
336
|
+
});
|
|
337
337
|
|
|
338
|
-
test(
|
|
339
|
-
assert(order,
|
|
338
|
+
test("changeOrderState", async () => {
|
|
339
|
+
assert(order, "order not created");
|
|
340
340
|
|
|
341
341
|
const response = await supertest(ctMock.app)
|
|
342
342
|
.post(`/dummy/orders/${order.id}`)
|
|
343
343
|
.send({
|
|
344
344
|
version: 1,
|
|
345
|
-
actions: [{ action:
|
|
346
|
-
})
|
|
347
|
-
expect(response.status).toBe(200)
|
|
348
|
-
expect(response.body.version).toBe(2)
|
|
349
|
-
expect(response.body.orderState).toBe(
|
|
350
|
-
})
|
|
345
|
+
actions: [{ action: "changeOrderState", orderState: "Complete" }],
|
|
346
|
+
});
|
|
347
|
+
expect(response.status).toBe(200);
|
|
348
|
+
expect(response.body.version).toBe(2);
|
|
349
|
+
expect(response.body.orderState).toBe("Complete");
|
|
350
|
+
});
|
|
351
351
|
|
|
352
|
-
test(
|
|
353
|
-
assert(order,
|
|
352
|
+
test("changePaymentState | changeOrderState", async () => {
|
|
353
|
+
assert(order, "order not created");
|
|
354
354
|
|
|
355
355
|
const response = await supertest(ctMock.app)
|
|
356
356
|
.post(`/dummy/orders/${order.id}`)
|
|
357
357
|
.send({
|
|
358
358
|
version: 1,
|
|
359
359
|
actions: [
|
|
360
|
-
{ action:
|
|
361
|
-
{ action:
|
|
360
|
+
{ action: "changeOrderState", orderState: "Cancelled" },
|
|
361
|
+
{ action: "changePaymentState", paymentState: "Failed" },
|
|
362
362
|
],
|
|
363
|
-
})
|
|
364
|
-
expect(response.status).toBe(200)
|
|
365
|
-
expect(response.body.version).toBe(3)
|
|
366
|
-
expect(response.body.orderState).toBe(
|
|
367
|
-
expect(response.body.paymentState).toBe(
|
|
368
|
-
})
|
|
363
|
+
});
|
|
364
|
+
expect(response.status).toBe(200);
|
|
365
|
+
expect(response.body.version).toBe(3);
|
|
366
|
+
expect(response.body.orderState).toBe("Cancelled");
|
|
367
|
+
expect(response.body.paymentState).toBe("Failed");
|
|
368
|
+
});
|
|
369
369
|
|
|
370
|
-
test(
|
|
371
|
-
assert(order,
|
|
370
|
+
test("updateSyncInfo", async () => {
|
|
371
|
+
assert(order, "order not created");
|
|
372
372
|
|
|
373
373
|
const channelResponse = await supertest(ctMock.app)
|
|
374
|
-
.post(
|
|
374
|
+
.post("/dummy/channels")
|
|
375
375
|
.send({
|
|
376
|
-
key:
|
|
377
|
-
roles: [
|
|
378
|
-
})
|
|
379
|
-
expect(channelResponse.status).toBe(201)
|
|
380
|
-
const channel = channelResponse.body
|
|
376
|
+
key: "order-sync",
|
|
377
|
+
roles: ["OrderImport", "OrderExport"],
|
|
378
|
+
});
|
|
379
|
+
expect(channelResponse.status).toBe(201);
|
|
380
|
+
const channel = channelResponse.body;
|
|
381
381
|
|
|
382
382
|
const response = await supertest(ctMock.app)
|
|
383
383
|
.post(`/dummy/orders/${order.id}`)
|
|
@@ -385,61 +385,61 @@ describe('Order Update Actions', () => {
|
|
|
385
385
|
version: 1,
|
|
386
386
|
actions: [
|
|
387
387
|
{
|
|
388
|
-
action:
|
|
389
|
-
channel: { typeId:
|
|
390
|
-
externalId:
|
|
388
|
+
action: "updateSyncInfo",
|
|
389
|
+
channel: { typeId: "channel", key: "order-sync" },
|
|
390
|
+
externalId: "1234",
|
|
391
391
|
},
|
|
392
392
|
],
|
|
393
|
-
})
|
|
394
|
-
expect(response.status).toBe(200)
|
|
395
|
-
expect(response.body.version).toBe(2)
|
|
393
|
+
});
|
|
394
|
+
expect(response.status).toBe(200);
|
|
395
|
+
expect(response.body.version).toBe(2);
|
|
396
396
|
expect(response.body.syncInfo).toMatchObject([
|
|
397
397
|
{
|
|
398
|
-
channel: { typeId:
|
|
399
|
-
externalId:
|
|
398
|
+
channel: { typeId: "channel", id: channel.id },
|
|
399
|
+
externalId: "1234",
|
|
400
400
|
},
|
|
401
|
-
])
|
|
402
|
-
})
|
|
403
|
-
})
|
|
404
|
-
|
|
405
|
-
describe(
|
|
406
|
-
const ctMock = new CommercetoolsMock()
|
|
407
|
-
ctMock.project(
|
|
408
|
-
id:
|
|
401
|
+
]);
|
|
402
|
+
});
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
describe("Order Import", () => {
|
|
406
|
+
const ctMock = new CommercetoolsMock();
|
|
407
|
+
ctMock.project("dummy").add("product", {
|
|
408
|
+
id: "15fc56ba-a74e-4cf8-b4b0-bada5c101541",
|
|
409
409
|
// @ts-ignore
|
|
410
410
|
masterData: {
|
|
411
411
|
// @ts-ignore
|
|
412
412
|
current: {
|
|
413
|
-
name: {
|
|
414
|
-
slug: {
|
|
413
|
+
name: { "nl-NL": "Dummy" },
|
|
414
|
+
slug: { "nl-NL": "Dummy" },
|
|
415
415
|
categories: [],
|
|
416
416
|
masterVariant: {
|
|
417
417
|
id: 0,
|
|
418
|
-
sku:
|
|
418
|
+
sku: "MYSKU",
|
|
419
419
|
},
|
|
420
420
|
variants: [],
|
|
421
421
|
},
|
|
422
422
|
},
|
|
423
|
-
})
|
|
423
|
+
});
|
|
424
424
|
|
|
425
|
-
test(
|
|
425
|
+
test("Import", async () => {
|
|
426
426
|
const response = await supertest(ctMock.app)
|
|
427
427
|
.post(`/dummy/orders/import`)
|
|
428
428
|
.send({
|
|
429
|
-
orderNumber:
|
|
429
|
+
orderNumber: "100000001",
|
|
430
430
|
totalPrice: {
|
|
431
431
|
centAmount: 1000,
|
|
432
|
-
currencyCode:
|
|
432
|
+
currencyCode: "EUR",
|
|
433
433
|
},
|
|
434
434
|
customLineItems: [
|
|
435
435
|
{
|
|
436
436
|
name: {
|
|
437
|
-
|
|
437
|
+
"nl-NL": "Something",
|
|
438
438
|
},
|
|
439
|
-
slug:
|
|
439
|
+
slug: "my-slug",
|
|
440
440
|
money: {
|
|
441
441
|
centAmount: 1475,
|
|
442
|
-
currencyCode:
|
|
442
|
+
currencyCode: "EUR",
|
|
443
443
|
},
|
|
444
444
|
quantity: 1,
|
|
445
445
|
// custom: {
|
|
@@ -455,31 +455,31 @@ describe('Order Import', () => {
|
|
|
455
455
|
],
|
|
456
456
|
lineItems: [
|
|
457
457
|
{
|
|
458
|
-
id:
|
|
459
|
-
productId:
|
|
458
|
+
id: "15fc56ba-a74e-4cf8-b4b0-bada5c101541",
|
|
459
|
+
productId: "PRODUCTID",
|
|
460
460
|
name: {
|
|
461
|
-
|
|
461
|
+
"en-US": "The product",
|
|
462
462
|
},
|
|
463
463
|
productType: {
|
|
464
|
-
typeId:
|
|
465
|
-
id:
|
|
464
|
+
typeId: "product-type",
|
|
465
|
+
id: "109caecb-abe6-4900-ab03-7af5af985ff3",
|
|
466
466
|
// @ts-ignore
|
|
467
467
|
version: 1,
|
|
468
468
|
},
|
|
469
469
|
variant: {
|
|
470
470
|
id: 1,
|
|
471
|
-
sku:
|
|
472
|
-
key:
|
|
471
|
+
sku: "MYSKU",
|
|
472
|
+
key: "MYKEY",
|
|
473
473
|
prices: [
|
|
474
474
|
{
|
|
475
475
|
value: {
|
|
476
|
-
type:
|
|
477
|
-
currencyCode:
|
|
476
|
+
type: "centPrecision",
|
|
477
|
+
currencyCode: "EUR",
|
|
478
478
|
centAmount: 14900,
|
|
479
479
|
fractionDigits: 2,
|
|
480
480
|
},
|
|
481
|
-
id:
|
|
482
|
-
country:
|
|
481
|
+
id: "87943be5-c7e6-44eb-b867-f127f94ccfe7",
|
|
482
|
+
country: "NL",
|
|
483
483
|
// channel: {
|
|
484
484
|
// typeId: 'channel',
|
|
485
485
|
// id: '411485eb-7875-46f4-8d40-1db9e61374ed',
|
|
@@ -499,13 +499,13 @@ describe('Order Import', () => {
|
|
|
499
499
|
},
|
|
500
500
|
price: {
|
|
501
501
|
value: {
|
|
502
|
-
type:
|
|
503
|
-
currencyCode:
|
|
502
|
+
type: "centPrecision",
|
|
503
|
+
currencyCode: "EUR",
|
|
504
504
|
centAmount: 14900,
|
|
505
505
|
fractionDigits: 2,
|
|
506
506
|
},
|
|
507
|
-
id:
|
|
508
|
-
country:
|
|
507
|
+
id: "87943be5-c7e6-44eb-b867-f127f94ccfe7",
|
|
508
|
+
country: "NL",
|
|
509
509
|
// channel: {
|
|
510
510
|
// typeId: 'channel',
|
|
511
511
|
// id: '411485eb-7875-46f4-8d40-1db9e61374ed',
|
|
@@ -525,15 +525,15 @@ describe('Order Import', () => {
|
|
|
525
525
|
// id: '411485eb-7875-46f4-8d40-1db9e61374ed',
|
|
526
526
|
// },
|
|
527
527
|
taxRate: {
|
|
528
|
-
name:
|
|
528
|
+
name: "21% BTW",
|
|
529
529
|
amount: 0.21,
|
|
530
530
|
includedInPrice: true,
|
|
531
|
-
country:
|
|
532
|
-
id:
|
|
531
|
+
country: "NL",
|
|
532
|
+
id: "Z0wLUuYw",
|
|
533
533
|
subRates: [],
|
|
534
534
|
},
|
|
535
|
-
addedAt:
|
|
536
|
-
lastModifiedAt:
|
|
535
|
+
addedAt: "2020-12-08T09:10:27.085Z",
|
|
536
|
+
lastModifiedAt: "2020-12-08T09:10:27.085Z",
|
|
537
537
|
// state: [
|
|
538
538
|
// {
|
|
539
539
|
// quantity: 3,
|
|
@@ -543,36 +543,36 @@ describe('Order Import', () => {
|
|
|
543
543
|
// },
|
|
544
544
|
// },
|
|
545
545
|
// ],
|
|
546
|
-
priceMode:
|
|
546
|
+
priceMode: "Platform",
|
|
547
547
|
totalPrice: {
|
|
548
|
-
type:
|
|
549
|
-
currencyCode:
|
|
548
|
+
type: "centPrecision",
|
|
549
|
+
currencyCode: "EUR",
|
|
550
550
|
centAmount: 44700,
|
|
551
551
|
fractionDigits: 2,
|
|
552
552
|
},
|
|
553
553
|
taxedPrice: {
|
|
554
554
|
totalNet: {
|
|
555
|
-
type:
|
|
556
|
-
currencyCode:
|
|
555
|
+
type: "centPrecision",
|
|
556
|
+
currencyCode: "EUR",
|
|
557
557
|
centAmount: 36942,
|
|
558
558
|
fractionDigits: 2,
|
|
559
559
|
},
|
|
560
560
|
totalGross: {
|
|
561
|
-
type:
|
|
562
|
-
currencyCode:
|
|
561
|
+
type: "centPrecision",
|
|
562
|
+
currencyCode: "EUR",
|
|
563
563
|
centAmount: 44700,
|
|
564
564
|
fractionDigits: 2,
|
|
565
565
|
},
|
|
566
566
|
},
|
|
567
|
-
lineItemMode:
|
|
567
|
+
lineItemMode: "Standard",
|
|
568
568
|
},
|
|
569
569
|
],
|
|
570
|
-
})
|
|
570
|
+
});
|
|
571
571
|
|
|
572
|
-
expect(response.status).toBe(200)
|
|
572
|
+
expect(response.status).toBe(200);
|
|
573
573
|
|
|
574
|
-
const created: Order = response.body
|
|
575
|
-
expect(created.lineItems).toHaveLength(1)
|
|
576
|
-
expect(created.customLineItems).toHaveLength(1)
|
|
577
|
-
})
|
|
578
|
-
})
|
|
574
|
+
const created: Order = response.body;
|
|
575
|
+
expect(created.lineItems).toHaveLength(1);
|
|
576
|
+
expect(created.customLineItems).toHaveLength(1);
|
|
577
|
+
});
|
|
578
|
+
});
|