@tonder.io/ionic-lite-sdk 0.0.36-beta.1 → 0.0.38-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +427 -116
  2. package/dist/classes/BaseInlineCheckout.d.ts +47 -0
  3. package/dist/classes/liteCheckout.d.ts +25 -29
  4. package/dist/data/businessApi.d.ts +2 -0
  5. package/dist/data/cardApi.d.ts +4 -0
  6. package/dist/data/checkoutApi.d.ts +5 -0
  7. package/dist/data/customerApi.d.ts +2 -0
  8. package/dist/data/openPayApi.d.ts +1 -0
  9. package/dist/data/paymentMethodApi.d.ts +5 -0
  10. package/dist/data/skyflowApi.d.ts +1 -0
  11. package/dist/helpers/skyflow.d.ts +3 -0
  12. package/dist/helpers/utils.d.ts +8 -4
  13. package/dist/helpers/validations.d.ts +6 -0
  14. package/dist/index.d.ts +3 -1
  15. package/dist/index.js +1 -1
  16. package/dist/shared/catalog/paymentMethodsCatalog.d.ts +1 -0
  17. package/dist/shared/constants/messages.d.ts +11 -0
  18. package/dist/shared/constants/paymentMethodAPM.d.ts +62 -0
  19. package/dist/shared/constants/tonderUrl.d.ts +7 -0
  20. package/dist/types/card.d.ts +30 -0
  21. package/dist/types/checkout.d.ts +109 -0
  22. package/dist/types/commons.d.ts +42 -0
  23. package/dist/types/customer.d.ts +22 -0
  24. package/dist/types/liteInlineCheckout.d.ts +151 -0
  25. package/dist/types/paymentMethod.d.ts +22 -0
  26. package/dist/types/requests.d.ts +12 -3
  27. package/dist/types/transaction.d.ts +101 -0
  28. package/package.json +4 -1
  29. package/src/classes/BaseInlineCheckout.ts +387 -0
  30. package/src/classes/errorResponse.ts +1 -1
  31. package/src/classes/liteCheckout.ts +372 -356
  32. package/src/data/businessApi.ts +18 -0
  33. package/src/data/cardApi.ts +87 -0
  34. package/src/data/checkoutApi.ts +84 -0
  35. package/src/data/customerApi.ts +31 -0
  36. package/src/data/openPayApi.ts +12 -0
  37. package/src/data/paymentMethodApi.ts +37 -0
  38. package/src/data/skyflowApi.ts +20 -0
  39. package/src/helpers/mercadopago.ts +14 -14
  40. package/src/helpers/skyflow.ts +91 -0
  41. package/src/helpers/utils.ts +66 -266
  42. package/src/helpers/validations.ts +55 -0
  43. package/src/index.ts +9 -1
  44. package/src/shared/catalog/paymentMethodsCatalog.ts +248 -0
  45. package/src/shared/constants/messages.ts +11 -0
  46. package/src/shared/constants/paymentMethodAPM.ts +63 -0
  47. package/src/shared/constants/tonderUrl.ts +8 -0
  48. package/src/types/card.ts +35 -0
  49. package/src/types/checkout.ts +124 -0
  50. package/src/types/commons.ts +114 -67
  51. package/src/types/customer.ts +22 -0
  52. package/src/types/liteInlineCheckout.ts +216 -0
  53. package/src/types/paymentMethod.ts +24 -0
  54. package/src/types/requests.ts +12 -3
  55. package/src/types/transaction.ts +101 -0
  56. package/src/types/validations.d.ts +11 -0
  57. package/tests/classes/liteCheckout.test.ts +5 -5
  58. package/tests/methods/createOrder.test.ts +3 -4
  59. package/tests/methods/createPayment.test.ts +2 -3
  60. package/tests/methods/customerRegister.test.ts +3 -4
  61. package/tests/methods/getBusiness.test.ts +4 -5
  62. package/tests/methods/getCustomerCards.test.ts +6 -13
  63. package/tests/methods/registerCustomerCard.test.ts +2 -2
  64. package/tests/methods/startCheckoutRouter.test.ts +2 -2
  65. package/tests/methods/startCheckoutRouterFull.test.ts +2 -2
  66. package/tests/utils/defaultMock.ts +3 -2
  67. package/tests/utils/mockClasses.ts +7 -4
  68. package/types/classes/liteCheckout.d.ts +29 -0
  69. package/types/classes/liteCheckout.js +225 -0
  70. package/types/classes/liteCheckout.js.map +1 -0
  71. package/types/helpers/utils.d.ts +3 -0
  72. package/types/helpers/utils.js +27 -0
  73. package/types/helpers/utils.js.map +1 -0
  74. package/types/index.d.ts +2 -0
  75. package/types/index.js +6 -0
  76. package/types/index.js.map +1 -0
  77. package/tests/methods/getOpenpayDeviceSessionID.test.ts +0 -95
  78. package/tests/methods/getSkyflowToken.test.ts +0 -155
  79. package/tests/methods/getVaultToken.test.ts +0 -107
