@labdigital/commercetools-mock 2.17.1 → 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 +4186 -3974
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +266 -413
- package/dist/index.d.ts +266 -413
- package/dist/index.js +4186 -3974
- 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 +86 -86
- package/src/oauth/server.ts +158 -144
- package/src/oauth/store.ts +44 -43
- 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 +23 -36
- 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,228 +1,228 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { CartDiscount, TypeDraft } 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 } from "..";
|
|
6
6
|
|
|
7
7
|
const typeDraft: TypeDraft = {
|
|
8
|
-
key:
|
|
8
|
+
key: "my-type",
|
|
9
9
|
name: {
|
|
10
|
-
en:
|
|
10
|
+
en: "TestType",
|
|
11
11
|
},
|
|
12
12
|
description: {
|
|
13
|
-
en:
|
|
13
|
+
en: "Test Type",
|
|
14
14
|
},
|
|
15
|
-
resourceTypeIds: [
|
|
15
|
+
resourceTypeIds: ["cart-discount"],
|
|
16
16
|
fieldDefinitions: [
|
|
17
17
|
{
|
|
18
|
-
name:
|
|
18
|
+
name: "discount_name",
|
|
19
19
|
label: {
|
|
20
|
-
en:
|
|
20
|
+
en: "Discount name",
|
|
21
21
|
},
|
|
22
22
|
required: false,
|
|
23
23
|
type: {
|
|
24
|
-
name:
|
|
24
|
+
name: "String",
|
|
25
25
|
},
|
|
26
|
-
inputHint:
|
|
26
|
+
inputHint: "SingleLine",
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
|
-
name:
|
|
29
|
+
name: "fixedAmount",
|
|
30
30
|
label: {
|
|
31
|
-
en:
|
|
31
|
+
en: "Fixed Amount",
|
|
32
32
|
},
|
|
33
33
|
required: true,
|
|
34
34
|
type: {
|
|
35
|
-
name:
|
|
35
|
+
name: "Money",
|
|
36
36
|
},
|
|
37
|
-
inputHint:
|
|
37
|
+
inputHint: "SingleLine",
|
|
38
38
|
},
|
|
39
39
|
],
|
|
40
|
-
}
|
|
40
|
+
};
|
|
41
41
|
|
|
42
42
|
const getCartDiscountDraft = (typeId: string) => ({
|
|
43
43
|
version: 1,
|
|
44
|
-
key:
|
|
45
|
-
name: { en:
|
|
44
|
+
key: "my-relative-cart-discount",
|
|
45
|
+
name: { en: "myRelativeCartDiscount" },
|
|
46
46
|
value: {
|
|
47
|
-
type:
|
|
47
|
+
type: "relative",
|
|
48
48
|
permyriad: 1000,
|
|
49
49
|
},
|
|
50
|
-
description: { en:
|
|
51
|
-
target: { type:
|
|
50
|
+
description: { en: "My relative cart discount" },
|
|
51
|
+
target: { type: "lineItems", predicate: "1=1" },
|
|
52
52
|
isActive: false,
|
|
53
53
|
custom: {
|
|
54
54
|
type: {
|
|
55
|
-
typeId:
|
|
55
|
+
typeId: "type",
|
|
56
56
|
id: typeId,
|
|
57
57
|
},
|
|
58
58
|
fields: {
|
|
59
|
-
discount_name:
|
|
59
|
+
discount_name: "MyDiscount",
|
|
60
60
|
fixedAmount: {
|
|
61
|
-
type:
|
|
62
|
-
currencyCode:
|
|
61
|
+
type: "centPrecision",
|
|
62
|
+
currencyCode: "USD",
|
|
63
63
|
centAmount: 15000,
|
|
64
64
|
fractionDigits: 2,
|
|
65
65
|
},
|
|
66
66
|
},
|
|
67
67
|
},
|
|
68
|
-
validFrom:
|
|
69
|
-
validUntil:
|
|
70
|
-
sortOrder:
|
|
71
|
-
})
|
|
68
|
+
validFrom: "2000-01-01T00:00:01.000Z",
|
|
69
|
+
validUntil: "2000-12-31T23:59:59.999Z",
|
|
70
|
+
sortOrder: "0.1",
|
|
71
|
+
});
|
|
72
72
|
|
|
73
|
-
describe(
|
|
74
|
-
const ctMock = new CommercetoolsMock()
|
|
73
|
+
describe("Cart Discounts Query", () => {
|
|
74
|
+
const ctMock = new CommercetoolsMock();
|
|
75
75
|
|
|
76
76
|
beforeEach(async () => {
|
|
77
|
-
let response
|
|
78
|
-
response = await supertest(ctMock.app).post(
|
|
79
|
-
expect(response.status).toBe(201)
|
|
80
|
-
const typeId = response.
|
|
77
|
+
let response;
|
|
78
|
+
response = await supertest(ctMock.app).post("/dummy/types").send(typeDraft);
|
|
79
|
+
expect(response.status).toBe(201);
|
|
80
|
+
const typeId = response.body.id;
|
|
81
81
|
|
|
82
82
|
response = await supertest(ctMock.app)
|
|
83
|
-
.post(
|
|
84
|
-
.send(getCartDiscountDraft(typeId))
|
|
85
|
-
expect(response.status).toBe(201)
|
|
86
|
-
})
|
|
83
|
+
.post("/dummy/cart-discounts")
|
|
84
|
+
.send(getCartDiscountDraft(typeId));
|
|
85
|
+
expect(response.status).toBe(201);
|
|
86
|
+
});
|
|
87
87
|
|
|
88
|
-
test(
|
|
88
|
+
test("no filter", async () => {
|
|
89
89
|
const response = await supertest(ctMock.app)
|
|
90
|
-
.get(
|
|
91
|
-
.send()
|
|
90
|
+
.get("/dummy/cart-discounts")
|
|
91
|
+
.send();
|
|
92
92
|
|
|
93
|
-
expect(response.status).toBe(200)
|
|
94
|
-
expect(response.body.count).toBe(1)
|
|
93
|
+
expect(response.status).toBe(200);
|
|
94
|
+
expect(response.body.count).toBe(1);
|
|
95
95
|
|
|
96
|
-
const myRelativeCartDiscount = response.body.results[0] as CartDiscount
|
|
97
|
-
expect(myRelativeCartDiscount.key).toBe(
|
|
96
|
+
const myRelativeCartDiscount = response.body.results[0] as CartDiscount;
|
|
97
|
+
expect(myRelativeCartDiscount.key).toBe("my-relative-cart-discount");
|
|
98
98
|
expect(myRelativeCartDiscount.description).toStrictEqual({
|
|
99
|
-
en:
|
|
100
|
-
})
|
|
101
|
-
expect(myRelativeCartDiscount.isActive).toBe(false)
|
|
99
|
+
en: "My relative cart discount",
|
|
100
|
+
});
|
|
101
|
+
expect(myRelativeCartDiscount.isActive).toBe(false);
|
|
102
102
|
expect(myRelativeCartDiscount.name).toStrictEqual({
|
|
103
|
-
en:
|
|
104
|
-
})
|
|
105
|
-
expect(myRelativeCartDiscount.stores).toStrictEqual([])
|
|
106
|
-
expect(myRelativeCartDiscount.references).toStrictEqual([])
|
|
103
|
+
en: "myRelativeCartDiscount",
|
|
104
|
+
});
|
|
105
|
+
expect(myRelativeCartDiscount.stores).toStrictEqual([]);
|
|
106
|
+
expect(myRelativeCartDiscount.references).toStrictEqual([]);
|
|
107
107
|
expect(myRelativeCartDiscount.target).toStrictEqual({
|
|
108
|
-
type:
|
|
109
|
-
predicate:
|
|
110
|
-
})
|
|
111
|
-
expect(myRelativeCartDiscount.requiresDiscountCode).toBe(false)
|
|
112
|
-
expect(myRelativeCartDiscount.stackingMode).toBe(
|
|
108
|
+
type: "lineItems",
|
|
109
|
+
predicate: "1=1",
|
|
110
|
+
});
|
|
111
|
+
expect(myRelativeCartDiscount.requiresDiscountCode).toBe(false);
|
|
112
|
+
expect(myRelativeCartDiscount.stackingMode).toBe("Stacking");
|
|
113
113
|
expect(myRelativeCartDiscount.value).toStrictEqual({
|
|
114
|
-
type:
|
|
114
|
+
type: "relative",
|
|
115
115
|
permyriad: 1000,
|
|
116
|
-
})
|
|
116
|
+
});
|
|
117
117
|
|
|
118
|
-
expect(myRelativeCartDiscount.custom?.type.id).not.toBeUndefined()
|
|
119
|
-
expect(myRelativeCartDiscount.custom?.type.typeId).toBe(
|
|
118
|
+
expect(myRelativeCartDiscount.custom?.type.id).not.toBeUndefined();
|
|
119
|
+
expect(myRelativeCartDiscount.custom?.type.typeId).toBe("type");
|
|
120
120
|
expect(myRelativeCartDiscount.custom?.fields).toStrictEqual({
|
|
121
|
-
discount_name:
|
|
121
|
+
discount_name: "MyDiscount",
|
|
122
122
|
fixedAmount: {
|
|
123
123
|
centAmount: 15000,
|
|
124
|
-
currencyCode:
|
|
124
|
+
currencyCode: "USD",
|
|
125
125
|
fractionDigits: 2,
|
|
126
|
-
type:
|
|
126
|
+
type: "centPrecision",
|
|
127
127
|
},
|
|
128
|
-
})
|
|
129
|
-
})
|
|
130
|
-
})
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
131
|
|
|
132
|
-
describe(
|
|
133
|
-
const ctMock = new CommercetoolsMock()
|
|
134
|
-
let cartDiscount: CartDiscount | undefined
|
|
132
|
+
describe("Cart Discounts Update Actions", () => {
|
|
133
|
+
const ctMock = new CommercetoolsMock();
|
|
134
|
+
let cartDiscount: CartDiscount | undefined;
|
|
135
135
|
|
|
136
136
|
const createType = async () => {
|
|
137
137
|
const response = await supertest(ctMock.app)
|
|
138
|
-
.post(
|
|
139
|
-
.send(typeDraft)
|
|
140
|
-
expect(response.status).toBe(201)
|
|
141
|
-
return response.body.id
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const createCartDiscount = async (typeId) => {
|
|
145
|
-
const cartDiscountDraft = getCartDiscountDraft(typeId)
|
|
138
|
+
.post("/dummy/types")
|
|
139
|
+
.send(typeDraft);
|
|
140
|
+
expect(response.status).toBe(201);
|
|
141
|
+
return response.body.id;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const createCartDiscount = async (typeId: string) => {
|
|
145
|
+
const cartDiscountDraft = getCartDiscountDraft(typeId);
|
|
146
146
|
const response = await supertest(ctMock.app)
|
|
147
|
-
.post(
|
|
148
|
-
.send(cartDiscountDraft)
|
|
149
|
-
expect(response.status).toBe(201)
|
|
150
|
-
cartDiscount = response.body
|
|
151
|
-
}
|
|
147
|
+
.post("/dummy/cart-discounts")
|
|
148
|
+
.send(cartDiscountDraft);
|
|
149
|
+
expect(response.status).toBe(201);
|
|
150
|
+
cartDiscount = response.body;
|
|
151
|
+
};
|
|
152
152
|
|
|
153
153
|
beforeEach(async () => {
|
|
154
|
-
const typeId = await createType()
|
|
155
|
-
await createCartDiscount(typeId)
|
|
156
|
-
})
|
|
154
|
+
const typeId = await createType();
|
|
155
|
+
await createCartDiscount(typeId);
|
|
156
|
+
});
|
|
157
157
|
|
|
158
158
|
afterEach(() => {
|
|
159
|
-
ctMock.clear()
|
|
160
|
-
})
|
|
159
|
+
ctMock.clear();
|
|
160
|
+
});
|
|
161
161
|
|
|
162
|
-
test(
|
|
163
|
-
assert(cartDiscount,
|
|
162
|
+
test("set key", async () => {
|
|
163
|
+
assert(cartDiscount, "cart discount not created");
|
|
164
164
|
|
|
165
165
|
const response = await supertest(ctMock.app)
|
|
166
166
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
167
167
|
.send({
|
|
168
168
|
version: 1,
|
|
169
|
-
actions: [{ action:
|
|
170
|
-
})
|
|
171
|
-
expect(response.status).toBe(200)
|
|
172
|
-
expect(response.body.version).toBe(2)
|
|
173
|
-
expect(response.body.key).toBe(
|
|
174
|
-
})
|
|
169
|
+
actions: [{ action: "setKey", key: "my-cart-discount" }],
|
|
170
|
+
});
|
|
171
|
+
expect(response.status).toBe(200);
|
|
172
|
+
expect(response.body.version).toBe(2);
|
|
173
|
+
expect(response.body.key).toBe("my-cart-discount");
|
|
174
|
+
});
|
|
175
175
|
|
|
176
|
-
test(
|
|
177
|
-
assert(cartDiscount,
|
|
176
|
+
test("set description", async () => {
|
|
177
|
+
assert(cartDiscount, "cart discount not created");
|
|
178
178
|
|
|
179
179
|
const response = await supertest(ctMock.app)
|
|
180
180
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
181
181
|
.send({
|
|
182
182
|
version: 1,
|
|
183
183
|
actions: [
|
|
184
|
-
{ action:
|
|
184
|
+
{ action: "setDescription", description: { en: "Description" } },
|
|
185
185
|
],
|
|
186
|
-
})
|
|
187
|
-
expect(response.status).toBe(200)
|
|
188
|
-
expect(response.body.version).toBe(2)
|
|
189
|
-
expect(response.body.description.en).toBe(
|
|
190
|
-
})
|
|
186
|
+
});
|
|
187
|
+
expect(response.status).toBe(200);
|
|
188
|
+
expect(response.body.version).toBe(2);
|
|
189
|
+
expect(response.body.description.en).toBe("Description");
|
|
190
|
+
});
|
|
191
191
|
|
|
192
|
-
test(
|
|
193
|
-
assert(cartDiscount,
|
|
192
|
+
test("set valid from", async () => {
|
|
193
|
+
assert(cartDiscount, "cart discount not created");
|
|
194
194
|
|
|
195
195
|
const response = await supertest(ctMock.app)
|
|
196
196
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
197
197
|
.send({
|
|
198
198
|
version: 1,
|
|
199
199
|
actions: [
|
|
200
|
-
{ action:
|
|
200
|
+
{ action: "setValidFrom", validFrom: "2020-01-01T00:00:01.000Z" },
|
|
201
201
|
],
|
|
202
|
-
})
|
|
203
|
-
expect(response.status).toBe(200)
|
|
204
|
-
expect(response.body.version).toBe(2)
|
|
205
|
-
expect(response.body.validFrom).toBe(
|
|
206
|
-
})
|
|
202
|
+
});
|
|
203
|
+
expect(response.status).toBe(200);
|
|
204
|
+
expect(response.body.version).toBe(2);
|
|
205
|
+
expect(response.body.validFrom).toBe("2020-01-01T00:00:01.000Z");
|
|
206
|
+
});
|
|
207
207
|
|
|
208
|
-
test(
|
|
209
|
-
assert(cartDiscount,
|
|
208
|
+
test("set valid until", async () => {
|
|
209
|
+
assert(cartDiscount, "cart discount not created");
|
|
210
210
|
|
|
211
211
|
const response = await supertest(ctMock.app)
|
|
212
212
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
213
213
|
.send({
|
|
214
214
|
version: 1,
|
|
215
215
|
actions: [
|
|
216
|
-
{ action:
|
|
216
|
+
{ action: "setValidUntil", validUntil: "2020-12-31T23:59:59.999Z" },
|
|
217
217
|
],
|
|
218
|
-
})
|
|
219
|
-
expect(response.status).toBe(200)
|
|
220
|
-
expect(response.body.version).toBe(2)
|
|
221
|
-
expect(response.body.validUntil).toBe(
|
|
222
|
-
})
|
|
218
|
+
});
|
|
219
|
+
expect(response.status).toBe(200);
|
|
220
|
+
expect(response.body.version).toBe(2);
|
|
221
|
+
expect(response.body.validUntil).toBe("2020-12-31T23:59:59.999Z");
|
|
222
|
+
});
|
|
223
223
|
|
|
224
|
-
test(
|
|
225
|
-
assert(cartDiscount,
|
|
224
|
+
test("set valid from and until", async () => {
|
|
225
|
+
assert(cartDiscount, "cart discount not created");
|
|
226
226
|
|
|
227
227
|
const response = await supertest(ctMock.app)
|
|
228
228
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
@@ -230,48 +230,48 @@ describe('Cart Discounts Update Actions', () => {
|
|
|
230
230
|
version: 1,
|
|
231
231
|
actions: [
|
|
232
232
|
{
|
|
233
|
-
action:
|
|
234
|
-
validFrom:
|
|
235
|
-
validUntil:
|
|
233
|
+
action: "setValidFromAndUntil",
|
|
234
|
+
validFrom: "2020-01-01T00:00:01.000Z",
|
|
235
|
+
validUntil: "2020-12-31T23:59:59.999Z",
|
|
236
236
|
},
|
|
237
237
|
],
|
|
238
|
-
})
|
|
239
|
-
expect(response.status).toBe(200)
|
|
240
|
-
expect(response.body.version).toBe(2)
|
|
241
|
-
expect(response.body.validFrom).toBe(
|
|
242
|
-
expect(response.body.validUntil).toBe(
|
|
243
|
-
})
|
|
238
|
+
});
|
|
239
|
+
expect(response.status).toBe(200);
|
|
240
|
+
expect(response.body.version).toBe(2);
|
|
241
|
+
expect(response.body.validFrom).toBe("2020-01-01T00:00:01.000Z");
|
|
242
|
+
expect(response.body.validUntil).toBe("2020-12-31T23:59:59.999Z");
|
|
243
|
+
});
|
|
244
244
|
|
|
245
|
-
test(
|
|
246
|
-
assert(cartDiscount,
|
|
245
|
+
test("change sort order", async () => {
|
|
246
|
+
assert(cartDiscount, "cart discount not created");
|
|
247
247
|
|
|
248
248
|
const response = await supertest(ctMock.app)
|
|
249
249
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
250
250
|
.send({
|
|
251
251
|
version: 1,
|
|
252
|
-
actions: [{ action:
|
|
253
|
-
})
|
|
254
|
-
expect(response.status).toBe(200)
|
|
255
|
-
expect(response.body.version).toBe(2)
|
|
256
|
-
expect(response.body.sortOrder).toBe(
|
|
257
|
-
})
|
|
252
|
+
actions: [{ action: "changeSortOrder", sortOrder: "0.2" }],
|
|
253
|
+
});
|
|
254
|
+
expect(response.status).toBe(200);
|
|
255
|
+
expect(response.body.version).toBe(2);
|
|
256
|
+
expect(response.body.sortOrder).toBe("0.2");
|
|
257
|
+
});
|
|
258
258
|
|
|
259
|
-
test(
|
|
260
|
-
assert(cartDiscount,
|
|
259
|
+
test("change isActive", async () => {
|
|
260
|
+
assert(cartDiscount, "cart discount not created");
|
|
261
261
|
|
|
262
262
|
const response = await supertest(ctMock.app)
|
|
263
263
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
264
264
|
.send({
|
|
265
265
|
version: 1,
|
|
266
|
-
actions: [{ action:
|
|
267
|
-
})
|
|
268
|
-
expect(response.status).toBe(200)
|
|
269
|
-
expect(response.body.version).toBe(2)
|
|
270
|
-
expect(response.body.isActive).toBe(true)
|
|
271
|
-
})
|
|
266
|
+
actions: [{ action: "changeIsActive", isActive: true }],
|
|
267
|
+
});
|
|
268
|
+
expect(response.status).toBe(200);
|
|
269
|
+
expect(response.body.version).toBe(2);
|
|
270
|
+
expect(response.body.isActive).toBe(true);
|
|
271
|
+
});
|
|
272
272
|
|
|
273
|
-
test(
|
|
274
|
-
assert(cartDiscount,
|
|
273
|
+
test("change target", async () => {
|
|
274
|
+
assert(cartDiscount, "cart discount not created");
|
|
275
275
|
|
|
276
276
|
const response = await supertest(ctMock.app)
|
|
277
277
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
@@ -279,21 +279,21 @@ describe('Cart Discounts Update Actions', () => {
|
|
|
279
279
|
version: 1,
|
|
280
280
|
actions: [
|
|
281
281
|
{
|
|
282
|
-
action:
|
|
283
|
-
target: { type:
|
|
282
|
+
action: "changeTarget",
|
|
283
|
+
target: { type: "shippingInfo", predicate: "2=2" },
|
|
284
284
|
},
|
|
285
285
|
],
|
|
286
|
-
})
|
|
287
|
-
expect(response.status).toBe(200)
|
|
288
|
-
expect(response.body.version).toBe(2)
|
|
286
|
+
});
|
|
287
|
+
expect(response.status).toBe(200);
|
|
288
|
+
expect(response.body.version).toBe(2);
|
|
289
289
|
expect(response.body.target).toStrictEqual({
|
|
290
|
-
type:
|
|
291
|
-
predicate:
|
|
292
|
-
})
|
|
293
|
-
})
|
|
290
|
+
type: "shippingInfo",
|
|
291
|
+
predicate: "2=2",
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
294
|
|
|
295
|
-
test(
|
|
296
|
-
assert(cartDiscount,
|
|
295
|
+
test("set custom field", async () => {
|
|
296
|
+
assert(cartDiscount, "cart discount not created");
|
|
297
297
|
|
|
298
298
|
const response = await supertest(ctMock.app)
|
|
299
299
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
@@ -301,29 +301,29 @@ describe('Cart Discounts Update Actions', () => {
|
|
|
301
301
|
version: 1,
|
|
302
302
|
actions: [
|
|
303
303
|
{
|
|
304
|
-
action:
|
|
305
|
-
name:
|
|
304
|
+
action: "setCustomField",
|
|
305
|
+
name: "fixedAmount",
|
|
306
306
|
value: {
|
|
307
|
-
type:
|
|
308
|
-
currencyCode:
|
|
307
|
+
type: "centPrecision",
|
|
308
|
+
currencyCode: "EUR",
|
|
309
309
|
centAmount: 15,
|
|
310
310
|
fractionDigits: 2,
|
|
311
311
|
},
|
|
312
312
|
},
|
|
313
313
|
],
|
|
314
|
-
})
|
|
315
|
-
expect(response.status).toBe(200)
|
|
316
|
-
expect(response.body.version).toBe(2)
|
|
314
|
+
});
|
|
315
|
+
expect(response.status).toBe(200);
|
|
316
|
+
expect(response.body.version).toBe(2);
|
|
317
317
|
expect(response.body.custom.fields.fixedAmount).toStrictEqual({
|
|
318
|
-
type:
|
|
319
|
-
currencyCode:
|
|
318
|
+
type: "centPrecision",
|
|
319
|
+
currencyCode: "EUR",
|
|
320
320
|
centAmount: 15,
|
|
321
321
|
fractionDigits: 2,
|
|
322
|
-
})
|
|
323
|
-
})
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
324
|
|
|
325
|
-
test(
|
|
326
|
-
assert(cartDiscount,
|
|
325
|
+
test("reset custom field", async () => {
|
|
326
|
+
assert(cartDiscount, "cart discount not created");
|
|
327
327
|
|
|
328
328
|
const response = await supertest(ctMock.app)
|
|
329
329
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
@@ -331,19 +331,19 @@ describe('Cart Discounts Update Actions', () => {
|
|
|
331
331
|
version: 1,
|
|
332
332
|
actions: [
|
|
333
333
|
{
|
|
334
|
-
action:
|
|
335
|
-
name:
|
|
334
|
+
action: "setCustomField",
|
|
335
|
+
name: "fixedAmount",
|
|
336
336
|
value: null,
|
|
337
337
|
},
|
|
338
338
|
],
|
|
339
|
-
})
|
|
340
|
-
expect(response.status).toBe(200)
|
|
341
|
-
expect(response.body.version).toBe(2)
|
|
342
|
-
expect(response.body.custom.fields.fixedAmount).toBeUndefined()
|
|
343
|
-
})
|
|
339
|
+
});
|
|
340
|
+
expect(response.status).toBe(200);
|
|
341
|
+
expect(response.body.version).toBe(2);
|
|
342
|
+
expect(response.body.custom.fields.fixedAmount).toBeUndefined();
|
|
343
|
+
});
|
|
344
344
|
|
|
345
|
-
test(
|
|
346
|
-
assert(cartDiscount,
|
|
345
|
+
test("reset non-existing custom field", async () => {
|
|
346
|
+
assert(cartDiscount, "cart discount not created");
|
|
347
347
|
|
|
348
348
|
const response = await supertest(ctMock.app)
|
|
349
349
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
@@ -351,17 +351,17 @@ describe('Cart Discounts Update Actions', () => {
|
|
|
351
351
|
version: 1,
|
|
352
352
|
actions: [
|
|
353
353
|
{
|
|
354
|
-
action:
|
|
355
|
-
name:
|
|
354
|
+
action: "setCustomField",
|
|
355
|
+
name: "nonExistingField",
|
|
356
356
|
value: null,
|
|
357
357
|
},
|
|
358
358
|
],
|
|
359
|
-
})
|
|
360
|
-
expect(response.status).toBe(400)
|
|
361
|
-
})
|
|
359
|
+
});
|
|
360
|
+
expect(response.status).toBe(400);
|
|
361
|
+
});
|
|
362
362
|
|
|
363
|
-
test(
|
|
364
|
-
assert(cartDiscount,
|
|
363
|
+
test("remove all custom fields", async () => {
|
|
364
|
+
assert(cartDiscount, "cart discount not created");
|
|
365
365
|
|
|
366
366
|
const response = await supertest(ctMock.app)
|
|
367
367
|
.post(`/dummy/cart-discounts/${cartDiscount.id}`)
|
|
@@ -369,12 +369,12 @@ describe('Cart Discounts Update Actions', () => {
|
|
|
369
369
|
version: 1,
|
|
370
370
|
actions: [
|
|
371
371
|
{
|
|
372
|
-
action:
|
|
372
|
+
action: "setCustomType",
|
|
373
373
|
},
|
|
374
374
|
],
|
|
375
|
-
})
|
|
376
|
-
expect(response.status).toBe(200)
|
|
377
|
-
expect(response.body.version).toBe(2)
|
|
378
|
-
expect(response.body.custom).toBeUndefined()
|
|
379
|
-
})
|
|
380
|
-
})
|
|
375
|
+
});
|
|
376
|
+
expect(response.status).toBe(200);
|
|
377
|
+
expect(response.body.version).toBe(2);
|
|
378
|
+
expect(response.body.custom).toBeUndefined();
|
|
379
|
+
});
|
|
380
|
+
});
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Router } from
|
|
2
|
-
import { CartDiscountRepository } from
|
|
3
|
-
import AbstractService from
|
|
1
|
+
import { Router } from "express";
|
|
2
|
+
import { CartDiscountRepository } from "../repositories/cart-discount";
|
|
3
|
+
import AbstractService from "./abstract";
|
|
4
4
|
|
|
5
5
|
export class CartDiscountService extends AbstractService {
|
|
6
|
-
public repository: CartDiscountRepository
|
|
6
|
+
public repository: CartDiscountRepository;
|
|
7
7
|
|
|
8
8
|
constructor(parent: Router, repository: CartDiscountRepository) {
|
|
9
|
-
super(parent)
|
|
10
|
-
this.repository = repository
|
|
9
|
+
super(parent);
|
|
10
|
+
this.repository = repository;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
getBasePath() {
|
|
14
|
-
return
|
|
14
|
+
return "cart-discounts";
|
|
15
15
|
}
|
|
16
16
|
}
|