diff --git a/package.json b/package.json index 824140e..f6882ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fintoc", - "version": "1.14.0", + "version": "1.15.0", "description": "The official Node client for the Fintoc API.", "main": "build/main/index.js", "typings": "build/main/index.d.ts", diff --git a/src/lib/core.ts b/src/lib/core.ts index f2032d6..ea4f6cc 100644 --- a/src/lib/core.ts +++ b/src/lib/core.ts @@ -21,11 +21,14 @@ import { AccountVerificationsManager, CustomersManager, EntitiesManager, + PaymentMethodsManager, SimulateManager, TransfersManager, AccountsManager as V2AccountsManager, CheckoutSessionsManager as V2CheckoutSessionsManager, + InvoicesManager as V2InvoicesManager, PaymentIntentsManager as V2PaymentIntentsManager, + SubscriptionsManager as V2SubscriptionsManager, } from './managers/v2'; import { version } from './version'; @@ -35,10 +38,13 @@ class FintocV2 { accountNumbers: AccountNumbersManager; simulate: SimulateManager; entities: EntitiesManager; + invoices: V2InvoicesManager; accountVerifications: AccountVerificationsManager; customers: CustomersManager; checkoutSessions: V2CheckoutSessionsManager; paymentIntents: V2PaymentIntentsManager; + paymentMethods: PaymentMethodsManager; + subscriptions: V2SubscriptionsManager; constructor(client: Client) { this.accounts = new V2AccountsManager('/v2/accounts', client); @@ -46,10 +52,13 @@ class FintocV2 { this.accountNumbers = new AccountNumbersManager('/v2/account_numbers', client); this.simulate = new SimulateManager('/v2/simulate', client); this.entities = new EntitiesManager('/v2/entities', client); + this.invoices = new V2InvoicesManager('/v2/invoices', client); this.accountVerifications = new AccountVerificationsManager('/v2/account_verifications', client); this.customers = new CustomersManager('/v2/customers', client); this.checkoutSessions = new V2CheckoutSessionsManager('/v2/checkout_sessions', client); this.paymentIntents = new V2PaymentIntentsManager('/v2/payment_intents', client); + this.paymentMethods = new PaymentMethodsManager('/v2/payment_methods', client); + this.subscriptions = new V2SubscriptionsManager('/v2/subscriptions', client); } } diff --git a/src/lib/managers/v2/index.ts b/src/lib/managers/v2/index.ts index e73bb74..13b568b 100644 --- a/src/lib/managers/v2/index.ts +++ b/src/lib/managers/v2/index.ts @@ -4,7 +4,10 @@ export * from './accountNumbersManager'; export * from './simulateManager'; export * from './entitiesManager'; export * from './accountVerificationsManager'; +export * from './invoicesManager'; export * from './movementsManager'; export * from './customersManager'; export * from './checkoutSessionsManager'; export * from './paymentIntentsManager'; +export * from './paymentMethodsManager'; +export * from './subscriptionsManager'; diff --git a/src/lib/managers/v2/invoicesManager.ts b/src/lib/managers/v2/invoicesManager.ts new file mode 100644 index 0000000..cf98225 --- /dev/null +++ b/src/lib/managers/v2/invoicesManager.ts @@ -0,0 +1,7 @@ +import { ManagerMixin } from '../../mixins'; +import { Invoice } from '../../resources/v2/invoice'; + +export class InvoicesManager extends ManagerMixin { + static resource = 'invoice'; + static methods = ['list', 'get']; +} diff --git a/src/lib/managers/v2/paymentMethodsManager.ts b/src/lib/managers/v2/paymentMethodsManager.ts new file mode 100644 index 0000000..dee84d9 --- /dev/null +++ b/src/lib/managers/v2/paymentMethodsManager.ts @@ -0,0 +1,7 @@ +import { ManagerMixin } from '../../mixins'; +import { PaymentMethod } from '../../resources/v2/paymentMethod'; + +export class PaymentMethodsManager extends ManagerMixin { + static resource = 'payment_method'; + static methods = ['list', 'get']; +} diff --git a/src/lib/managers/v2/subscriptionsManager.ts b/src/lib/managers/v2/subscriptionsManager.ts new file mode 100644 index 0000000..438f108 --- /dev/null +++ b/src/lib/managers/v2/subscriptionsManager.ts @@ -0,0 +1,14 @@ +import { ResourceArguments } from '../../../types'; +import { ManagerMixin } from '../../mixins'; +import { Subscription } from '../../resources/v2/subscription'; + +export class SubscriptionsManager extends ManagerMixin { + static resource = 'subscription'; + static methods = ['list', 'get', 'cancel']; + + cancel(subscriptionId: string, args?: ResourceArguments): Promise { + const innerArgs = args || {}; + const path = `${this.buildPath()}/${subscriptionId}/cancel`; + return this._create({ path_: path, ...innerArgs }); + } +} diff --git a/src/lib/resources/v2/index.ts b/src/lib/resources/v2/index.ts index 1547f3d..53fe445 100644 --- a/src/lib/resources/v2/index.ts +++ b/src/lib/resources/v2/index.ts @@ -4,6 +4,9 @@ export * from './accountNumber'; export * from './entity'; export * from './accountVerification'; export * from './checkoutSession'; +export * from './invoice'; export * from './movement'; export * from './customer'; export * from './paymentIntent'; +export * from './paymentMethod'; +export * from './subscription'; diff --git a/src/lib/resources/v2/invoice.ts b/src/lib/resources/v2/invoice.ts new file mode 100644 index 0000000..c260dc6 --- /dev/null +++ b/src/lib/resources/v2/invoice.ts @@ -0,0 +1,4 @@ +import { ResourceMixin } from '../../mixins/resourceMixin'; + +export class Invoice extends ResourceMixin { +} diff --git a/src/lib/resources/v2/paymentMethod.ts b/src/lib/resources/v2/paymentMethod.ts new file mode 100644 index 0000000..5637766 --- /dev/null +++ b/src/lib/resources/v2/paymentMethod.ts @@ -0,0 +1,4 @@ +import { ResourceMixin } from '../../mixins/resourceMixin'; + +export class PaymentMethod extends ResourceMixin { +} diff --git a/src/lib/resources/v2/subscription.ts b/src/lib/resources/v2/subscription.ts new file mode 100644 index 0000000..fec563a --- /dev/null +++ b/src/lib/resources/v2/subscription.ts @@ -0,0 +1,4 @@ +import { ResourceMixin } from '../../mixins/resourceMixin'; + +export class Subscription extends ResourceMixin { +} diff --git a/src/lib/version.ts b/src/lib/version.ts index 73a5709..afe33e9 100644 --- a/src/lib/version.ts +++ b/src/lib/version.ts @@ -1,3 +1,3 @@ -export const versionInfo = [1, 14, 0]; +export const versionInfo = [1, 15, 0]; export const version = versionInfo.join('.'); diff --git a/src/spec/integration.spec.ts b/src/spec/integration.spec.ts index 4f5f1c7..22fc4bb 100644 --- a/src/spec/integration.spec.ts +++ b/src/spec/integration.spec.ts @@ -1159,6 +1159,29 @@ test('fintoc.v2.checkoutSessions.expire()', async (t) => { t.is(checkoutSession.url, `v2/checkout_sessions/${checkoutSessionId}/expire`); }); +test('fintoc.v2.invoices.list()', async (t) => { + const ctx: any = t.context; + const invoices = await ctx.fintoc.v2.invoices.list(); + + let count = 0; + for await (const invoice of invoices) { + count += 1; + t.is(invoice.method, 'get'); + t.is(invoice.url, 'v2/invoices'); + } + + t.true(count > 0); +}); + +test('fintoc.v2.invoices.get()', async (t) => { + const ctx: any = t.context; + const invoiceId = 'invoice_id'; + const invoice = await ctx.fintoc.v2.invoices.get(invoiceId); + + t.is(invoice.method, 'get'); + t.is(invoice.url, `v2/invoices/${invoiceId}`); +}); + test('fintoc.v2.paymentIntents.list()', async (t) => { const ctx: any = t.context; const paymentIntents = await ctx.fintoc.v2.paymentIntents.list(); @@ -1197,3 +1220,58 @@ test('fintoc.v2.paymentIntents.create()', async (t) => { t.is(paymentIntent.json.currency, paymentIntentData.currency); t.is(paymentIntent.json.payment_method, paymentIntentData.payment_method); }); + +test('fintoc.v2.paymentMethods.list()', async (t) => { + const ctx: any = t.context; + const paymentMethods = await ctx.fintoc.v2.paymentMethods.list(); + + let count = 0; + for await (const paymentMethod of paymentMethods) { + count += 1; + t.is(paymentMethod.method, 'get'); + t.is(paymentMethod.url, 'v2/payment_methods'); + } + + t.true(count > 0); +}); + +test('fintoc.v2.paymentMethods.get()', async (t) => { + const ctx: any = t.context; + const paymentMethodId = 'payment_method_id'; + const paymentMethod = await ctx.fintoc.v2.paymentMethods.get(paymentMethodId); + + t.is(paymentMethod.method, 'get'); + t.is(paymentMethod.url, `v2/payment_methods/${paymentMethodId}`); +}); + +test('fintoc.v2.subscriptions.list()', async (t) => { + const ctx: any = t.context; + const subscriptions = await ctx.fintoc.v2.subscriptions.list(); + + let count = 0; + for await (const subscription of subscriptions) { + count += 1; + t.is(subscription.method, 'get'); + t.is(subscription.url, 'v2/subscriptions'); + } + + t.true(count > 0); +}); + +test('fintoc.v2.subscriptions.get()', async (t) => { + const ctx: any = t.context; + const subscriptionId = 'subscription_id'; + const subscription = await ctx.fintoc.v2.subscriptions.get(subscriptionId); + + t.is(subscription.method, 'get'); + t.is(subscription.url, `v2/subscriptions/${subscriptionId}`); +}); + +test('fintoc.v2.subscriptions.cancel()', async (t) => { + const ctx: any = t.context; + const subscriptionId = 'subscription_id'; + const subscription = await ctx.fintoc.v2.subscriptions.cancel(subscriptionId); + + t.is(subscription.method, 'post'); + t.is(subscription.url, `v2/subscriptions/${subscriptionId}/cancel`); +});