-
Notifications
You must be signed in to change notification settings - Fork 282
/
Copy pathmocks.js
110 lines (104 loc) · 2.78 KB
/
mocks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
export const mockElement = () => ({
mount: jest.fn(),
destroy: jest.fn(),
on: jest.fn(),
update: jest.fn(),
});
export const mockElements = () => {
const elements = {};
return {
create: jest.fn((type) => {
elements[type] = mockElement();
return elements[type];
}),
getElement: jest.fn((type) => {
return elements[type] || null;
}),
update: jest.fn(),
};
};
export const mockCheckoutSession = () => {
return {
lineItems: [],
currency: 'usd',
shippingOptions: [],
total: {
subtotal: 1099,
taxExclusive: 0,
taxInclusive: 0,
shippingRate: 0,
discount: 0,
total: 1099,
},
confirmationRequirements: [],
canConfirm: true,
};
};
export const mockCheckoutSdk = () => {
const elements = {};
return {
changeAppearance: jest.fn(),
createPaymentElement: jest.fn(() => {
elements.payment = mockElement();
return elements.payment;
}),
createBillingAddressElement: jest.fn(() => {
elements.billingAddress = mockElement();
return elements.billingAddress;
}),
createShippingAddressElement: jest.fn(() => {
elements.shippingAddress = mockElement();
return elements.shippingAddress;
}),
createExpressCheckoutElement: jest.fn(() => {
elements.expressCheckout = mockElement();
return elements.expressCheckout;
}),
getPaymentElement: jest.fn(() => {
return elements.payment || null;
}),
getBillingAddressElement: jest.fn(() => {
return elements.billingAddress || null;
}),
getShippingAddressElement: jest.fn(() => {
return elements.shippingAddress || null;
}),
getExpressCheckoutElement: jest.fn(() => {
return elements.expressCheckout || null;
}),
session: jest.fn(() => mockCheckoutSession()),
applyPromotionCode: jest.fn(),
removePromotionCode: jest.fn(),
updateShippingAddress: jest.fn(),
updateBillingAddress: jest.fn(),
updatePhoneNumber: jest.fn(),
updateEmail: jest.fn(),
updateLineItemQuantity: jest.fn(),
updateShippingOption: jest.fn(),
confirm: jest.fn(),
on: jest.fn(),
};
};
export const mockEmbeddedCheckout = () => ({
mount: jest.fn(),
unmount: jest.fn(),
destroy: jest.fn(),
});
export const mockStripe = () => {
const checkoutSdk = mockCheckoutSdk();
return {
elements: jest.fn(() => mockElements()),
createToken: jest.fn(),
createSource: jest.fn(),
createPaymentMethod: jest.fn(),
confirmCardPayment: jest.fn(),
confirmCardSetup: jest.fn(),
paymentRequest: jest.fn(),
registerAppInfo: jest.fn(),
_registerWrapper: jest.fn(),
initCheckout: jest.fn().mockResolvedValue(checkoutSdk),
initEmbeddedCheckout: jest.fn(() =>
Promise.resolve(mockEmbeddedCheckout())
),
};
};