From 5748656956985dc85f26a5a1a4f8bce672fb31e6 Mon Sep 17 00:00:00 2001 From: Hai-Yen Nguyen Date: Wed, 15 Jan 2025 13:54:38 -0600 Subject: [PATCH 1/4] create new types for createOrder and creatVaultToken --- .../types/components/card-fields.d.ts | 23 +++++++-- .../paypal-js/types/tests/card-fields.test.ts | 48 +++++++++++++++++++ 2 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 packages/paypal-js/types/tests/card-fields.test.ts diff --git a/packages/paypal-js/types/components/card-fields.d.ts b/packages/paypal-js/types/components/card-fields.d.ts index 2280e6b7..dc3c3445 100644 --- a/packages/paypal-js/types/components/card-fields.d.ts +++ b/packages/paypal-js/types/components/card-fields.d.ts @@ -127,16 +127,31 @@ export interface PayPalCardFieldsIndividualField { close: () => Promise; } -export interface PayPalCardFieldsComponentOptions { - createOrder: () => Promise; +export interface PayPalCardFieldsComponentBasics { onApprove: (data: CardFieldsOnApproveData) => void; onError: (err: Record) => void; - createVaultSetupToken?: () => Promise; inputEvents?: PayPalCardFieldsInputEvents; style?: Record; } -export interface PayPalCardFieldsComponent { +export interface PayPalCardFieldsComponentCreateOrder + extends PayPalCardFieldsComponentBasics { + createOrder: () => Promise; + createVaultSetupToken?: never; +} + +export interface PayPalCardFieldsComponentCreateVaultSetupToken + extends PayPalCardFieldsComponentBasics { + createOrder?: never; + createVaultSetupToken: () => Promise; +} + +export type PayPalCardFieldsComponentOptions = + | PayPalCardFieldsComponentCreateOrder + | PayPalCardFieldsComponentCreateVaultSetupToken; + +export interface PayPalCardFieldsComponent + extends PayPalCardFieldsComponentOptions { getState: () => Promise; isEligible: () => boolean; submit: () => Promise; diff --git a/packages/paypal-js/types/tests/card-fields.test.ts b/packages/paypal-js/types/tests/card-fields.test.ts new file mode 100644 index 00000000..56701f6d --- /dev/null +++ b/packages/paypal-js/types/tests/card-fields.test.ts @@ -0,0 +1,48 @@ +import { test, vi, describe, expect } from "vitest"; + +import { PayPalCardFieldsComponentOptions } from "../components/card-fields"; + +describe("testing", () => { + test("only creatOrder", () => { + const createOrderCallback: PayPalCardFieldsComponentOptions = { + createOrder: vi.fn(), + onApprove: vi.fn(), + onError: vi.fn(), + }; + + expect(createOrderCallback.createVaultSetupToken).toBeUndefined(); + }); + + test("only createVaultSetupToken", () => { + const createVaultSetupTokenCallback: PayPalCardFieldsComponentOptions = + { + createVaultSetupToken: vi.fn(), + onApprove: vi.fn(), + onError: vi.fn(), + }; + + expect(createVaultSetupTokenCallback.createOrder).toBeUndefined(); + }); + + test.skip("Can't have both", () => { + // @ts-expect-error : should throw error if both createOrder and createVaultSetuptoken called + const callback: PayPalCardFieldsComponentOptions = { + createOrder: vi.fn(), + createVaultSetupToken: vi.fn(), + onApprove: vi.fn(), + onError: vi.fn(), + }; + + expect(callback).toThrowError(); + }); + + test.skip("Can't have both", () => { + // @ts-expect-error: should throw error if neither createOrder or createVaultSetuptoken called + const callback: PayPalCardFieldsComponentOptions = { + onApprove: vi.fn(), + onError: vi.fn(), + }; + + expect(callback).toThrowError(); + }); +}); From 25fa9d1df675a0a5370ede1bf91d6c959ae7e07f Mon Sep 17 00:00:00 2001 From: Hai-Yen Nguyen Date: Fri, 17 Jan 2025 17:12:08 -0600 Subject: [PATCH 2/4] add onCancel to card-field --- .changeset/silly-bears-boil.md | 5 +++++ packages/paypal-js/types/components/card-fields.d.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/silly-bears-boil.md diff --git a/.changeset/silly-bears-boil.md b/.changeset/silly-bears-boil.md new file mode 100644 index 00000000..6da00c84 --- /dev/null +++ b/.changeset/silly-bears-boil.md @@ -0,0 +1,5 @@ +--- +"@paypal/paypal-js": major +--- + +create new type for createOrder, createVaultToken and add onCancel to card-field diff --git a/packages/paypal-js/types/components/card-fields.d.ts b/packages/paypal-js/types/components/card-fields.d.ts index dc3c3445..a4860e6f 100644 --- a/packages/paypal-js/types/components/card-fields.d.ts +++ b/packages/paypal-js/types/components/card-fields.d.ts @@ -130,6 +130,7 @@ export interface PayPalCardFieldsIndividualField { export interface PayPalCardFieldsComponentBasics { onApprove: (data: CardFieldsOnApproveData) => void; onError: (err: Record) => void; + onCancel?: () => Promise | void; inputEvents?: PayPalCardFieldsInputEvents; style?: Record; } @@ -150,8 +151,7 @@ export type PayPalCardFieldsComponentOptions = | PayPalCardFieldsComponentCreateOrder | PayPalCardFieldsComponentCreateVaultSetupToken; -export interface PayPalCardFieldsComponent - extends PayPalCardFieldsComponentOptions { +export interface PayPalCardFieldsComponent { getState: () => Promise; isEligible: () => boolean; submit: () => Promise; From 35591cd0def4b24137ac71f6987ea3306175223b Mon Sep 17 00:00:00 2001 From: Hai-Yen Nguyen Date: Wed, 22 Jan 2025 13:11:17 -0600 Subject: [PATCH 3/4] fix naming for the test and update changeset --- .changeset/modern-drinks-think.md | 5 +++++ packages/paypal-js/types/tests/card-fields.test.ts | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/modern-drinks-think.md diff --git a/.changeset/modern-drinks-think.md b/.changeset/modern-drinks-think.md new file mode 100644 index 00000000..b7533173 --- /dev/null +++ b/.changeset/modern-drinks-think.md @@ -0,0 +1,5 @@ +--- +"@paypal/paypal-js": minor +--- + +Adding test for card-fields.test.ts diff --git a/packages/paypal-js/types/tests/card-fields.test.ts b/packages/paypal-js/types/tests/card-fields.test.ts index 56701f6d..ce6faa6e 100644 --- a/packages/paypal-js/types/tests/card-fields.test.ts +++ b/packages/paypal-js/types/tests/card-fields.test.ts @@ -2,7 +2,7 @@ import { test, vi, describe, expect } from "vitest"; import { PayPalCardFieldsComponentOptions } from "../components/card-fields"; -describe("testing", () => { +describe.only("testing createOrder and createVaultToken types", () => { test("only creatOrder", () => { const createOrderCallback: PayPalCardFieldsComponentOptions = { createOrder: vi.fn(), @@ -24,8 +24,8 @@ describe("testing", () => { expect(createVaultSetupTokenCallback.createOrder).toBeUndefined(); }); - test.skip("Can't have both", () => { - // @ts-expect-error : should throw error if both createOrder and createVaultSetuptoken called + test.skip("Can't have both createOrdre and createVaultSetupToken", () => { + // @ts-expect-error : should throw error if both createOrder and createVaultSetupToken called const callback: PayPalCardFieldsComponentOptions = { createOrder: vi.fn(), createVaultSetupToken: vi.fn(), @@ -36,7 +36,7 @@ describe("testing", () => { expect(callback).toThrowError(); }); - test.skip("Can't have both", () => { + test.skip("Can't implement neither", () => { // @ts-expect-error: should throw error if neither createOrder or createVaultSetuptoken called const callback: PayPalCardFieldsComponentOptions = { onApprove: vi.fn(), From 393e35f0d2c8ad694f9d6c0819fbf3398cecead7 Mon Sep 17 00:00:00 2001 From: Hai-Yen Nguyen Date: Wed, 22 Jan 2025 14:09:32 -0600 Subject: [PATCH 4/4] remove old changeset --- .changeset/silly-bears-boil.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/silly-bears-boil.md diff --git a/.changeset/silly-bears-boil.md b/.changeset/silly-bears-boil.md deleted file mode 100644 index 6da00c84..00000000 --- a/.changeset/silly-bears-boil.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@paypal/paypal-js": major ---- - -create new type for createOrder, createVaultToken and add onCancel to card-field