@lookiero/checkout 8.17.0 → 8.17.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pact.config.d.ts +13 -0
- package/dist/pact.config.js +9 -0
- package/dist/public/public/assets/adaptive-icon.png +0 -0
- package/dist/public/public/assets/favicon.png +0 -0
- package/dist/public/public/assets/icon.png +0 -0
- package/dist/public/public/assets/splash.png +0 -0
- package/dist/public/public/images/not-found.png +0 -0
- package/dist/src/infrastructure/projection/bookedProductsVariants/bookedProductsVariants.mock.d.ts +3 -0
- package/dist/src/infrastructure/projection/bookedProductsVariants/bookedProductsVariants.mock.js +27 -0
- package/dist/src/infrastructure/projection/bookedProductsVariants/httpBookedProductsVariantsForCheckoutItemView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/bookedProductsVariants/httpBookedProductsVariantsForCheckoutItemView.pact.js +48 -0
- package/dist/src/infrastructure/projection/checkout/checkout.mock.d.ts +19 -0
- package/dist/src/infrastructure/projection/checkout/checkout.mock.js +21 -0
- package/dist/src/infrastructure/projection/checkout/httpCheckoutByIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkout/httpCheckoutByIdView.pact.js +109 -0
- package/dist/src/infrastructure/projection/checkout/httpFirstAvailableCheckoutByCustomerIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkout/httpFirstAvailableCheckoutByCustomerIdView.pact.js +49 -0
- package/dist/src/infrastructure/projection/checkout/httpFiveItemsDiscountByCustomerIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkout/httpFiveItemsDiscountByCustomerIdView.pact.js +44 -0
- package/dist/src/infrastructure/projection/checkout/httpIsCheckoutEnabledByCustomerIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkout/httpIsCheckoutEnabledByCustomerIdView.pact.js +44 -0
- package/dist/src/infrastructure/projection/checkout/httpIsSizeChangeEnabledByCheckoutIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkout/httpIsSizeChangeEnabledByCheckoutIdView.pact.js +44 -0
- package/dist/src/infrastructure/projection/checkoutBooking/checkoutBooking.mock.d.ts +3 -0
- package/dist/src/infrastructure/projection/checkoutBooking/checkoutBooking.mock.js +6 -0
- package/dist/src/infrastructure/projection/checkoutBooking/httpCheckoutBookingByIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkoutBooking/httpCheckoutBookingByIdView.pact.js +49 -0
- package/dist/src/infrastructure/projection/checkoutItem/checkoutItem.mock.d.ts +15 -0
- package/dist/src/infrastructure/projection/checkoutItem/checkoutItem.mock.js +43 -0
- package/dist/src/infrastructure/projection/checkoutItem/httpCheckoutItemByIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkoutItem/httpCheckoutItemByIdView.pact.js +50 -0
- package/dist/src/infrastructure/projection/checkoutQuestion/checkoutQuestions.mock.d.ts +3 -0
- package/dist/src/infrastructure/projection/checkoutQuestion/checkoutQuestions.mock.js +103 -0
- package/dist/src/infrastructure/projection/checkoutQuestion/httpCheckoutQuestionsByCheckoutIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/checkoutQuestion/httpCheckoutQuestionsByCheckoutIdView.pact.js +48 -0
- package/dist/src/infrastructure/projection/payment/httpPaymentFlowPayloadByCheckoutIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/payment/httpPaymentFlowPayloadByCheckoutIdView.pact.js +109 -0
- package/dist/src/infrastructure/projection/payment/paymentFlowPayload.mock.d.ts +6 -0
- package/dist/src/infrastructure/projection/payment/paymentFlowPayload.mock.js +183 -0
- package/dist/src/infrastructure/projection/pricing/httpPricingByCheckoutIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/pricing/httpPricingByCheckoutIdView.pact.js +48 -0
- package/dist/src/infrastructure/projection/pricing/pricing.mock.d.ts +9 -0
- package/dist/src/infrastructure/projection/pricing/pricing.mock.js +42 -0
- package/dist/src/infrastructure/projection/returnQuestion/httpReturnQuestionsByCheckoutItemIdView.pact.d.ts +1 -0
- package/dist/src/infrastructure/projection/returnQuestion/httpReturnQuestionsByCheckoutItemIdView.pact.js +48 -0
- package/dist/src/infrastructure/projection/returnQuestion/returnQuestions.mock.d.ts +3 -0
- package/dist/src/infrastructure/projection/returnQuestion/returnQuestions.mock.js +400 -0
- package/dist/src/infrastructure/ui/views/App.style.d.ts +6 -0
- package/dist/src/infrastructure/ui/views/App.style.js +7 -0
- package/dist/src/projection/returnQuestion/returnQuestion.constants.d.ts +9 -0
- package/dist/src/projection/returnQuestion/returnQuestion.constants.js +10 -0
- package/dist/src/projection/returnQuestion/returnQuestion.metadata.d.ts +12 -0
- package/dist/src/projection/returnQuestion/returnQuestion.metadata.js +1 -0
- package/dist/src/projection/returnQuestion/returnQuestion.typeguard.d.ts +5 -0
- package/dist/src/projection/returnQuestion/returnQuestion.typeguard.js +10 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { V3MockServer } from "@pact-foundation/pact";
|
|
2
|
+
interface StringObject {
|
|
3
|
+
readonly [k: string]: string;
|
|
4
|
+
}
|
|
5
|
+
declare const DEFAULT_PACT_OPTIONS: StringObject;
|
|
6
|
+
declare const AUTH_TOKEN = "eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6InBpY2tlcixwYWNrZXIiLCJzdWIiOiIxIiwiaWF0IjoxNjAyODQ4MzEyfQ.gCs2_vBcJsXt4EdreNSjDI8NWkOTQ5Cy4SwtrGnuJ44";
|
|
7
|
+
declare const DEFAULT_REQUEST_HEADERS: StringObject;
|
|
8
|
+
declare const DEFAULT_RESPONSE_HEADERS: StringObject;
|
|
9
|
+
interface FromMockServerUrlToApiUrlFunction {
|
|
10
|
+
(mockServer: V3MockServer): string;
|
|
11
|
+
}
|
|
12
|
+
declare const fromMockServerUrlToApiUrl: FromMockServerUrlToApiUrlFunction;
|
|
13
|
+
export { fromMockServerUrlToApiUrl, AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const DEFAULT_PACT_OPTIONS = { dir: ".contracts", logDir: ".pact/logs" };
|
|
2
|
+
const AUTH_TOKEN = "eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6InBpY2tlcixwYWNrZXIiLCJzdWIiOiIxIiwiaWF0IjoxNjAyODQ4MzEyfQ.gCs2_vBcJsXt4EdreNSjDI8NWkOTQ5Cy4SwtrGnuJ44";
|
|
3
|
+
const DEFAULT_REQUEST_HEADERS = {
|
|
4
|
+
Authorization: `Bearer ${AUTH_TOKEN}`,
|
|
5
|
+
["Content-Type"]: "application/json",
|
|
6
|
+
};
|
|
7
|
+
const DEFAULT_RESPONSE_HEADERS = { ["Content-Type"]: "application/json" };
|
|
8
|
+
const fromMockServerUrlToApiUrl = (mockServer) => mockServer.url.concat("/api");
|
|
9
|
+
export { fromMockServerUrlToApiUrl, AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, };
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/src/infrastructure/projection/bookedProductsVariants/bookedProductsVariants.mock.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const bookedProductsVariants = {
|
|
2
|
+
productVariants: [
|
|
3
|
+
{
|
|
4
|
+
id: "383fab95-56eb-4639-bb18-530ab792b4d3",
|
|
5
|
+
size: {
|
|
6
|
+
id: "4f8a26b8-8d2d-4012-b49a-7d2820095598",
|
|
7
|
+
europe: "S",
|
|
8
|
+
lookiero: "S",
|
|
9
|
+
uk: "S",
|
|
10
|
+
it: "S",
|
|
11
|
+
unique: false,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "a5422445-0e62-4b11-8a3f-1bb5469ee154",
|
|
16
|
+
size: {
|
|
17
|
+
id: "a5422445-0e62-4b11-8a3f-1bb5469ee154",
|
|
18
|
+
europe: "M",
|
|
19
|
+
lookiero: "M",
|
|
20
|
+
uk: "M",
|
|
21
|
+
it: "M",
|
|
22
|
+
unique: false,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
export { bookedProductsVariants };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MatchersV3, PactV3 } from "@pact-foundation/pact";
|
|
2
|
+
import { fetchHttpPost } from "@lookiero/sty-psp-http";
|
|
3
|
+
import { AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, fromMockServerUrlToApiUrl, } from "../../../../pact.config";
|
|
4
|
+
import { bookedProductsVariants } from "./bookedProductsVariants.mock";
|
|
5
|
+
import { httpBookedProductsVariantsForCheckoutItemView } from "./httpBookedProductsVariantsForCheckoutItemView";
|
|
6
|
+
const provider = new PactV3({
|
|
7
|
+
...DEFAULT_PACT_OPTIONS,
|
|
8
|
+
consumer: "STY-BOX_CHECKOUT-FRONT",
|
|
9
|
+
provider: "STY-BOX_CHECKOUT-BACK_ViewBookedProductVariantsForCheckoutItem",
|
|
10
|
+
});
|
|
11
|
+
const checkoutItemId = "52440ae5-7a4c-498b-8b35-08ecfde15776";
|
|
12
|
+
const bookedProductsVariantsResponse = {
|
|
13
|
+
result: bookedProductsVariants,
|
|
14
|
+
};
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
const EXPECTED_BODY = MatchersV3.like(bookedProductsVariantsResponse);
|
|
18
|
+
describe("STY-BOX_CHECKOUT-BACK_ViewBookedProductVariantsForCheckoutItem API", () => {
|
|
19
|
+
it("returns a valid booked size change product variants for the given checkout item", () => {
|
|
20
|
+
provider
|
|
21
|
+
.given("a valid booked size change product variants for the given checkout item")
|
|
22
|
+
.uponReceiving("booked size change product variants projection")
|
|
23
|
+
.withRequest({
|
|
24
|
+
method: "POST",
|
|
25
|
+
path: "/api/view-booked-product-variants-for-checkout-item",
|
|
26
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
27
|
+
body: { checkoutItemId },
|
|
28
|
+
})
|
|
29
|
+
.willRespondWith({
|
|
30
|
+
status: 200,
|
|
31
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
32
|
+
body: EXPECTED_BODY,
|
|
33
|
+
});
|
|
34
|
+
return provider.executeTest(async (mockserver) => {
|
|
35
|
+
const httpPost = fetchHttpPost({
|
|
36
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
37
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
38
|
+
device: "web",
|
|
39
|
+
version: "1.0.0",
|
|
40
|
+
});
|
|
41
|
+
const response = await httpBookedProductsVariantsForCheckoutItemView({ httpPost })({
|
|
42
|
+
checkoutItemId,
|
|
43
|
+
signal: undefined,
|
|
44
|
+
});
|
|
45
|
+
expect(response).toStrictEqual(bookedProductsVariantsResponse.result);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CheckoutStatus } from "../../../domain/checkout/model/checkout";
|
|
2
|
+
import { CheckoutProjection } from "../../../projection/checkout/checkout";
|
|
3
|
+
import { CheckoutItemFunctionArgs } from "../checkoutItem/checkoutItem.mock";
|
|
4
|
+
import { CheckoutDto } from "./checkout";
|
|
5
|
+
interface CheckoutDtoFunctionArgs {
|
|
6
|
+
readonly status?: CheckoutStatus;
|
|
7
|
+
readonly items: CheckoutItemFunctionArgs[];
|
|
8
|
+
}
|
|
9
|
+
interface CheckoutDtoFunction {
|
|
10
|
+
(args: CheckoutDtoFunctionArgs): CheckoutDto;
|
|
11
|
+
}
|
|
12
|
+
declare const checkoutDto: CheckoutDtoFunction;
|
|
13
|
+
interface CheckoutFunctionArgs extends CheckoutDtoFunctionArgs {
|
|
14
|
+
}
|
|
15
|
+
interface CheckoutFunction {
|
|
16
|
+
(args: CheckoutFunctionArgs): CheckoutProjection;
|
|
17
|
+
}
|
|
18
|
+
declare const checkout: CheckoutFunction;
|
|
19
|
+
export { checkout, checkoutDto };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CheckoutStatus } from "../../../domain/checkout/model/checkout";
|
|
2
|
+
import { checkoutItem } from "../checkoutItem/checkoutItem.mock";
|
|
3
|
+
import { toCheckoutProjection } from "./checkout";
|
|
4
|
+
const itemIds = [
|
|
5
|
+
"a5422445-0e62-4b11-8a3f-1bb5469ee154",
|
|
6
|
+
"cfc76463-621a-485a-b152-c5a9c4dc43d9",
|
|
7
|
+
"a9a4fa26-fcc2-4efa-a6a8-fa29ea07b128",
|
|
8
|
+
"8af02b73-0b0a-46a0-a3a8-d9710815c739",
|
|
9
|
+
"8890e00b-d4ed-4220-ae13-52cd88ae8ed5",
|
|
10
|
+
];
|
|
11
|
+
const checkoutDto = ({ status = CheckoutStatus.STARTED, items }) => ({
|
|
12
|
+
id: "9c450400-0cd7-44a4-b0e3-e0002a9bf8df",
|
|
13
|
+
status,
|
|
14
|
+
customerId: "0df61ca7-7e4d-462b-a422-a57de0d116b4",
|
|
15
|
+
boxId: "9c406e57-100a-4aa6-83c5-016e7c2970e7",
|
|
16
|
+
checkoutBookingId: "07c996bb-a0b4-45f9-ae21-6bb9c784d12b",
|
|
17
|
+
expiresOn: "2022-09-20",
|
|
18
|
+
items: items.map(({ id, status, feedbacks, replacedFor }, index) => checkoutItem({ id: id || itemIds[index], status, feedbacks, replacedFor })),
|
|
19
|
+
});
|
|
20
|
+
const checkout = ({ status, items }) => toCheckoutProjection(checkoutDto({ status, items }));
|
|
21
|
+
export { checkout, checkoutDto };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { MatchersV3, PactV3 } from "@pact-foundation/pact";
|
|
2
|
+
import { fetchHttpPost } from "@lookiero/sty-psp-http";
|
|
3
|
+
import { AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, fromMockServerUrlToApiUrl, } from "../../../../pact.config";
|
|
4
|
+
import { CheckoutItemStatus } from "../../../domain/checkoutItem/model/checkoutItem";
|
|
5
|
+
import { MediaPerspective } from "../../../projection/checkoutItem/checkoutItem";
|
|
6
|
+
import { checkout } from "./checkout.mock";
|
|
7
|
+
import { httpCheckoutByIdView } from "./httpCheckoutByIdView";
|
|
8
|
+
const provider = new PactV3({
|
|
9
|
+
...DEFAULT_PACT_OPTIONS,
|
|
10
|
+
consumer: "STY-BOX_CHECKOUT-FRONT",
|
|
11
|
+
provider: "STY-BOX_CHECKOUT-BACK_ViewCheckoutById",
|
|
12
|
+
});
|
|
13
|
+
const checkoutId = "e2490de5-5bd3-43d5-b7c4-526e33f71304";
|
|
14
|
+
const replacedFor = {
|
|
15
|
+
id: "2bf7fb8f-a283-4f53-bc27-0e7fc9466a33",
|
|
16
|
+
media: [
|
|
17
|
+
{
|
|
18
|
+
id: "d7ec731b-4123-4394-829b-297b952e73e5",
|
|
19
|
+
url: "https://cdn-catalog-back-prod.envs.lookiero.tech/1a/28/1a28f712-a76c-4172-8a11-f15002981dc0.jpg",
|
|
20
|
+
perspective: MediaPerspective.MAIN,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "8055e209-2fe9-44c5-b715-b09ad3ef741c",
|
|
24
|
+
url: "https://cdn-catalog-back-prod.envs.lookiero.tech/15/ac/15aca112-4e71-4646-8db5-7f9723bc0130.jpg",
|
|
25
|
+
perspective: MediaPerspective.DETAIL,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
brand: "CKS",
|
|
29
|
+
name: "Sari Tshirt lines",
|
|
30
|
+
size: {
|
|
31
|
+
id: "b3a76aea-ce7a-4ecb-82a4-6637d0ac2afd",
|
|
32
|
+
lookiero: "S",
|
|
33
|
+
uk: "S",
|
|
34
|
+
it: "S",
|
|
35
|
+
europe: "S",
|
|
36
|
+
unique: false,
|
|
37
|
+
},
|
|
38
|
+
color: {
|
|
39
|
+
id: "c228d1b0-d06d-4d5c-a7d5-953fd43af0d8",
|
|
40
|
+
label: "black_C2",
|
|
41
|
+
name: "black",
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const checkoutResponseWithReplacedFor = {
|
|
45
|
+
result: checkout({ items: [{ status: CheckoutItemStatus.KEPT, replacedFor }] }),
|
|
46
|
+
};
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
48
|
+
// @ts-ignore
|
|
49
|
+
const EXPECTED_BODY_WITH_REPLACED_FOR = MatchersV3.like(checkoutResponseWithReplacedFor);
|
|
50
|
+
const checkoutResponseWithoutReplacedFor = {
|
|
51
|
+
result: checkout({ items: [{ status: CheckoutItemStatus.KEPT }] }),
|
|
52
|
+
};
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
const EXPECTED_BODY_WITHOUT_REPLACED_FOR = MatchersV3.like(checkoutResponseWithoutReplacedFor);
|
|
56
|
+
describe("STY-BOX_CHECKOUT-BACK_ViewCheckoutById API", () => {
|
|
57
|
+
it("returns a valid checkout with replacedFor for the given id", () => {
|
|
58
|
+
provider
|
|
59
|
+
.given("a valid checkout with replacedFor for the given id")
|
|
60
|
+
.uponReceiving("checkout projection")
|
|
61
|
+
.withRequest({
|
|
62
|
+
method: "POST",
|
|
63
|
+
path: "/api/view-checkout-by-id",
|
|
64
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
65
|
+
body: { checkoutId },
|
|
66
|
+
})
|
|
67
|
+
.willRespondWith({
|
|
68
|
+
status: 200,
|
|
69
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
70
|
+
body: EXPECTED_BODY_WITH_REPLACED_FOR,
|
|
71
|
+
});
|
|
72
|
+
return provider.executeTest(async (mockserver) => {
|
|
73
|
+
const httpPost = fetchHttpPost({
|
|
74
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
75
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
76
|
+
device: "web",
|
|
77
|
+
version: "1.0.0",
|
|
78
|
+
});
|
|
79
|
+
const response = await httpCheckoutByIdView({ httpPost })({ checkoutId, signal: undefined });
|
|
80
|
+
expect(response).toStrictEqual(checkoutResponseWithReplacedFor.result);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
it("returns a valid checkout without replacedFor for the given id", () => {
|
|
84
|
+
provider
|
|
85
|
+
.given("a valid checkout without replacedFor for the given id")
|
|
86
|
+
.uponReceiving("checkout projection")
|
|
87
|
+
.withRequest({
|
|
88
|
+
method: "POST",
|
|
89
|
+
path: "/api/view-checkout-by-id",
|
|
90
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
91
|
+
body: { checkoutId },
|
|
92
|
+
})
|
|
93
|
+
.willRespondWith({
|
|
94
|
+
status: 200,
|
|
95
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
96
|
+
body: EXPECTED_BODY_WITHOUT_REPLACED_FOR,
|
|
97
|
+
});
|
|
98
|
+
return provider.executeTest(async (mockserver) => {
|
|
99
|
+
const httpPost = fetchHttpPost({
|
|
100
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
101
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
102
|
+
device: "web",
|
|
103
|
+
version: "1.0.0",
|
|
104
|
+
});
|
|
105
|
+
const response = await httpCheckoutByIdView({ httpPost })({ checkoutId, signal: undefined });
|
|
106
|
+
expect(response).toStrictEqual(checkoutResponseWithoutReplacedFor.result);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { MatchersV3, PactV3 } from "@pact-foundation/pact";
|
|
2
|
+
import { fetchHttpPost } from "@lookiero/sty-psp-http";
|
|
3
|
+
import { AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, fromMockServerUrlToApiUrl, } from "../../../../pact.config";
|
|
4
|
+
import { CheckoutItemStatus } from "../../../domain/checkoutItem/model/checkoutItem";
|
|
5
|
+
import { checkout } from "./checkout.mock";
|
|
6
|
+
import { httpFirstAvailableCheckoutByCustomerIdView } from "./httpFirstAvailableCheckoutByCustomerIdView";
|
|
7
|
+
const provider = new PactV3({
|
|
8
|
+
...DEFAULT_PACT_OPTIONS,
|
|
9
|
+
consumer: "STY-BOX_CHECKOUT-FRONT",
|
|
10
|
+
provider: "STY-BOX_CHECKOUT-BACK_ViewFirstAvailableCheckoutByCustomerId",
|
|
11
|
+
});
|
|
12
|
+
const customerId = "fab61a4d-c94d-4e33-b098-1945294a5f75";
|
|
13
|
+
const checkoutResponse = {
|
|
14
|
+
result: checkout({ items: [{ status: CheckoutItemStatus.KEPT }] }),
|
|
15
|
+
};
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
const EXPECTED_BODY = MatchersV3.like(checkoutResponse);
|
|
19
|
+
describe("STY-BOX_CHECKOUT-BACK_ViewFirstAvailableCheckoutByCustomerId API", () => {
|
|
20
|
+
it("returns a first available checkout for the given customer id", () => {
|
|
21
|
+
provider
|
|
22
|
+
.given("a first available checkout for the given customer id")
|
|
23
|
+
.uponReceiving("checkout projection")
|
|
24
|
+
.withRequest({
|
|
25
|
+
method: "POST",
|
|
26
|
+
path: "/api/view-first-available-checkout-by-customer-id",
|
|
27
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
28
|
+
body: { customerId },
|
|
29
|
+
})
|
|
30
|
+
.willRespondWith({
|
|
31
|
+
status: 200,
|
|
32
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
33
|
+
body: EXPECTED_BODY,
|
|
34
|
+
});
|
|
35
|
+
return provider.executeTest(async (mockserver) => {
|
|
36
|
+
const httpPost = fetchHttpPost({
|
|
37
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
38
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
39
|
+
device: "web",
|
|
40
|
+
version: "1.0.0",
|
|
41
|
+
});
|
|
42
|
+
const response = await httpFirstAvailableCheckoutByCustomerIdView({ httpPost })({
|
|
43
|
+
customerId,
|
|
44
|
+
signal: undefined,
|
|
45
|
+
});
|
|
46
|
+
expect(response).toStrictEqual(checkoutResponse.result);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
package/dist/src/infrastructure/projection/checkout/httpFiveItemsDiscountByCustomerIdView.pact.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/infrastructure/projection/checkout/httpFiveItemsDiscountByCustomerIdView.pact.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { MatchersV3, PactV3 } from "@pact-foundation/pact";
|
|
2
|
+
import { fetchHttpGet } from "@lookiero/sty-psp-http";
|
|
3
|
+
import { AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, fromMockServerUrlToApiUrl, } from "../../../../pact.config";
|
|
4
|
+
import { httpFiveItemsDiscountByCustomerIdView } from "./httpFiveItemsDiscountByCustomerIdView";
|
|
5
|
+
const provider = new PactV3({
|
|
6
|
+
...DEFAULT_PACT_OPTIONS,
|
|
7
|
+
consumer: "STY-BOX_CHECKOUT-FRONT",
|
|
8
|
+
provider: "STY-BOX_CHECKOUT-BACK_ViewFiveItemsDiscountByCustomerId",
|
|
9
|
+
});
|
|
10
|
+
const customerId = "fab61a4d-c94d-4e33-b098-1945294a5f75";
|
|
11
|
+
const fiveItemsDiscountResponse = 25;
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
const EXPECTED_BODY = MatchersV3.number(fiveItemsDiscountResponse);
|
|
15
|
+
describe("STY-BOX_CHECKOUT-BACK_ViewFiveItemsDiscountByCustomerId API", () => {
|
|
16
|
+
it("returns a five items discount for the given customer id", () => {
|
|
17
|
+
provider
|
|
18
|
+
.given("a five items discount for the given customer id")
|
|
19
|
+
.uponReceiving("five items discount")
|
|
20
|
+
.withRequest({
|
|
21
|
+
method: "GET",
|
|
22
|
+
path: `/api/view-five-items-discount-by-customer-id/${customerId}`,
|
|
23
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
24
|
+
})
|
|
25
|
+
.willRespondWith({
|
|
26
|
+
status: 200,
|
|
27
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
28
|
+
body: EXPECTED_BODY,
|
|
29
|
+
});
|
|
30
|
+
return provider.executeTest(async (mockserver) => {
|
|
31
|
+
const httpGet = fetchHttpGet({
|
|
32
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
33
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
34
|
+
device: "web",
|
|
35
|
+
version: "1.0.0",
|
|
36
|
+
});
|
|
37
|
+
const response = await httpFiveItemsDiscountByCustomerIdView({ httpGet })({
|
|
38
|
+
customerId,
|
|
39
|
+
signal: undefined,
|
|
40
|
+
});
|
|
41
|
+
expect(response).toStrictEqual(fiveItemsDiscountResponse);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
package/dist/src/infrastructure/projection/checkout/httpIsCheckoutEnabledByCustomerIdView.pact.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/infrastructure/projection/checkout/httpIsCheckoutEnabledByCustomerIdView.pact.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { MatchersV3, PactV3 } from "@pact-foundation/pact";
|
|
2
|
+
import { fetchHttpGet } from "@lookiero/sty-psp-http";
|
|
3
|
+
import { AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, fromMockServerUrlToApiUrl, } from "../../../../pact.config";
|
|
4
|
+
import { httpIsCheckoutEnabledByCustomerIdView } from "./httpIsCheckoutEnabledByCustomerIdView";
|
|
5
|
+
const provider = new PactV3({
|
|
6
|
+
...DEFAULT_PACT_OPTIONS,
|
|
7
|
+
consumer: "STY-BOX_CHECKOUT-FRONT",
|
|
8
|
+
provider: "STY-BOX_CHECKOUT-BACK_ViewIsCheckoutEnabledByCustomerId",
|
|
9
|
+
});
|
|
10
|
+
const customerId = "fab61a4d-c94d-4e33-b098-1945294a5f75";
|
|
11
|
+
const isCheckoutEnabledResponse = true;
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
const EXPECTED_BODY = MatchersV3.boolean(isCheckoutEnabledResponse);
|
|
15
|
+
describe("STY-BOX_CHECKOUT-BACK_ViewIsCheckoutEnabledByCustomerId API", () => {
|
|
16
|
+
it("returns is new checkout enabled for the given customer id", () => {
|
|
17
|
+
provider
|
|
18
|
+
.given("is new checkout enabled for the given customer id")
|
|
19
|
+
.uponReceiving("is new checkout enabled")
|
|
20
|
+
.withRequest({
|
|
21
|
+
method: "GET",
|
|
22
|
+
path: `/api/is-new-checkout-enabled/${customerId}`,
|
|
23
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
24
|
+
})
|
|
25
|
+
.willRespondWith({
|
|
26
|
+
status: 200,
|
|
27
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
28
|
+
body: EXPECTED_BODY,
|
|
29
|
+
});
|
|
30
|
+
return provider.executeTest(async (mockserver) => {
|
|
31
|
+
const httpGet = fetchHttpGet({
|
|
32
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
33
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
34
|
+
device: "web",
|
|
35
|
+
version: "1.0.0",
|
|
36
|
+
});
|
|
37
|
+
const response = await httpIsCheckoutEnabledByCustomerIdView({ httpGet })({
|
|
38
|
+
customerId,
|
|
39
|
+
signal: undefined,
|
|
40
|
+
});
|
|
41
|
+
expect(response).toStrictEqual(isCheckoutEnabledResponse);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/infrastructure/projection/checkout/httpIsSizeChangeEnabledByCheckoutIdView.pact.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { MatchersV3, PactV3 } from "@pact-foundation/pact";
|
|
2
|
+
import { fetchHttpGet } from "@lookiero/sty-psp-http";
|
|
3
|
+
import { AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, fromMockServerUrlToApiUrl, } from "../../../../pact.config";
|
|
4
|
+
import { httpIsSizeChangeEnabledByCheckoutIdView } from "./httpIsSizeChangeEnabledByCheckoutIdView";
|
|
5
|
+
const provider = new PactV3({
|
|
6
|
+
...DEFAULT_PACT_OPTIONS,
|
|
7
|
+
consumer: "STY-BOX_CHECKOUT-FRONT",
|
|
8
|
+
provider: "STY-BOX_CHECKOUT-BACK_ViewIsSizeChangeEnabledByCheckoutId",
|
|
9
|
+
});
|
|
10
|
+
const checkoutId = "fab61a4d-c94d-4e33-b098-1945294a5f75";
|
|
11
|
+
const isSizeChangeEnabledResponse = true;
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
const EXPECTED_BODY = MatchersV3.like(isSizeChangeEnabledResponse);
|
|
15
|
+
describe("STY-BOX_CHECKOUT-BACK_ViewIsSizeChangeEnabledByCheckoutId API", () => {
|
|
16
|
+
it("returns is size-change enabled for the given checkout id", () => {
|
|
17
|
+
provider
|
|
18
|
+
.given("is size-change enabled for the given checkout id")
|
|
19
|
+
.uponReceiving("is size-change enabled")
|
|
20
|
+
.withRequest({
|
|
21
|
+
method: "GET",
|
|
22
|
+
path: `/api/is-size-change-enabled-by-checkout-id/${checkoutId}`,
|
|
23
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
24
|
+
})
|
|
25
|
+
.willRespondWith({
|
|
26
|
+
status: 200,
|
|
27
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
28
|
+
body: EXPECTED_BODY,
|
|
29
|
+
});
|
|
30
|
+
return provider.executeTest(async (mockserver) => {
|
|
31
|
+
const httpGet = fetchHttpGet({
|
|
32
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
33
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
34
|
+
device: "web",
|
|
35
|
+
version: "1.0.0",
|
|
36
|
+
});
|
|
37
|
+
const response = await httpIsSizeChangeEnabledByCheckoutIdView({ httpGet })({
|
|
38
|
+
checkoutId,
|
|
39
|
+
signal: undefined,
|
|
40
|
+
});
|
|
41
|
+
expect(response).toStrictEqual(isSizeChangeEnabledResponse);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
package/dist/src/infrastructure/projection/checkoutBooking/httpCheckoutBookingByIdView.pact.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/infrastructure/projection/checkoutBooking/httpCheckoutBookingByIdView.pact.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { MatchersV3, PactV3 } from "@pact-foundation/pact";
|
|
2
|
+
import { fetchHttpPost } from "@lookiero/sty-psp-http";
|
|
3
|
+
import { AUTH_TOKEN, DEFAULT_PACT_OPTIONS, DEFAULT_REQUEST_HEADERS, DEFAULT_RESPONSE_HEADERS, fromMockServerUrlToApiUrl, } from "../../../../pact.config";
|
|
4
|
+
import { checkoutBooking as checkoutBookingMock } from "./checkoutBooking.mock";
|
|
5
|
+
import { httpCheckoutBookingByIdView } from "./httpCheckoutBookingByIdView";
|
|
6
|
+
const provider = new PactV3({
|
|
7
|
+
...DEFAULT_PACT_OPTIONS,
|
|
8
|
+
consumer: "STY-BOX_CHECKOUT-FRONT",
|
|
9
|
+
provider: "STY-BOX_CHECKOUT-BACK_ViewCheckoutBookingById",
|
|
10
|
+
});
|
|
11
|
+
const checkoutBookingProjection = checkoutBookingMock;
|
|
12
|
+
const checkoutBookingId = checkoutBookingProjection.id;
|
|
13
|
+
const checkoutBookingResponse = {
|
|
14
|
+
result: checkoutBookingProjection,
|
|
15
|
+
};
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
const EXPECTED_BODY = MatchersV3.like(checkoutBookingResponse);
|
|
19
|
+
describe("STY-BOX_CHECKOUT-BACK_ViewCheckoutBookingById API", () => {
|
|
20
|
+
it("returns a valid checkout booking for the given id", () => {
|
|
21
|
+
provider
|
|
22
|
+
.given("a valid checkout booking for the given id")
|
|
23
|
+
.uponReceiving("checkout booking projection")
|
|
24
|
+
.withRequest({
|
|
25
|
+
method: "POST",
|
|
26
|
+
path: "/api/view-checkout-booking-by-id",
|
|
27
|
+
headers: DEFAULT_REQUEST_HEADERS,
|
|
28
|
+
body: { checkoutBookingId },
|
|
29
|
+
})
|
|
30
|
+
.willRespondWith({
|
|
31
|
+
status: 200,
|
|
32
|
+
headers: DEFAULT_RESPONSE_HEADERS,
|
|
33
|
+
body: EXPECTED_BODY,
|
|
34
|
+
});
|
|
35
|
+
return provider.executeTest(async (mockserver) => {
|
|
36
|
+
const httpPost = fetchHttpPost({
|
|
37
|
+
apiUrl: () => fromMockServerUrlToApiUrl(mockserver),
|
|
38
|
+
getAuthToken: () => Promise.resolve(AUTH_TOKEN),
|
|
39
|
+
device: "web",
|
|
40
|
+
version: "1.0.0",
|
|
41
|
+
});
|
|
42
|
+
const response = await httpCheckoutBookingByIdView({ httpPost })({
|
|
43
|
+
checkoutBookingId,
|
|
44
|
+
signal: undefined,
|
|
45
|
+
});
|
|
46
|
+
expect(response).toStrictEqual(checkoutBookingResponse.result);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CheckoutItemStatus } from "../../../domain/checkoutItem/model/checkoutItem";
|
|
2
|
+
import { CheckoutItemProductVariantProjection, CheckoutItemProjection } from "../../../projection/checkoutItem/checkoutItem";
|
|
3
|
+
import { FeedbackProjection } from "../../../projection/feedback/feedback";
|
|
4
|
+
interface CheckoutItemFunctionArgs {
|
|
5
|
+
readonly id?: string;
|
|
6
|
+
readonly status: CheckoutItemStatus;
|
|
7
|
+
readonly feedbacks?: FeedbackProjection;
|
|
8
|
+
readonly replacedFor?: CheckoutItemProductVariantProjection;
|
|
9
|
+
}
|
|
10
|
+
interface CheckoutItemFunction {
|
|
11
|
+
(args: CheckoutItemFunctionArgs): CheckoutItemProjection;
|
|
12
|
+
}
|
|
13
|
+
declare const checkoutItem: CheckoutItemFunction;
|
|
14
|
+
export type { CheckoutItemFunctionArgs };
|
|
15
|
+
export { checkoutItem };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Currency } from "../../../domain/checkoutItem/model/currency";
|
|
2
|
+
import { MediaPerspective, } from "../../../projection/checkoutItem/checkoutItem";
|
|
3
|
+
const checkoutItem = ({ id = "7b389d69-f157-4234-8531-c1a1eb17dccb", status, feedbacks = {}, replacedFor = null, }) => ({
|
|
4
|
+
id,
|
|
5
|
+
status,
|
|
6
|
+
price: {
|
|
7
|
+
amount: 3999,
|
|
8
|
+
currency: Currency.EUR,
|
|
9
|
+
},
|
|
10
|
+
feedbacks,
|
|
11
|
+
productVariant: {
|
|
12
|
+
id: "7b389d69-f157-4234-8531-c1a1eb17dccb",
|
|
13
|
+
media: [
|
|
14
|
+
{
|
|
15
|
+
id: "d7ec731b-4123-4394-829b-297b952e73e5",
|
|
16
|
+
url: "https://cdn-catalog-back-prod.envs.lookiero.tech/1a/28/1a28f712-a76c-4172-8a11-f15002981dc0.jpg",
|
|
17
|
+
perspective: MediaPerspective.MAIN,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: "8055e209-2fe9-44c5-b715-b09ad3ef741c",
|
|
21
|
+
url: "https://cdn-catalog-back-prod.envs.lookiero.tech/15/ac/15aca112-4e71-4646-8db5-7f9723bc0130.jpg",
|
|
22
|
+
perspective: MediaPerspective.DETAIL,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
brand: "CKS",
|
|
26
|
+
name: "Sari Tshirt lines",
|
|
27
|
+
size: {
|
|
28
|
+
id: "b26f7190-d505-4d24-aeb9-ad36e5e6ec4b",
|
|
29
|
+
lookiero: "M",
|
|
30
|
+
uk: "M",
|
|
31
|
+
it: "M",
|
|
32
|
+
europe: "M",
|
|
33
|
+
unique: false,
|
|
34
|
+
},
|
|
35
|
+
color: {
|
|
36
|
+
id: "c228d1b0-d06d-4d5c-a7d5-953fd43af0d8",
|
|
37
|
+
name: "black",
|
|
38
|
+
label: "black_C2",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
replacedFor,
|
|
42
|
+
});
|
|
43
|
+
export { checkoutItem };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|