← Public packages
@kentcdodds/paypal
PayPal helpers for invoices, sending invoices, transactions, and reimbursements.
src/smoke-test.ts
55 lines · 1.6 KB · TypeScriptimport { findInvoice, listInvoices } from './invoices.ts'
import { searchTransactions } from './transactions.ts'
export type PayPalSmokeTestInput = {
invoiceNumber?: string
invoiceId?: string
recipientEmail?: string
amount?: string | number
startDate?: string | Date
endDate?: string | Date
}
/**
* Run a safe read-only smoke test against PayPal invoices and optionally transaction reporting.
*/
export async function smokeTest(input: PayPalSmokeTestInput = {}) {
const invoices = await listInvoices({ pageSize: 3 })
const invoiceLookup = input.invoiceId || input.invoiceNumber || input.recipientEmail || input.amount
? await findInvoice({
id: input.invoiceId,
invoiceNumber: input.invoiceNumber,
recipientEmail: input.recipientEmail,
amount: input.amount,
})
: null
const transactionLookup = input.startDate || input.endDate || input.amount || input.recipientEmail
? await searchTransactions({
startDate: input.startDate,
endDate: input.endDate,
email: input.recipientEmail,
amount: input.amount,
direction: input.amount == null ? undefined : 'incoming',
})
: null
return {
ok: true,
invoiceList: {
total_items: invoices.total_items,
total_pages: invoices.total_pages,
sampleCount: invoices.items.length,
sample: invoices.items,
},
invoiceLookup,
transactionLookup: transactionLookup
? {
scanned: transactionLookup.scanned,
matchCount: transactionLookup.matches.length,
matches: transactionLookup.matches,
}
: null,
}
}
export default smokeTest