Skip to content

Commit

Permalink
Pull from main
Browse files Browse the repository at this point in the history
  • Loading branch information
9zees committed Jan 28, 2025
2 parents f159649 + fe804a4 commit eb3447a
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 11 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions packages/paypal-js/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 8.2.0

### Minor Changes

- 6f339f6: Adding test for card-fields.test.ts

## 8.1.3

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/paypal-js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@paypal/paypal-js",
"version": "8.1.3",
"version": "8.2.0",
"description": "Loading wrapper and TypeScript types for the PayPal JS SDK",
"main": "index.js",
"module": "dist/esm/paypal-js.js",
Expand Down
36 changes: 27 additions & 9 deletions packages/paypal-js/types/components/card-fields.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,21 +132,39 @@ export interface PayPalCardFieldsIndividualField {
close: () => Promise<void>;
}

export interface PayPalCardFieldsComponentOptions {
createOrder?: () => Promise<string>;
export interface PayPalCardFieldsComponentBasics {
onApprove: (data: CardFieldsOnApproveData) => void;
onError: (err: Record<string, unknown>) => void;
createVaultSetupToken?: () => Promise<string>;
onCancel?: () => Promise<void> | void;
inputEvents?: PayPalCardFieldsInputEvents;
style?: Record<string, PayPalCardFieldsStyleOptions>;
/**
* createSubscription is newly added for Fullstack Subscription.
* Because of this, we have marked createOrder as optional.
* @alpha
*/
createSubscription?: () => Promise<string>;
}

export interface PayPalCardFieldsComponentCreateOrder
extends PayPalCardFieldsComponentBasics {
createOrder: () => Promise<string>;
createVaultSetupToken?: never;
createSubscription?: never;
}

export interface PayPalCardFieldsComponentCreateVaultSetupToken
extends PayPalCardFieldsComponentBasics {
createOrder?: never;
createVaultSetupToken: () => Promise<string>;
createSubscription?: never;
}
export interface PayPalCardFieldsComponentCreateSubscription
extends PayPalCardFieldsComponentBasics {
createOrder?: never;
createVaultSetupToken?: never;
createSubscription: () => Promise<string>;
}

export type PayPalCardFieldsComponentOptions =
| PayPalCardFieldsComponentCreateOrder
| PayPalCardFieldsComponentCreateVaultSetupToken
| PayPalCardFieldsComponentCreateSubscription;

export interface PayPalCardFieldsComponent {
getState: () => Promise<PayPalCardFieldsStateObject>;
isEligible: () => boolean;
Expand Down
48 changes: 48 additions & 0 deletions packages/paypal-js/types/tests/card-fields.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { test, vi, describe, expect } from "vitest";

import { PayPalCardFieldsComponentOptions } from "../components/card-fields";

describe.only("testing createOrder and createVaultToken types", () => {
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 createOrdre and createVaultSetupToken", () => {
// @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 implement neither", () => {
// @ts-expect-error: should throw error if neither createOrder or createVaultSetuptoken called
const callback: PayPalCardFieldsComponentOptions = {
onApprove: vi.fn(),
onError: vi.fn(),
};

expect(callback).toThrowError();
});
});

0 comments on commit eb3447a

Please sign in to comment.