@@ -16,6 +16,7 @@ const abortSignal = new AbortController().signal;
16
16
 
17
17
  export const constructorFields = {
18
18
  signal: abortSignal,
19
- baseUrlTonder: "",
20
- publicApiKeyTonder: "",
19
+ baseUrl: "",
20
+ apiKey: "",
21
+ returnUrl: ""
21
22
  };
@@ -4,9 +4,8 @@ import {
4
4
  CreatePaymentRequest,
5
5
  RegisterCustomerCardRequest,
6
6
  StartCheckoutRequest,
7
- TokensRequest,
8
7
  StartCheckoutFullRequest,
9
- StartCheckoutRequestWithCard
8
+ StartCheckoutRequestWithCard, TokensSkyflowRequest
10
9
  } from "../../src/types/requests";
11
10
  import {
12
11
  CreateOrderResponse,
@@ -556,13 +555,17 @@ export class StartCheckoutFullRequestClass implements StartCheckoutFullRequest {
556
555
  }
557
556
  }
558
557
 
559
- export class TokensRequestClass implements TokensRequest {
558
+ export class TokensRequestClass implements TokensSkyflowRequest {
559
+ baseUrl!: string;
560
+ apiKey!: string;
560
561
  vault_id!: string;
561
562
  vault_url!: string;
562
563
  data: { [key: string]: any } = {};
563
564
 
564
- get mockObject(): TokensRequest {
565
+ get mockObject(): TokensSkyflowRequest {
565
566
  return {
567
+ baseUrl: "",
568
+ apiKey: "",
566
569
  vault_id: "string",
567
570
  vault_url: "string",
568
571
  data: {
@@ -0,0 +1,29 @@
1
+ import { TokensRequest } from "../types/skyflow";
2
+ declare global {
3
+ interface Window {
4
+ OpenPay: any;
5
+ }
6
+ }
7
+ type LiteCheckoutConstructor = {
8
+ signal: AbortSignal;
9
+ baseUrlTonder: string;
10
+ publicApiKeyTonder: string;
11
+ };
12
+ export declare class LiteCheckout {
13
+ baseUrlTonder: string;
14
+ signal: AbortSignal;
15
+ publicApiKeyTonder: string;
16
+ constructor({ signal, baseUrlTonder, publicApiKeyTonder }: LiteCheckoutConstructor);
17
+ getOpenpayDeviceSessionID(merchant_id: string, public_key: string): Promise<any>;
18
+ getBusiness(): Promise<any>;
19
+ customerRegister(email: string): Promise<any>;
20
+ createOrder(orderItems: any): Promise<any>;
21
+ createPayment(paymentItems: {
22
+ business_pk: string;
23
+ }): Promise<any>;
24
+ startCheckoutRouter(routerItems: any): Promise<any>;
25
+ getSkyflowTokens({ vault_id, vault_url, data }: TokensRequest): Promise<any>;
26
+ getVaultToken(): Promise<any>;
27
+ getCustomerCards(customerToken: string, query: string): Promise<any>;
28
+ }
29
+ export {};
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.LiteCheckout = void 0;
16
+ const skyflow_js_1 = __importDefault(require("skyflow-js"));
17
+ class LiteCheckout {
18
+ constructor({ signal, baseUrlTonder, publicApiKeyTonder }) {
19
+ this.baseUrlTonder = baseUrlTonder;
20
+ this.signal = signal;
21
+ this.publicApiKeyTonder = publicApiKeyTonder;
22
+ }
23
+ getOpenpayDeviceSessionID(merchant_id, public_key) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ let openpay = yield window.OpenPay;
26
+ openpay.setId(merchant_id);
27
+ openpay.setApiKey(public_key);
28
+ openpay.setSandboxMode(true);
29
+ var response = yield openpay.deviceData.setup({ signal: this.signal });
30
+ return response;
31
+ });
32
+ }
33
+ getBusiness() {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ const getBusiness = yield fetch(`${this.baseUrlTonder}/api/v1/payments/business/${this.publicApiKeyTonder}`, {
36
+ headers: {
37
+ Authorization: `Token ${this.publicApiKeyTonder}`,
38
+ },
39
+ signal: this.signal,
40
+ });
41
+ const response = yield getBusiness.json();
42
+ return response;
43
+ });
44
+ }
45
+ customerRegister(email) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const url = `${this.baseUrlTonder}/api/v1/customer/`;
48
+ const data = { email: email };
49
+ const response = yield fetch(url, {
50
+ method: "POST",
51
+ headers: {
52
+ "Content-Type": "application/json",
53
+ Authorization: `Token ${this.publicApiKeyTonder}`,
54
+ },
55
+ signal: this.signal,
56
+ body: JSON.stringify(data),
57
+ });
58
+ if (response.status === 201) {
59
+ const jsonResponse = yield response.json();
60
+ return jsonResponse;
61
+ }
62
+ else {
63
+ throw new Error(`Error: ${response.statusText}`);
64
+ }
65
+ });
66
+ }
67
+ createOrder(orderItems) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const url = `${this.baseUrlTonder}/api/v1/orders/`;
70
+ const data = orderItems;
71
+ const response = yield fetch(url, {
72
+ method: "POST",
73
+ headers: {
74
+ "Content-Type": "application/json",
75
+ Authorization: `Token ${this.publicApiKeyTonder}`,
76
+ },
77
+ body: JSON.stringify(data),
78
+ });
79
+ if (response.status === 201) {
80
+ const jsonResponse = yield response.json();
81
+ return jsonResponse;
82
+ }
83
+ else {
84
+ throw new Error(`Error: ${response.statusText}`);
85
+ }
86
+ });
87
+ }
88
+ createPayment(paymentItems) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ const url = `${this.baseUrlTonder}/api/v1/business/${paymentItems.business_pk}/payments/`;
91
+ const data = paymentItems;
92
+ const response = yield fetch(url, {
93
+ method: "POST",
94
+ headers: {
95
+ "Content-Type": "application/json",
96
+ Authorization: `Token ${this.publicApiKeyTonder}`,
97
+ },
98
+ body: JSON.stringify(data),
99
+ });
100
+ if (response.status >= 200 && response.status <= 299) {
101
+ const jsonResponse = yield response.json();
102
+ return jsonResponse;
103
+ }
104
+ else {
105
+ throw new Error(`Error: ${response.statusText}`);
106
+ }
107
+ });
108
+ }
109
+ startCheckoutRouter(routerItems) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ try {
112
+ const url = `${this.baseUrlTonder}/api/v1/checkout-router/`;
113
+ const data = routerItems;
114
+ const response = yield fetch(url, {
115
+ method: "POST",
116
+ headers: {
117
+ "Content-Type": "application/json",
118
+ Authorization: `Token ${this.publicApiKeyTonder}`,
119
+ },
120
+ body: JSON.stringify(data),
121
+ });
122
+ if (response.status >= 200 && response.status <= 299) {
123
+ const jsonResponse = yield response.json();
124
+ return jsonResponse;
125
+ }
126
+ else {
127
+ throw new Error("Failed to start checkout router");
128
+ }
129
+ }
130
+ catch (error) {
131
+ throw error;
132
+ }
133
+ });
134
+ }
135
+ getSkyflowTokens({ vault_id, vault_url, data }) {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ const skyflow = skyflow_js_1.default.init({
138
+ vaultID: vault_id,
139
+ vaultURL: vault_url,
140
+ getBearerToken: () => __awaiter(this, void 0, void 0, function* () { return yield this.getVaultToken(); }),
141
+ options: {
142
+ logLevel: skyflow_js_1.default.LogLevel.ERROR,
143
+ env: skyflow_js_1.default.Env.DEV,
144
+ },
145
+ });
146
+ const collectContainer = skyflow.container(skyflow_js_1.default.ContainerType.COLLECT);
147
+ const fields = yield Promise.all(Object.keys(data).map((key) => __awaiter(this, void 0, void 0, function* () {
148
+ const cardHolderNameElement = yield collectContainer.create({
149
+ table: "cards",
150
+ column: key,
151
+ type: skyflow_js_1.default.ElementType.INPUT_FIELD
152
+ });
153
+ return { element: cardHolderNameElement, key: key };
154
+ })));
155
+ const fieldPromises = fields.map((field) => {
156
+ return new Promise((resolve, reject) => {
157
+ var _a;
158
+ const div = document.createElement("div");
159
+ div.hidden = true;
160
+ div.id = `id-${field.key}`;
161
+ (_a = document.querySelector(`body`)) === null || _a === void 0 ? void 0 : _a.appendChild(div);
162
+ setTimeout(() => {
163
+ field.element.mount(`#id-${field.key}`);
164
+ setInterval(() => {
165
+ if (field.element.isMounted()) {
166
+ const value = data[field.key];
167
+ field.element.update({ value: value });
168
+ return resolve(field.element.isMounted());
169
+ }
170
+ }, 120);
171
+ }, 120);
172
+ });
173
+ });
174
+ const result = yield Promise.all(fieldPromises);
175
+ const mountFail = result.find((item) => !item);
176
+ if (mountFail) {
177
+ return { error: "Ocurrió un error al montar los campos de la tarjeta" };
178
+ }
179
+ else {
180
+ try {
181
+ const collectResponseSkyflowTonder = yield collectContainer.collect();
182
+ return collectResponseSkyflowTonder["records"][0]["fields"];
183
+ }
184
+ catch (error) {
185
+ console.error("Por favor, verifica todos los campos de tu tarjeta");
186
+ return { error: "Por favor, verifica todos los campos de tu tarjeta" };
187
+ }
188
+ }
189
+ });
190
+ }
191
+ getVaultToken() {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ const response = yield fetch(`${this.baseUrlTonder}/api/v1/vault-token/`, {
194
+ method: 'GET',
195
+ headers: {
196
+ 'Authorization': `Token ${this.publicApiKeyTonder}`
197
+ },
198
+ signal: this.signal,
199
+ });
200
+ if (response.ok) {
201
+ const responseBody = yield response.json();
202
+ return responseBody.token;
203
+ }
204
+ else {
205
+ throw new Error('Failed to retrieve bearer token');
206
+ }
207
+ });
208
+ }
209
+ getCustomerCards(customerToken, query) {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ const response = yield fetch(`${this.baseUrlTonder}/api/v1/cards/${query}`, {
212
+ method: 'GET',
213
+ headers: {
214
+ 'Authorization': `Token ${customerToken}`
215
+ },
216
+ signal: this.signal,
217
+ });
218
+ const jsonResponse = yield response.json();
219
+ console.log("jsonResponse: ", jsonResponse);
220
+ return jsonResponse;
221
+ });
222
+ }
223
+ }
224
+ exports.LiteCheckout = LiteCheckout;
225
+ //# sourceMappingURL=liteCheckout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liteCheckout.js","sourceRoot":"","sources":["../../src/classes/liteCheckout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const createObserver: ({ target }: {
2
+ target: string;
3
+ }) => Promise<any>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createObserver = void 0;
4
+ const createObserver = ({ target }) => {
5
+ return new Promise((resolve, reject) => {
6
+ let hasChanged = false;
7
+ const targetNode = document.querySelector(target);
8
+ const config = { attributes: true, childList: true, subtree: true };
9
+ const callback = (mutationList, observer) => {
10
+ for (const mutation of mutationList) {
11
+ if (mutation.type === "childList") {
12
+ hasChanged = true;
13
+ resolve(mutation);
14
+ }
15
+ }
16
+ };
17
+ const observer = new MutationObserver(callback);
18
+ observer.observe(targetNode, config);
19
+ window.setTimeout(() => {
20
+ if (!hasChanged) {
21
+ reject("Mounting error");
22
+ }
23
+ }, 5000);
24
+ });
25
+ };
26
+ exports.createObserver = createObserver;
27
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAAC,EAAE,MAAM,EAAsB,EAAgB,EAAE;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAErC,IAAI,UAAU,GAAG,KAAK,CAAC;QAGvB,MAAM,UAAU,GAAQ,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAGvD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAGpE,MAAM,QAAQ,GAAG,CAAC,YAAiB,EAAE,QAA0B,EAAE,EAAE;YACjE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAClC,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACnB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAGF,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAGhD,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAErC,MAAM,CAAC,UAAU,CAAC,GAAE,EAAE;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;IAEX,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAA;AApCY,QAAA,cAAc,kBAoC1B"}
@@ -0,0 +1,2 @@
1
+ import { LiteCheckout } from './classes/liteCheckout';
2
+ export { LiteCheckout };
package/types/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LiteCheckout = void 0;
4
+ const liteCheckout_1 = require("./classes/liteCheckout");
5
+ Object.defineProperty(exports, "LiteCheckout", { enumerable: true, get: function () { return liteCheckout_1.LiteCheckout; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAqD;AAGjD,6FAHK,2BAAY,OAGL"}
@@ -1,95 +0,0 @@
1
- import "../utils/defaultMock";
2
- import { LiteCheckout } from "../../src";
3
- import { ErrorResponse } from "../../src/classes/errorResponse";
4
- import { LiteCheckoutConstructor } from "../../src/classes/liteCheckout";
5
- import { IErrorResponse } from "../../src/types/responses";
6
- import { constructorFields } from "../utils/defaultMock";
7
-
8
- declare global {
9
- interface Window {
10
- OpenPay: any;
11
- Skyflow: any;
12
- }
13
- }
14
-
15
- describe("getOpenpayDeviceSessionID", () => {
16
- let checkoutConstructor: LiteCheckoutConstructor,
17
- liteCheckout: LiteCheckout,
18
- fetchSpy: jest.SpyInstance,
19
- liteCheckoutSpy: jest.SpyInstance;
20
-
21
- beforeEach(async () => {
22
- window.fetch = jest.fn();
23
-
24
- checkoutConstructor = {
25
- ...constructorFields,
26
- };
27
-
28
- liteCheckout = new LiteCheckout(constructorFields);
29
-
30
- fetchSpy = jest.spyOn(global, "fetch");
31
- });
32
-
33
- afterEach(() => {
34
- jest.restoreAllMocks();
35
- });
36
-
37
- it("getOpenpayDeviceSessionID success", async () => {
38
- liteCheckoutSpy = jest.spyOn(liteCheckout, "getOpenpayDeviceSessionID");
39
-
40
- window.OpenPay = {
41
- setId: jest.fn(),
42
- setApiKey: jest.fn(),
43
- setSandboxMode: jest.fn(),
44
- deviceData: {
45
- setup: jest.fn().mockImplementation(() => Promise.resolve("test")),
46
- },
47
- };
48
-
49
- expect(
50
- liteCheckout.getOpenpayDeviceSessionID("4321", "1234", true)
51
- ).resolves.toBe("test");
52
- expect(liteCheckoutSpy).toHaveBeenCalledWith("4321", "1234", true);
53
- });
54
-
55
- it("getOpenpayDeviceSessionID empty", async () => {
56
- liteCheckoutSpy = jest.spyOn(liteCheckout, "getOpenpayDeviceSessionID");
57
-
58
- window.OpenPay = {
59
- setId: jest.fn(),
60
- setApiKey: jest.fn(),
61
- setSandboxMode: jest.fn(),
62
- deviceData: {
63
- setup: jest.fn().mockImplementation(() => Promise.resolve()),
64
- },
65
- };
66
-
67
- expect(
68
- liteCheckout.getOpenpayDeviceSessionID("", "", true)
69
- ).resolves.toBeUndefined();
70
- expect(liteCheckoutSpy).toHaveBeenCalledWith("", "", true);
71
- });
72
-
73
- it("getOpenpayDeviceSessionID error", async () => {
74
- liteCheckoutSpy = jest.spyOn(liteCheckout, "getOpenpayDeviceSessionID");
75
-
76
- window.OpenPay = {
77
- setId: jest.fn(),
78
- setApiKey: jest.fn(),
79
- setSandboxMode: jest.fn(),
80
- deviceData: {
81
- setup: jest.fn().mockRejectedValue("error"),
82
- },
83
- };
84
-
85
- try {
86
- await liteCheckout.getOpenpayDeviceSessionID("", "", true);
87
- } catch (e) {
88
- const error: IErrorResponse = e as IErrorResponse;
89
- expect(liteCheckoutSpy).toHaveBeenCalledWith("", "", true);
90
- expect(liteCheckoutSpy).toHaveReturned();
91
- expect(error.message).toStrictEqual("error");
92
- expect(error).toBeInstanceOf(ErrorResponse);
93
- }
94
- });
95
- });
@@ -1,155 +0,0 @@
1
- import "../utils/defaultMock";
2
- import Skyflow from "skyflow-js";
3
- import { LiteCheckout } from "../../src";
4
- import { ErrorResponse } from "../../src/classes/errorResponse";
5
- import { LiteCheckoutConstructor } from "../../src/classes/liteCheckout";
6
- import { IErrorResponse } from "../../src/types/responses";
7
- import { constructorFields } from "../utils/defaultMock";
8
- import { TokensRequestClass } from "../utils/mockClasses";
9
-
10
-
11
- declare global {
12
- interface Window {
13
- OpenPay: any;
14
- Skyflow: any;
15
- }
16
- }
17
-
18
- describe("getSkyflowToken", () => {
19
- let checkoutConstructor: LiteCheckoutConstructor,
20
- liteCheckout: LiteCheckout,
21
- fetchSpy: jest.SpyInstance,
22
- liteCheckoutSpy: jest.SpyInstance;
23
-
24
- beforeEach(async () => {
25
- window.fetch = jest.fn();
26
-
27
- checkoutConstructor = {
28
- ...constructorFields,
29
- };
30
-
31
- liteCheckout = new LiteCheckout(constructorFields);
32
-
33
- fetchSpy = jest.spyOn(global, "fetch");
34
- });
35
-
36
- afterEach(() => {
37
- jest.restoreAllMocks();
38
- });
39
-
40
- it("getSkyflowTokens success", async () => {
41
- liteCheckout.getVaultToken = jest
42
- .fn()
43
- .mockImplementation(() => Promise.resolve("1234"));
44
-
45
- liteCheckout.getFieldsPromise = jest
46
- .fn()
47
- .mockImplementation(() =>
48
- Promise.resolve(new Array(5).fill(Promise.resolve(true)))
49
- );
50
-
51
- liteCheckoutSpy = jest.spyOn(liteCheckout, "getSkyflowTokens");
52
-
53
- const response = await liteCheckout.getSkyflowTokens({
54
- ...new TokensRequestClass(),
55
- });
56
- expect(response).toStrictEqual("1234");
57
- expect(liteCheckoutSpy).toHaveBeenCalled();
58
- });
59
-
60
- it("getSkyflowTokens empty", async () => {
61
- liteCheckout.getVaultToken = jest
62
- .fn()
63
- .mockImplementation(() => Promise.resolve(""));
64
-
65
- jest.spyOn(Skyflow, "init").mockImplementation(jest.fn().mockImplementation(() => ({
66
- container: () => ({
67
- collect: jest.fn().mockResolvedValue(""),
68
- }),
69
- })));
70
-
71
- liteCheckout.getFieldsPromise = jest
72
- .fn()
73
- .mockImplementation(() =>
74
- Promise.resolve(new Array(5).fill(Promise.resolve(true)))
75
- );
76
-
77
- liteCheckoutSpy = jest.spyOn(liteCheckout, "getSkyflowTokens");
78
-
79
- let error: ErrorResponse;
80
-
81
- try {
82
- const response = await liteCheckout.getSkyflowTokens({
83
- ...new TokensRequestClass(),
84
- }) as IErrorResponse;
85
- } catch (e: any) {
86
- error = e;
87
- expect(error).toBeInstanceOf(ErrorResponse);
88
- expect(error.message).toStrictEqual("Por favor, verifica todos los campos de tu tarjeta");
89
- }
90
- });
91
-
92
- it("getSkyflowTokens error mount fields", async () => {
93
- liteCheckout.getVaultToken = jest
94
- .fn()
95
- .mockImplementation(() => Promise.resolve(""));
96
-
97
- jest.spyOn(Skyflow, "init").mockImplementation(jest.fn().mockImplementation(() => ({
98
- container: () => ({
99
- collect: jest.fn().mockResolvedValue(""),
100
- }),
101
- })));
102
-
103
- liteCheckout.getFieldsPromise = jest
104
- .fn()
105
- .mockImplementation(() =>
106
- new Array(5).fill(false)
107
- );
108
-
109
- liteCheckoutSpy = jest.spyOn(liteCheckout, "getSkyflowTokens");
110
-
111
- let error: ErrorResponse;
112
-
113
- try {
114
- const response = (await liteCheckout.getSkyflowTokens({
115
- ...new TokensRequestClass(),
116
- })) as IErrorResponse;
117
- } catch (e: any) {
118
- error = e;
119
- expect(error).toBeInstanceOf(ErrorResponse);
120
- expect(error.message).toStrictEqual("Ocurrió un error al montar los campos de la tarjeta");
121
- }
122
- });
123
-
124
- it("getSkyflowTokens error collect catch", async () => {
125
- liteCheckout.getVaultToken = jest
126
- .fn()
127
- .mockImplementation(() => Promise.resolve("1234"));
128
-
129
- jest.spyOn(Skyflow, "init").mockImplementation(jest.fn().mockImplementation(() => ({
130
- container: () => ({
131
- collect: jest.fn().mockRejectedValue("error"),
132
- }),
133
- })));
134
-
135
- liteCheckout.getFieldsPromise = jest
136
- .fn()
137
- .mockImplementation(() =>
138
- Promise.resolve(new Array(5).fill(Promise.resolve(true)))
139
- );
140
-
141
- liteCheckoutSpy = jest.spyOn(liteCheckout, "getSkyflowTokens");
142
-
143
- let error: ErrorResponse;
144
-
145
- try {
146
- const response = (await liteCheckout.getSkyflowTokens({
147
- ...new TokensRequestClass(),
148
- })) as IErrorResponse;
149
- } catch (e: any) {
150
- error = e;
151
- expect(error.message).toStrictEqual("error");
152
- expect(error).toBeInstanceOf(ErrorResponse);
153
- }
154
- });
155
- });