From 6db13bf43c69a02803b280bec080f19ee98c7085 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 18 Jan 2022 14:08:32 -0300 Subject: [PATCH 01/14] Support iDeal with BankRedirect Payments --- lib/recurly.js | 2 + lib/recurly/bank-redirect.js | 149 +++++++++++++ lib/recurly/errors.js | 12 + test/server/fixtures/bank_redirect/banks.js | 28 +++ test/server/index.js | 1 + test/unit/bank-redirect.test.js | 229 ++++++++++++++++++++ test/unit/support/fixtures.js | 20 +- types/index.d.ts | 1 + types/lib/bank-redirect.d.ts | 38 ++++ types/lib/recurly.d.ts | 8 + 10 files changed, 483 insertions(+), 5 deletions(-) create mode 100644 lib/recurly/bank-redirect.js create mode 100644 test/server/fixtures/bank_redirect/banks.js create mode 100644 test/unit/bank-redirect.test.js create mode 100644 types/lib/bank-redirect.d.ts diff --git a/lib/recurly.js b/lib/recurly.js index 3a107a676..784f3af37 100644 --- a/lib/recurly.js +++ b/lib/recurly.js @@ -17,6 +17,7 @@ import version from './recurly/version'; import { tokenDispatcher as token } from './recurly/token'; import { factory as Adyen } from './recurly/adyen'; import { factory as ApplePay } from './recurly/apple-pay'; +import { factory as BankRedirect } from './recurly/bank-redirect'; import { factory as Elements } from './recurly/elements'; import { factory as Frame } from './recurly/frame'; import { factory as PayPal } from './recurly/paypal'; @@ -106,6 +107,7 @@ const DEFAULTS = { export class Recurly extends Emitter { Adyen = Adyen; ApplePay = ApplePay; + BankRedirect = BankRedirect; coupon = coupon; Elements = Elements; Frame = Frame; diff --git a/lib/recurly/bank-redirect.js b/lib/recurly/bank-redirect.js new file mode 100644 index 000000000..9b60127a7 --- /dev/null +++ b/lib/recurly/bank-redirect.js @@ -0,0 +1,149 @@ +import Emitter from 'component-emitter'; +import errors from './errors'; + +const debug = require('debug')('recurly:bank-redirect'); + +/** + * Instantiation factory. + * + * @param {Object} options + * @return {BankRedirect} + */ +export function factory (options) { + return new BankRedirect(Object.assign({}, options, { recurly: this })); +} + +/** + * Initializes an BankRedirect session. + * + * @param {Object} options + * @param {Recurly} options.recurly + * @constructor + * @public + */ +class BankRedirect extends Emitter { + constructor (options) { + debug('Creating new BankRedirect session'); + + super(); + this.recurly = options.recurly; + } + + /** + * Fetch the banks. + * @param {Object} data + * @param {string} attachTo + */ + loadBanks (data, attachTo) { + debug('Load banks'); + + const errors = validateBankPayload(data); + if (errors.length > 0) { + return this.error('validation', { fields: errors }); + } + + this.recurly.request.get({ + route: '/bank_redirect/banks', + data, + done: (error, response) => { + if (error) { + return this.error('banks-error', { cause: error }); + } + + if (attachTo) { + attachBanksToSelect(attachTo, response.banks); + } + this.emit('banks', response.banks); + } + }); + } + + /** + * Start the BankRedirect Payment Modal. + * @param {Object} data + */ + start (data) { + debug('Start BankRedirect Payment Modal'); + + const errors = validatePayload(data); + if (errors.length > 0) { + return this.error('validation', { fields: errors }); + } + + const frame = this.recurly.Frame({ + height: 600, + path: '/bank_redirect/start', + payload: data + }); + frame.once('error', cause => this.error('bank-redirect-error', { cause })); + frame.once('done', token => this.emit('token', token)); + return frame; + } + + error (...params) { + const err = params[0] instanceof Error ? params[0] : errors(...params); + this.emit('error', err); + + return err; + } +} + +function validatePayload (data) { + const errors = validatePaymentMethodType(data); + + if (data && data.payment_method_type === 'ideal') { + errors.push(...validateIdealPayload(data)); + } + + return errors; +} + +function validateBankPayload (data) { + return validatePaymentMethodType(data); +} + +function validatePaymentMethodType (data) { + if (!data || !data.payment_method_type) { + return ['payment_method_type can\'t be blank']; + } + + if (data.payment_method_type !== 'ideal') { + return ['invalid payment_method_type']; + } + + return []; +} + +function validateIdealPayload (data) { + if (!data || !data.issuer_id) { + return ['issuer_id can\'t be blank']; + } + + return []; +} + +function attachBanksToSelect (selector, banks) { + let $select = document.querySelector(selector); + if (!$select) { + return; + } + + if ($select.tagName != 'SELECT') { + const $container = $select; + $select = document.createElement('select'); + $select.id = 'issuer_id'; + $select.setAttribute('name', 'issuer_id'); + $container.appendChild($select); + } + + while ($select.options.length > 0) { + $select.remove(0); + } + + for (const { id, name } of banks) { + const $option = document.createElement('option'); + $option.appendChild(document.createTextNode(name)); + $option.setAttribute('value', id); + $select.appendChild($option); + } +} diff --git a/lib/recurly/errors.js b/lib/recurly/errors.js index d53a850e6..db4f682f1 100644 --- a/lib/recurly/errors.js +++ b/lib/recurly/errors.js @@ -237,6 +237,18 @@ const ERRORS = [ cause property for more detail.`, classification: 'internal' }, + { + code: 'bank-redirect-error', + message: `An error occurred within your BankRedirect payment process. Please refer to the + cause property for more detail.`, + classification: 'internal' + }, + { + code: 'banks-error', + message: `An error occurred while loading the available banks. Please refer to the + cause property for more detail.`, + classification: 'api' + }, { code: '3ds-vendor-load-error', message: c => `An error occurred while loading a dependency from ${c.vendor}. Please refer diff --git a/test/server/fixtures/bank_redirect/banks.js b/test/server/fixtures/bank_redirect/banks.js new file mode 100644 index 000000000..5286a15ed --- /dev/null +++ b/test/server/fixtures/bank_redirect/banks.js @@ -0,0 +1,28 @@ +module.exports = function banks () { + const payload = this.query; + + if (payload.payment_method_type === 'ideal') { + if (payload.error) { + return { + error: { + code: 'api-error', + message: 'Api error' + } + }; + } + + return { + banks: [ + { id: 'bank1', name: 'Bank 1' }, + { id: 'bank2', name: 'Bank 2' }, + ] + }; + } + + return { + error: { + code: 'invalid-payment-method-type', + message: 'Invalid payment method type' + } + }; +}; diff --git a/test/server/index.js b/test/server/index.js index 6b998ffbd..ca89b9d7f 100644 --- a/test/server/index.js +++ b/test/server/index.js @@ -56,6 +56,7 @@ app.use(route.get('/apple_pay/token', json)); app.use(route.post('/apple_pay/start', json)); app.use(route.post('/apple_pay/token', json)); app.use(route.get('/bank', json)); +app.use(route.get('/bank_redirect/banks', json)); app.use(route.get('/coupons/:id', json)); app.use(route.get('/events', ok)); app.use(route.post('/events', ok)); diff --git a/test/unit/bank-redirect.test.js b/test/unit/bank-redirect.test.js new file mode 100644 index 000000000..ec73cf65f --- /dev/null +++ b/test/unit/bank-redirect.test.js @@ -0,0 +1,229 @@ +/* eslint-disable no-undef */ +import assert from 'assert'; +import { fixture, clearFixture } from './support/fixtures'; +import { initRecurly, testBed } from './support/helpers'; + +describe('Recurly.BankRedirect', function () { + beforeEach(function () { + this.recurly = initRecurly({ }); + this.bankRedirect = this.recurly.BankRedirect(); + }); + + describe('iDeal', function () { + describe('loadBanks', function () { + beforeEach(function () { + this.banksPayload = { + payment_method_type: 'ideal', + }; + }); + + afterEach(function () { + clearFixture(); + }); + + it('raises an error for a missing type', function (done) { + this.banksPayload.payment_method_type = undefined; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'payment_method_type can\'t be blank'); + done(); + }); + this.bankRedirect.on('banks', assert.fail); + + this.bankRedirect.loadBanks(this.banksPayload); + }); + + it('raises an error for an invalid type', function (done) { + this.banksPayload.payment_method_type = 'wrong'; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'invalid payment_method_type'); + done(); + }); + this.bankRedirect.on('banks', assert.fail); + + this.bankRedirect.loadBanks(this.banksPayload); + }); + + it('raises an error for a failed api request', function (done) { + this.banksPayload.error = true; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'banks-error'); + done(); + }); + this.bankRedirect.on('banks', assert.fail); + + this.bankRedirect.loadBanks(this.banksPayload); + }); + + it('emit the banks without error for a successfully api request', function (done) { + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('banks', banks => { + assert.ok(banks); + done(); + }); + + this.bankRedirect.loadBanks(this.banksPayload); + }); + + it('attach the banks to a select element', function (done) { + fixture('selectBanks'); + const $select = testBed().querySelector('#issuer_id'); + + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('banks', () => { + assert.ok(new RegExp([ + '' + ].join('')).test($select.outerHTML)); + done(); + }); + + this.bankRedirect.loadBanks(this.banksPayload, '#issuer_id'); + }); + + it('attach the banks to a select element after cleanup the select', function (done) { + fixture('selectBanksFull', [{ id: 'bank99', name: 'Bank 99' }]); + const $select = testBed().querySelector('#issuer_id'); + + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('banks', () => { + assert.ok(new RegExp([ + '' + ].join('')).test($select.outerHTML)); + done(); + }); + + this.bankRedirect.loadBanks(this.banksPayload, '#issuer_id'); + }); + + it('attach the banks to a select element into a container', function (done) { + fixture('emptyForm'); + const $form = testBed().querySelector('#test-form'); + + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('banks', () => { + assert.ok(new RegExp([ + '
', + '', + '
' + ].join('')).test($form.outerHTML)); + done(); + }); + + this.bankRedirect.loadBanks(this.banksPayload, '#test-form'); + }); + }); + + describe('start', function () { + beforeEach(function () { + this.startPayload = { + payment_method_type: 'ideal', + issuer_id: 'issuer123' + }; + + this.sandbox = sinon.createSandbox(); + this.sandbox.spy(this.recurly, 'Frame'); + }); + + afterEach(function () { + this.sandbox.restore(); + }); + + it('raises an error for a missing type', function (done) { + this.startPayload.payment_method_type = undefined; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'payment_method_type can\'t be blank'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + + this.bankRedirect.start(this.startPayload); + }); + + it('raises an error for an invalid type', function (done) { + this.startPayload.payment_method_type = 'wrong'; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'invalid payment_method_type'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + + this.bankRedirect.start(this.startPayload); + }); + + it('raises an error for a missing issuer_id', function (done) { + this.startPayload.issuer_id = ''; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'issuer_id can\'t be blank'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + + this.bankRedirect.start(this.startPayload); + }); + + it('create the iframe to make the payment', function () { + // debugger + this.bankRedirect.start(this.startPayload); + + assert(this.recurly.Frame.calledOnce); + assert(this.recurly.Frame.calledWithMatch({ + height: 600, + path: '/bank_redirect/start', + payload: { + payment_method_type: 'ideal', + issuer_id: 'issuer123' + } + })); + }); + + it('emit an error if the iframe emits errors', function (done) { + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'bank-redirect-error'); + assert.equal(error.cause, 'my-error'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + + const frame = this.bankRedirect.start(this.startPayload); + frame.emit('error', 'my-error'); + }); + + it('emit a token if the iframe is done successfully', function (done) { + this.bankRedirect.on('error', assert.fail); + this.bankRedirect.on('token', token => { + assert(token, 'my-token'); + done(); + }); + + const frame = this.bankRedirect.start(this.startPayload); + frame.emit('done', 'my-token'); + }); + }); + }); +}); diff --git a/test/unit/support/fixtures.js b/test/unit/support/fixtures.js index 4f2efd308..5e468c84a 100644 --- a/test/unit/support/fixtures.js +++ b/test/unit/support/fixtures.js @@ -186,6 +186,10 @@ const threeDSecure = () => `
`; const emptyForm = () => `
`; +const selectBanks = () => ''; + +const selectBanksFull = banks => ``; + const empty = ''; const FIXTURES = { @@ -199,7 +203,9 @@ const FIXTURES = { iframe, threeDSecure, empty, - emptyForm + emptyForm, + selectBanks, + selectBanksFull, }; export function applyFixtures () { @@ -210,10 +216,7 @@ export function applyFixtures () { afterEach(function () { if (!this.currentTest.ctx.fixture) return; - const bed = testBed(); - while (bed.lastChild) { - bed.removeChild(bed.lastChild); - } + clearFixture(); }); } @@ -222,6 +225,13 @@ export function fixture (name, opts = {}) { testBed().innerHTML = tpl(opts); } +export function clearFixture () { + const bed = testBed(); + while (bed.lastChild) { + bed.removeChild(bed.lastChild); + } +} + /** * fetches a value on an object or returns an alternative * @param {Object} object diff --git a/types/index.d.ts b/types/index.d.ts index 6b4f6eb93..e22ac2529 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -15,6 +15,7 @@ export * from './lib/pricing/index'; export * from './lib/3d-secure'; export * from './lib/address'; export * from './lib/adyen'; +export * from './lib/bank-redirect'; export * from './lib/apple-pay'; export * from './lib/bank-account'; export * from './lib/configure'; diff --git a/types/lib/bank-redirect.d.ts b/types/lib/bank-redirect.d.ts new file mode 100644 index 000000000..2e830e409 --- /dev/null +++ b/types/lib/bank-redirect.d.ts @@ -0,0 +1,38 @@ +import { Emitter } from './emitter'; + +export type BankRedirectEvent = 'token' | 'banks' | 'error'; + +export type PaymentMethodType = 'ideal'; + +export type BankRedirectOptions = { + /** + * Token Payment method type. + */ + payment_method_type: PaymentMethodType; + + /** + * Issuer Id for iDeal Payment methods. + */ + issuer_id?: string; +}; + +export type LoadBankOptions = { + /** + * Token Payment method type. + */ + payment_method_type: PaymentMethodType; +}; + +export interface BankRedirectInstance extends Emitter { + /** + * Start the BankRedirect Payment Modal. + */ + start: (data: BankRedirectOptions) => void; + + /** + * Load the banks. + */ + loadBanks: (data: LoadBankOptions, attachTo?: string) => void; +} + +export type BankRedirect = () => BankRedirectInstance; diff --git a/types/lib/recurly.d.ts b/types/lib/recurly.d.ts index da565eeb2..12aca1254 100644 --- a/types/lib/recurly.d.ts +++ b/types/lib/recurly.d.ts @@ -1,5 +1,6 @@ import { Risk } from './3d-secure'; import { Adyen } from './adyen'; +import { BankRedirect } from './bank-redirect'; import { ApplePay } from './apple-pay'; import { BankAccount } from './bank-account'; import { Configure } from './configure'; @@ -16,6 +17,13 @@ export type RecurlyEvent = 'change' | 'field:submit' | 'error'; export interface Recurly extends Emitter { Adyen: Adyen; + /** + * Use Recurly.js to process Adyen Redirect Payments. + * + * @see {@link https://developers.recurly.com/reference/recurly-js/index.html#adyen-token|BankRedirect} + */ + BankRedirect: BankRedirect; + /** * Use Recurly.js to process Apple Pay transactions. * From 7ad149d0558f9ad4bd0f297ce1de6dafdf7d53a8 Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 24 Jan 2022 12:57:53 -0300 Subject: [PATCH 02/14] require invoice_uuid --- lib/recurly/bank-redirect.js | 12 +++++++++--- test/unit/bank-redirect.test.js | 22 ++++++++++++++++++---- types/lib/bank-redirect.d.ts | 5 +++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/lib/recurly/bank-redirect.js b/lib/recurly/bank-redirect.js index 9b60127a7..f06e59d36 100644 --- a/lib/recurly/bank-redirect.js +++ b/lib/recurly/bank-redirect.js @@ -104,7 +104,7 @@ function validateBankPayload (data) { function validatePaymentMethodType (data) { if (!data || !data.payment_method_type) { - return ['payment_method_type can\'t be blank']; + return ['payment_method_type cannot be blank']; } if (data.payment_method_type !== 'ideal') { @@ -115,11 +115,17 @@ function validatePaymentMethodType (data) { } function validateIdealPayload (data) { + const errors = []; + if (!data || !data.issuer_id) { - return ['issuer_id can\'t be blank']; + errors.push('issuer_id cannot be blank'); } - return []; + if (!data || !data.invoice_uuid) { + errors.push('invoice_uuid cannot be blank'); + } + + return errors; } function attachBanksToSelect (selector, banks) { diff --git a/test/unit/bank-redirect.test.js b/test/unit/bank-redirect.test.js index ec73cf65f..abef6cccb 100644 --- a/test/unit/bank-redirect.test.js +++ b/test/unit/bank-redirect.test.js @@ -27,7 +27,7 @@ describe('Recurly.BankRedirect', function () { this.bankRedirect.on('error', (error) => { assert.ok(error); assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'payment_method_type can\'t be blank'); + assert.equal(error.fields[0], 'payment_method_type cannot be blank'); done(); }); this.bankRedirect.on('banks', assert.fail); @@ -133,7 +133,8 @@ describe('Recurly.BankRedirect', function () { beforeEach(function () { this.startPayload = { payment_method_type: 'ideal', - issuer_id: 'issuer123' + issuer_id: 'issuer123', + invoice_uuid: 'invoice123' }; this.sandbox = sinon.createSandbox(); @@ -150,7 +151,7 @@ describe('Recurly.BankRedirect', function () { this.bankRedirect.on('error', (error) => { assert.ok(error); assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'payment_method_type can\'t be blank'); + assert.equal(error.fields[0], 'payment_method_type cannot be blank'); done(); }); this.bankRedirect.on('token', assert.fail); @@ -178,7 +179,7 @@ describe('Recurly.BankRedirect', function () { this.bankRedirect.on('error', (error) => { assert.ok(error); assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'issuer_id can\'t be blank'); + assert.equal(error.fields[0], 'issuer_id cannot be blank'); done(); }); this.bankRedirect.on('token', assert.fail); @@ -186,6 +187,19 @@ describe('Recurly.BankRedirect', function () { this.bankRedirect.start(this.startPayload); }); + it('raises an error for a missing invoice_uuid', function (done) { + this.startPayload.invoice_uuid = ''; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'invoice_uuid cannot be blank'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + this.bankRedirect.start(this.startPayload); + }); + it('create the iframe to make the payment', function () { // debugger this.bankRedirect.start(this.startPayload); diff --git a/types/lib/bank-redirect.d.ts b/types/lib/bank-redirect.d.ts index 2e830e409..8120a00a3 100644 --- a/types/lib/bank-redirect.d.ts +++ b/types/lib/bank-redirect.d.ts @@ -14,6 +14,11 @@ export type BankRedirectOptions = { * Issuer Id for iDeal Payment methods. */ issuer_id?: string; + + /** + * Invoice Uuid from PendingPurchase + */ + invoice_uuid: string; }; export type LoadBankOptions = { From 3eee86bb9c803ca64d2593b76f4edf78eb2cd0bf Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 31 Jan 2022 19:00:20 -0300 Subject: [PATCH 03/14] Minor change --- test/server/fixtures/bank_redirect/banks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/server/fixtures/bank_redirect/banks.js b/test/server/fixtures/bank_redirect/banks.js index 5286a15ed..7539d352c 100644 --- a/test/server/fixtures/bank_redirect/banks.js +++ b/test/server/fixtures/bank_redirect/banks.js @@ -6,7 +6,7 @@ module.exports = function banks () { return { error: { code: 'api-error', - message: 'Api error' + message: 'Api error', } }; } From 8b9fb961bdc38fc2a8a64dc0f2e6185840aa7eec Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 31 Jan 2022 19:52:13 -0300 Subject: [PATCH 04/14] temporally skip bankRedirect tests --- test/unit/bank-redirect.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/bank-redirect.test.js b/test/unit/bank-redirect.test.js index abef6cccb..fb722269d 100644 --- a/test/unit/bank-redirect.test.js +++ b/test/unit/bank-redirect.test.js @@ -3,7 +3,7 @@ import assert from 'assert'; import { fixture, clearFixture } from './support/fixtures'; import { initRecurly, testBed } from './support/helpers'; -describe('Recurly.BankRedirect', function () { +describe.skip('Recurly.BankRedirect', function () { beforeEach(function () { this.recurly = initRecurly({ }); this.bankRedirect = this.recurly.BankRedirect(); From 4e8f591b8c492816b1a4007efe32839839a6f19d Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 1 Feb 2022 08:38:36 -0300 Subject: [PATCH 05/14] fix failing tests --- test/unit/bank-redirect.test.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/unit/bank-redirect.test.js b/test/unit/bank-redirect.test.js index fb722269d..839b8762f 100644 --- a/test/unit/bank-redirect.test.js +++ b/test/unit/bank-redirect.test.js @@ -3,10 +3,15 @@ import assert from 'assert'; import { fixture, clearFixture } from './support/fixtures'; import { initRecurly, testBed } from './support/helpers'; -describe.skip('Recurly.BankRedirect', function () { - beforeEach(function () { +describe('Recurly.BankRedirect', function () { + beforeEach(function (done) { this.recurly = initRecurly({ }); this.bankRedirect = this.recurly.BankRedirect(); + this.recurly.ready(() => done()); + }); + + afterEach(function () { + this.recurly.destroy(); }); describe('iDeal', function () { From 1d7864bf224272f460b5db29b6dd354a9f00513b Mon Sep 17 00:00:00 2001 From: gilv93 Date: Wed, 9 Feb 2022 11:53:35 -0700 Subject: [PATCH 06/14] added preliminary methods needed to support sofort --- lib/recurly/bank-redirect.js | 47 +++++++++++++++++++++++++++++++----- types/lib/bank-redirect.d.ts | 11 ++++++--- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/lib/recurly/bank-redirect.js b/lib/recurly/bank-redirect.js index f06e59d36..7f65c4441 100644 --- a/lib/recurly/bank-redirect.js +++ b/lib/recurly/bank-redirect.js @@ -51,13 +51,30 @@ class BankRedirect extends Emitter { } if (attachTo) { - attachBanksToSelect(attachTo, response.banks); + attachListToSelect(attachTo, response.banks, 'issuer_id'); } this.emit('banks', response.banks); } }); } + loadCountries(attachTo) { + debug('Load countries'); + + const countriesList = [ + { name: "Austria", id: "AT" }, + { name: "Belgium", id: "BE" }, + { name: "Germany", id: "DE" }, + { name: "Italy", id: "IT" }, + { name: "Spain", id: "ES" }, + { name: "The Netherlands", id: "NL" } + ] + if (attachTo) { + attachListToSelect(attachTo, countriesList, 'country_code') + } + this.emit('countries', countriesList); + } + /** * Start the BankRedirect Payment Modal. * @param {Object} data @@ -93,8 +110,12 @@ function validatePayload (data) { if (data && data.payment_method_type === 'ideal') { errors.push(...validateIdealPayload(data)); + } else if (data && data.payment_method_type === 'sofort') { + errors.push(...validateSofortPayload(data)); } + // validate sofort + return errors; } @@ -107,7 +128,7 @@ function validatePaymentMethodType (data) { return ['payment_method_type cannot be blank']; } - if (data.payment_method_type !== 'ideal') { + if (data.payment_method_type !== 'ideal' && data.payment_method_type !== 'sofort') { return ['invalid payment_method_type']; } @@ -128,7 +149,21 @@ function validateIdealPayload (data) { return errors; } -function attachBanksToSelect (selector, banks) { +function validateSofortPayload (data) { + const errors = []; + + if (!data || !data.country_code) { + errors.push('country_code cannot be blank'); + } + + if (!data || !data.invoice_uuid) { + errors.push('invoice_uuid cannot be blank'); + } + + return errors; +} + +function attachListToSelect (selector, list, id) { let $select = document.querySelector(selector); if (!$select) { return; @@ -137,8 +172,8 @@ function attachBanksToSelect (selector, banks) { if ($select.tagName != 'SELECT') { const $container = $select; $select = document.createElement('select'); - $select.id = 'issuer_id'; - $select.setAttribute('name', 'issuer_id'); + $select.id = id; + $select.setAttribute('name', id); $container.appendChild($select); } @@ -146,7 +181,7 @@ function attachBanksToSelect (selector, banks) { $select.remove(0); } - for (const { id, name } of banks) { + for (const { id, name } of list) { const $option = document.createElement('option'); $option.appendChild(document.createTextNode(name)); $option.setAttribute('value', id); diff --git a/types/lib/bank-redirect.d.ts b/types/lib/bank-redirect.d.ts index 8120a00a3..a23339887 100644 --- a/types/lib/bank-redirect.d.ts +++ b/types/lib/bank-redirect.d.ts @@ -1,8 +1,8 @@ import { Emitter } from './emitter'; -export type BankRedirectEvent = 'token' | 'banks' | 'error'; +export type BankRedirectEvent = 'token' | 'banks' | 'error' | 'countries'; -export type PaymentMethodType = 'ideal'; +export type PaymentMethodType = 'ideal' | 'sofort'; export type BankRedirectOptions = { /** @@ -15,10 +15,15 @@ export type BankRedirectOptions = { */ issuer_id?: string; + /** + * Country Code for sofort Payment methods. + */ + country_code?: string; + /** * Invoice Uuid from PendingPurchase */ - invoice_uuid: string; + invoice_uuid: string; }; export type LoadBankOptions = { From ff2c35ae15da0f5eab8b3c36b6e558ab85176af5 Mon Sep 17 00:00:00 2001 From: gilv93 Date: Wed, 9 Feb 2022 14:58:23 -0700 Subject: [PATCH 07/14] remove unneeded comment --- lib/recurly/bank-redirect.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/recurly/bank-redirect.js b/lib/recurly/bank-redirect.js index 7f65c4441..ac6c9f4cf 100644 --- a/lib/recurly/bank-redirect.js +++ b/lib/recurly/bank-redirect.js @@ -114,8 +114,6 @@ function validatePayload (data) { errors.push(...validateSofortPayload(data)); } - // validate sofort - return errors; } From eac9ce6c1f014cf3213e708c95b9e668d7d67af3 Mon Sep 17 00:00:00 2001 From: gilv93 Date: Wed, 9 Feb 2022 15:07:08 -0700 Subject: [PATCH 08/14] allow loadcountries in typescript --- types/lib/bank-redirect.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/lib/bank-redirect.d.ts b/types/lib/bank-redirect.d.ts index a23339887..e3838620a 100644 --- a/types/lib/bank-redirect.d.ts +++ b/types/lib/bank-redirect.d.ts @@ -43,6 +43,8 @@ export interface BankRedirectInstance extends Emitter { * Load the banks. */ loadBanks: (data: LoadBankOptions, attachTo?: string) => void; + + loadCountries: (attachTo?: string) => void; } export type BankRedirect = () => BankRedirectInstance; From 5479dd198ddf8032a32306bb0e1f9132f4fca262 Mon Sep 17 00:00:00 2001 From: gilv93 Date: Wed, 9 Feb 2022 17:06:44 -0700 Subject: [PATCH 09/14] added tests --- test/unit/bank-redirect.test.js | 138 +++++++++++++++++++++++++++++++- test/unit/support/fixtures.js | 8 +- 2 files changed, 140 insertions(+), 6 deletions(-) diff --git a/test/unit/bank-redirect.test.js b/test/unit/bank-redirect.test.js index 839b8762f..42f481b38 100644 --- a/test/unit/bank-redirect.test.js +++ b/test/unit/bank-redirect.test.js @@ -78,7 +78,7 @@ describe('Recurly.BankRedirect', function () { }); it('attach the banks to a select element', function (done) { - fixture('selectBanks'); + fixture('selectLists', 'issuer_id'); const $select = testBed().querySelector('#issuer_id'); this.bankRedirect.on('error', () => assert.fail); @@ -96,7 +96,7 @@ describe('Recurly.BankRedirect', function () { }); it('attach the banks to a select element after cleanup the select', function (done) { - fixture('selectBanksFull', [{ id: 'bank99', name: 'Bank 99' }]); + fixture('selectListsFull', [{ id: 'bank99', name: 'Bank 99' }], 'issuer_id'); const $select = testBed().querySelector('#issuer_id'); this.bankRedirect.on('error', () => assert.fail); @@ -245,4 +245,138 @@ describe('Recurly.BankRedirect', function () { }); }); }); + + describe('sofort', function () { + describe('loadCountries', function () { + it('emits the countries without error for a successful api request', function (done) { + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('countries', countries => { + assert.ok(countries); + done(); + }); + + this.bankRedirect.loadCountries(); + }); + + it('attach the countries to a select element', function (done) { + fixture('selectLists', 'country_code'); + const $select = testBed().querySelector('#country_code'); + + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('countries', () => { + assert.ok(new RegExp([ + '' + ].join('')).test($select.outerHTML)); + done(); + }); + + this.bankRedirect.loadCountries('#country_code'); + }) + + it('attach the countries to a select element after cleanup the select', function (done) { + const list = [ + { name: "Austria", id: "AT" }, + { name: "Belgium", id: "BE" }, + { name: "Germany", id: "DE" }, + { name: "Italy", id: "IT" }, + { name: "Spain", id: "ES" }, + { name: "The Netherlands", id: "NL" } + ] + fixture('selectListsFull', list, 'country_code'); + const $select = testBed().querySelector('#country_code'); + + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('countries', () => { + assert.ok(new RegExp([ + '' + ].join('')).test($select.outerHTML)); + done(); + }); + + this.bankRedirect.loadCountries('#country_code'); + }) + + it('attach the countries to a select element into a container', function (done) { + fixture('emptyForm'); + const $form = testBed().querySelector('#test-form'); + + this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('countries', () => { + assert.ok(new RegExp([ + '
', + '', + '
' + ].join('')).test($form.outerHTML)); + done(); + }); + this.bankRedirect.loadCountries('#test-form'); + }) + }) + + describe('start', function() { + beforeEach(function () { + this.startPayload = { + payment_method_type: 'sofort', + country_code: 'NA', + invoice_uuid: 'invoice123' + }; + + this.sandbox = sinon.createSandbox(); + this.sandbox.spy(this.recurly, 'Frame'); + }); + + afterEach(function () { + this.sandbox.restore(); + }); + + it('raises an error when country_code is missing', function (done) { + this.startPayload.country_code = ''; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'country_code cannot be blank'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + + this.bankRedirect.start(this.startPayload); + }) + + it('creates the iframe to make the payment', function () { + this.bankRedirect.start(this.startPayload); + + assert(this.recurly.Frame.calledOnce); + assert(this.recurly.Frame.calledWithMatch({ + height: 600, + path: '/bank_redirect/start', + payload: { + payment_method_type: 'sofort', + country_code: 'NA' + } + })); + }) + }) + }) }); diff --git a/test/unit/support/fixtures.js b/test/unit/support/fixtures.js index 5e468c84a..40cba251f 100644 --- a/test/unit/support/fixtures.js +++ b/test/unit/support/fixtures.js @@ -186,9 +186,9 @@ const threeDSecure = () => `
`; const emptyForm = () => `
`; -const selectBanks = () => ''; +const selectLists = (name) => ``; -const selectBanksFull = banks => ``; +const selectListsFull = (list, name) => ``; const empty = ''; @@ -204,8 +204,8 @@ const FIXTURES = { threeDSecure, empty, emptyForm, - selectBanks, - selectBanksFull, + selectLists, + selectListsFull, }; export function applyFixtures () { From c7426004775a4b734fbd72593672ee8991b9303c Mon Sep 17 00:00:00 2001 From: gilv93 Date: Thu, 10 Feb 2022 11:15:57 -0700 Subject: [PATCH 10/14] added tests --- test/unit/bank-redirect.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/bank-redirect.test.js b/test/unit/bank-redirect.test.js index 42f481b38..541a20b3d 100644 --- a/test/unit/bank-redirect.test.js +++ b/test/unit/bank-redirect.test.js @@ -95,7 +95,7 @@ describe('Recurly.BankRedirect', function () { this.bankRedirect.loadBanks(this.banksPayload, '#issuer_id'); }); - it('attach the banks to a select element after cleanup the select', function (done) { + it.only('attach the banks to a select element after cleanup the select', function (done) { fixture('selectListsFull', [{ id: 'bank99', name: 'Bank 99' }], 'issuer_id'); const $select = testBed().querySelector('#issuer_id'); @@ -280,7 +280,7 @@ describe('Recurly.BankRedirect', function () { this.bankRedirect.loadCountries('#country_code'); }) - it('attach the countries to a select element after cleanup the select', function (done) { + it.only('attach the countries to a select element after cleanup the select', function (done) { const list = [ { name: "Austria", id: "AT" }, { name: "Belgium", id: "BE" }, From ba354c865e92a27640af2bc231e280a7e787279d Mon Sep 17 00:00:00 2001 From: Alexander Date: Fri, 11 Feb 2022 12:30:22 -0300 Subject: [PATCH 11/14] pass payment type to get countries and fix some tests --- lib/recurly/bank-redirect.js | 49 +++--- test/unit/bank-redirect.test.js | 272 +++++++++++++++----------------- test/unit/support/fixtures.js | 5 +- 3 files changed, 161 insertions(+), 165 deletions(-) diff --git a/lib/recurly/bank-redirect.js b/lib/recurly/bank-redirect.js index ac6c9f4cf..41395688e 100644 --- a/lib/recurly/bank-redirect.js +++ b/lib/recurly/bank-redirect.js @@ -58,21 +58,26 @@ class BankRedirect extends Emitter { }); } - loadCountries(attachTo) { + loadCountries (data, attachTo) { debug('Load countries'); - const countriesList = [ - { name: "Austria", id: "AT" }, - { name: "Belgium", id: "BE" }, - { name: "Germany", id: "DE" }, - { name: "Italy", id: "IT" }, - { name: "Spain", id: "ES" }, - { name: "The Netherlands", id: "NL" } - ] + const errors = validateCountriesPayload(data); + if (errors.length > 0) { + return this.error('validation', { fields: errors }); + } + + const countries = [ + { id: 'AT', name: 'Austria' }, + { id: 'BE', name: 'Belgium' }, + { id: 'DE', name: 'Germany' }, + { id: 'IT', name: 'Italy' }, + { id: 'ES', name: 'Spain' }, + { id: 'NL', name: 'The Netherlands' } + ]; if (attachTo) { - attachListToSelect(attachTo, countriesList, 'country_code') + attachListToSelect(attachTo, countries, 'country_code'); } - this.emit('countries', countriesList); + this.emit('countries', countries); } /** @@ -108,10 +113,12 @@ class BankRedirect extends Emitter { function validatePayload (data) { const errors = validatePaymentMethodType(data); - if (data && data.payment_method_type === 'ideal') { - errors.push(...validateIdealPayload(data)); - } else if (data && data.payment_method_type === 'sofort') { - errors.push(...validateSofortPayload(data)); + const validation = { + ideal: validateIdealPayload, + sofort: validateSofortPayload, + }[data && data.payment_method_type]; + if (validation) { + errors.push(...validation(data)); } return errors; @@ -121,12 +128,16 @@ function validateBankPayload (data) { return validatePaymentMethodType(data); } +function validateCountriesPayload (data) { + return validatePaymentMethodType(data); +} + function validatePaymentMethodType (data) { if (!data || !data.payment_method_type) { return ['payment_method_type cannot be blank']; } - if (data.payment_method_type !== 'ideal' && data.payment_method_type !== 'sofort') { + if (!['ideal', 'sofort'].includes(data.payment_method_type)) { return ['invalid payment_method_type']; } @@ -161,7 +172,7 @@ function validateSofortPayload (data) { return errors; } -function attachListToSelect (selector, list, id) { +function attachListToSelect (selector, list, selectorId) { let $select = document.querySelector(selector); if (!$select) { return; @@ -170,8 +181,8 @@ function attachListToSelect (selector, list, id) { if ($select.tagName != 'SELECT') { const $container = $select; $select = document.createElement('select'); - $select.id = id; - $select.setAttribute('name', id); + $select.id = selectorId; + $select.setAttribute('name', selectorId); $container.appendChild($select); } diff --git a/test/unit/bank-redirect.test.js b/test/unit/bank-redirect.test.js index 541a20b3d..b4a48a180 100644 --- a/test/unit/bank-redirect.test.js +++ b/test/unit/bank-redirect.test.js @@ -17,7 +17,7 @@ describe('Recurly.BankRedirect', function () { describe('iDeal', function () { describe('loadBanks', function () { beforeEach(function () { - this.banksPayload = { + this.payload = { payment_method_type: 'ideal', }; }); @@ -27,7 +27,7 @@ describe('Recurly.BankRedirect', function () { }); it('raises an error for a missing type', function (done) { - this.banksPayload.payment_method_type = undefined; + this.payload.payment_method_type = undefined; this.bankRedirect.on('error', (error) => { assert.ok(error); @@ -37,11 +37,11 @@ describe('Recurly.BankRedirect', function () { }); this.bankRedirect.on('banks', assert.fail); - this.bankRedirect.loadBanks(this.banksPayload); + this.bankRedirect.loadBanks(this.payload); }); it('raises an error for an invalid type', function (done) { - this.banksPayload.payment_method_type = 'wrong'; + this.payload.payment_method_type = 'wrong'; this.bankRedirect.on('error', (error) => { assert.ok(error); @@ -51,11 +51,11 @@ describe('Recurly.BankRedirect', function () { }); this.bankRedirect.on('banks', assert.fail); - this.bankRedirect.loadBanks(this.banksPayload); + this.bankRedirect.loadBanks(this.payload); }); it('raises an error for a failed api request', function (done) { - this.banksPayload.error = true; + this.payload.error = true; this.bankRedirect.on('error', (error) => { assert.ok(error); @@ -64,24 +64,24 @@ describe('Recurly.BankRedirect', function () { }); this.bankRedirect.on('banks', assert.fail); - this.bankRedirect.loadBanks(this.banksPayload); + this.bankRedirect.loadBanks(this.payload); }); it('emit the banks without error for a successfully api request', function (done) { - this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('error', assert.fail); this.bankRedirect.on('banks', banks => { assert.ok(banks); done(); }); - this.bankRedirect.loadBanks(this.banksPayload); + this.bankRedirect.loadBanks(this.payload); }); it('attach the banks to a select element', function (done) { fixture('selectLists', 'issuer_id'); const $select = testBed().querySelector('#issuer_id'); - this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('error', assert.fail); this.bankRedirect.on('banks', () => { assert.ok(new RegExp([ '', @@ -110,14 +110,14 @@ describe('Recurly.BankRedirect', function () { done(); }); - this.bankRedirect.loadBanks(this.banksPayload, '#issuer_id'); + this.bankRedirect.loadBanks(this.payload, '#issuer_id'); }); it('attach the banks to a select element into a container', function (done) { fixture('emptyForm'); const $form = testBed().querySelector('#test-form'); - this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('error', assert.fail); this.bankRedirect.on('banks', () => { assert.ok(new RegExp([ '
', @@ -130,7 +130,7 @@ describe('Recurly.BankRedirect', function () { done(); }); - this.bankRedirect.loadBanks(this.banksPayload, '#test-form'); + this.bankRedirect.loadBanks(this.payload, '#test-form'); }); }); @@ -150,119 +150,67 @@ describe('Recurly.BankRedirect', function () { this.sandbox.restore(); }); - it('raises an error for a missing type', function (done) { - this.startPayload.payment_method_type = undefined; - - this.bankRedirect.on('error', (error) => { - assert.ok(error); - assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'payment_method_type cannot be blank'); - done(); - }); - this.bankRedirect.on('token', assert.fail); - - this.bankRedirect.start(this.startPayload); + validateBankRedirectStart({ + requiredFields: ['payment_method_type', 'invoice_uuid', 'issuer_id'], }); + }); + }); - it('raises an error for an invalid type', function (done) { - this.startPayload.payment_method_type = 'wrong'; - - this.bankRedirect.on('error', (error) => { - assert.ok(error); - assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'invalid payment_method_type'); - done(); - }); - this.bankRedirect.on('token', assert.fail); + describe('sofort', function () { + describe('loadCountries', function () { + beforeEach(function () { + this.payload = { + payment_method_type: 'sofort', + }; + }); - this.bankRedirect.start(this.startPayload); + afterEach(function () { + clearFixture(); }); - it('raises an error for a missing issuer_id', function (done) { - this.startPayload.issuer_id = ''; + it('raises an error for a missing type', function (done) { + this.payload.payment_method_type = undefined; this.bankRedirect.on('error', (error) => { assert.ok(error); assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'issuer_id cannot be blank'); + assert.equal(error.fields[0], 'payment_method_type cannot be blank'); done(); }); - this.bankRedirect.on('token', assert.fail); + this.bankRedirect.on('banks', assert.fail); - this.bankRedirect.start(this.startPayload); + this.bankRedirect.loadCountries(this.payload); }); - it('raises an error for a missing invoice_uuid', function (done) { - this.startPayload.invoice_uuid = ''; + it('raises an error for an invalid type', function (done) { + this.payload.payment_method_type = 'wrong'; this.bankRedirect.on('error', (error) => { assert.ok(error); assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'invoice_uuid cannot be blank'); - done(); - }); - this.bankRedirect.on('token', assert.fail); - this.bankRedirect.start(this.startPayload); - }); - - it('create the iframe to make the payment', function () { - // debugger - this.bankRedirect.start(this.startPayload); - - assert(this.recurly.Frame.calledOnce); - assert(this.recurly.Frame.calledWithMatch({ - height: 600, - path: '/bank_redirect/start', - payload: { - payment_method_type: 'ideal', - issuer_id: 'issuer123' - } - })); - }); - - it('emit an error if the iframe emits errors', function (done) { - this.bankRedirect.on('error', (error) => { - assert.ok(error); - assert.equal(error.code, 'bank-redirect-error'); - assert.equal(error.cause, 'my-error'); + assert.equal(error.fields[0], 'invalid payment_method_type'); done(); }); - this.bankRedirect.on('token', assert.fail); + this.bankRedirect.on('banks', assert.fail); - const frame = this.bankRedirect.start(this.startPayload); - frame.emit('error', 'my-error'); + this.bankRedirect.loadCountries(this.payload); }); - it('emit a token if the iframe is done successfully', function (done) { + it('emits the countries without error', function (done) { this.bankRedirect.on('error', assert.fail); - this.bankRedirect.on('token', token => { - assert(token, 'my-token'); - done(); - }); - - const frame = this.bankRedirect.start(this.startPayload); - frame.emit('done', 'my-token'); - }); - }); - }); - - describe('sofort', function () { - describe('loadCountries', function () { - it('emits the countries without error for a successful api request', function (done) { - this.bankRedirect.on('error', () => assert.fail); this.bankRedirect.on('countries', countries => { assert.ok(countries); done(); }); - this.bankRedirect.loadCountries(); + this.bankRedirect.loadCountries(this.payload); }); it('attach the countries to a select element', function (done) { fixture('selectLists', 'country_code'); const $select = testBed().querySelector('#country_code'); - this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('error', assert.fail); this.bankRedirect.on('countries', () => { assert.ok(new RegExp([ '', @@ -307,14 +247,14 @@ describe('Recurly.BankRedirect', function () { done(); }); - this.bankRedirect.loadCountries('#country_code'); - }) + this.bankRedirect.loadCountries(this.payload, '#country_code'); + }); it('attach the countries to a select element into a container', function (done) { fixture('emptyForm'); const $form = testBed().querySelector('#test-form'); - this.bankRedirect.on('error', () => assert.fail); + this.bankRedirect.on('error', assert.fail); this.bankRedirect.on('countries', () => { assert.ok(new RegExp([ '', @@ -330,11 +270,11 @@ describe('Recurly.BankRedirect', function () { ].join('')).test($form.outerHTML)); done(); }); - this.bankRedirect.loadCountries('#test-form'); - }) - }) + this.bankRedirect.loadCountries(this.payload, '#test-form'); + }); + }); - describe('start', function() { + describe('start', function () { beforeEach(function () { this.startPayload = { payment_method_type: 'sofort', @@ -350,33 +290,75 @@ describe('Recurly.BankRedirect', function () { this.sandbox.restore(); }); - it('raises an error when country_code is missing', function (done) { - this.startPayload.country_code = ''; - - this.bankRedirect.on('error', (error) => { - assert.ok(error); - assert.equal(error.code, 'validation'); - assert.equal(error.fields[0], 'country_code cannot be blank'); - done(); - }); - this.bankRedirect.on('token', assert.fail); - - this.bankRedirect.start(this.startPayload); - }) - - it('creates the iframe to make the payment', function () { - this.bankRedirect.start(this.startPayload); - - assert(this.recurly.Frame.calledOnce); - assert(this.recurly.Frame.calledWithMatch({ - height: 600, - path: '/bank_redirect/start', - payload: { - payment_method_type: 'sofort', - country_code: 'NA' - } - })); - }) - }) - }) + validateBankRedirectStart({ + requiredFields: ['payment_method_type', 'invoice_uuid', 'country_code'], + }); + }); + }); }); + +function validateBankRedirectStart ({ requiredFields = [] } = {}) { + it('raises an error for an invalid type', function (done) { + this.startPayload.payment_method_type = 'wrong'; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], 'invalid payment_method_type'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + + this.bankRedirect.start(this.startPayload); + }); + + for(const requiredField of requiredFields) { + it(`raises an error for a missing ${requiredField}`, function (done) { + this.startPayload[requiredField] = ''; + + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'validation'); + assert.equal(error.fields[0], `${requiredField} cannot be blank`); + done(); + }); + this.bankRedirect.on('token', assert.fail); + this.bankRedirect.start(this.startPayload); + }); + } + + it('creates the iframe to make the payment', function () { + this.bankRedirect.start(this.startPayload); + + assert(this.recurly.Frame.calledOnce); + assert(this.recurly.Frame.calledWithMatch({ + height: 600, + path: '/bank_redirect/start', + payload: this.startPayload + })); + }); + + it('emit an error if the iframe emits errors', function (done) { + this.bankRedirect.on('error', (error) => { + assert.ok(error); + assert.equal(error.code, 'bank-redirect-error'); + assert.equal(error.cause, 'my-error'); + done(); + }); + this.bankRedirect.on('token', assert.fail); + + const frame = this.bankRedirect.start(this.startPayload); + frame.emit('error', 'my-error'); + }); + + it('emit a token if the iframe is done successfully', function (done) { + this.bankRedirect.on('error', assert.fail); + this.bankRedirect.on('token', token => { + assert(token, 'my-token'); + done(); + }); + + const frame = this.bankRedirect.start(this.startPayload); + frame.emit('done', 'my-token'); + }); +} diff --git a/test/unit/support/fixtures.js b/test/unit/support/fixtures.js index 40cba251f..820485cc5 100644 --- a/test/unit/support/fixtures.js +++ b/test/unit/support/fixtures.js @@ -188,7 +188,10 @@ const emptyForm = () => `
`; const selectLists = (name) => ``; -const selectListsFull = (list, name) => ``; +const selectListsFull = ({ list, selectId }) => { + const options = list.map(({ id, name }) => ``).join(''); + return ``; +}; const empty = ''; From f4a17290845fe11eb289d3a69ccd4329cd5dcd0f Mon Sep 17 00:00:00 2001 From: Alexander Date: Fri, 11 Feb 2022 13:43:48 -0300 Subject: [PATCH 12/14] fix IE error --- lib/recurly/bank-redirect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/recurly/bank-redirect.js b/lib/recurly/bank-redirect.js index 41395688e..b62f86186 100644 --- a/lib/recurly/bank-redirect.js +++ b/lib/recurly/bank-redirect.js @@ -137,7 +137,7 @@ function validatePaymentMethodType (data) { return ['payment_method_type cannot be blank']; } - if (!['ideal', 'sofort'].includes(data.payment_method_type)) { + if (data.payment_method_type !== 'ideal' && data.payment_method_type !== 'sofort') { return ['invalid payment_method_type']; } From 1b458c78fc2bba7dc7e9d16f1a1b8ad126a62991 Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 14 Feb 2022 17:20:46 -0300 Subject: [PATCH 13/14] fix snapshots --- .../card-element-pacifico-1280x973.png | Bin 10576 -> 10776 bytes .../distinct-elements-pacifico-1280x973.png | Bin 11933 -> 11898 bytes .../card-element-pacifico-1280x973.png | Bin 10957 -> 11152 bytes .../distinct-elements-pacifico-1280x973.png | Bin 12194 -> 12164 bytes .../card-element-pacifico-945x1020.png | Bin 12137 -> 12141 bytes .../distinct-elements-pacifico-945x1020.png | Bin 12216 -> 12238 bytes .../card-element-pacifico-945x1020.png | Bin 12460 -> 12480 bytes .../distinct-elements-pacifico-945x1020.png | Bin 12221 -> 12242 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/e2e/support/snapshots/desktop_firefox/BrowserStackFirefox/elements/card-element-pacifico-1280x973.png b/test/e2e/support/snapshots/desktop_firefox/BrowserStackFirefox/elements/card-element-pacifico-1280x973.png index daf45c438763d0b731ba0ae34099ef5577801eb7..4c3e70c3cccdbc08faf2789bdd0f801af7c0139c 100644 GIT binary patch literal 10776 zcmeHtcTiLNx9K6Oc~mO%ypwJBB9GA=Cg-AcC|Y z9zdEX5Rk6YgMjoB%3B-Xoj3EFduQ(4d*8f&UYybG&fedA+gj^WzE3sPm6(~>nGghF z#@xQCg&=$25=q^^7yj0+c~=ep?7gR=bQ9S||D;xBMn*rr>Sb{i@S?Wtma_iQ;N_;Azb+9ZJOnxN>)OeDci^w9K#p_B?q8SvYz$|AU45cL|8-S%nNj}NRZaL&gz?v90Lz$J7WGY@fKgys@x zY9+E~baj@m4KbUwI;=B90PgI>1=i9JMA1 z(|`05;}OKa=H$kzkbWG}U$l{WBu30pxGjhgcX%;+TZYS)M*W9s$w1~8;On3=Cg6)m z&ApXxr9+>Mc#PtS%|RT-o`1#?Rp3|lGn_?#ipzupdQmL5;?%2tb z`4baqQg}-}v)mIsw_eT-waZmI<1FO|Vhl13Qj*KJUnhIpWTl2wGF`Am5?r&`w zJZNglh}6`fE%v@1KFECf*!h5M9}`n1Ov6(6JA#@L;rzKX_Q95g1qWb6yj-G(5KR{srf=Lc{6a>ne3ENL`4WPbdiQV} zDL+{}Lg#0xi;Sm30}Kq4SrFtZBcnXB^ZC~$b~64l?H&^wTV8%Bj!!@!YT#qPEc#$6 zH^W&Z^?JU^Tdha?SPI?gE%BnPM~^yl2$UE12W)S8e+xckV)`U4C+GH5S3!qHz`C}O zNttH0dXftcgEqi^V5b3t0=?1kas3JzDJdgS>yKB>loS;wH&=!zXEJq(zuDy!kWPzQ z-S01RW_Bs;ZAp>Cnm0rgIH$y6{S7H=t&W|UDyOE0C|E!GvaYxHx_vGT2C11=guR;+ z+iInK?_T<`9m_eoIsK zgZ7)++T!Z&-7zsqymI9V{{y*ztx6Xcm$2@-x;iNwEgE{KrL7$kAD^3_FPJ2SQ-=Gx zwogMtJMwgii;cV~6CM+S;1U>|hn1@IHiv zs1hg4F6EZvy+q3-+jZN{^uK*6ZvWDmS&yhIk?KbUl&!XK~Mo3w5Qj5G6Y{32`B!e&2EPWANr{?CEn zkPu>Os(k1vkuI13x34t}GV>qKDc`=Gqos1=Mo>9!DvNu2wE@q=!os4KB5S(uFlWvd z2b$?>OhX~heeHyK2aJI`g@NVmiHs~bf z=d1GZ@$m}_cQuPpOfqL-$L3-w{@yDC9x=(u!XhFf*?urH+OPonckiYtD=T01nzuOT zCeRJj$$Ii6ZK)gE9nGg*V&5lj&OZ-ZoiDWRyBn>bm|d^HC^PAr2W@e(1GZ1M61N|r zF^YGpJyWF#_IGXYL9%rl*ZK43`C!Y2uyE_CtE-c{wWAMLiFC%bYV}MX-e> zC0EVq>q}EhYvU=+R>hMGZF1c{vsL3)Kji;_=*}hUz zec0)Y3u-TQ{%{zq^qT+qQ28qGn+Jy33$p_i`n&cWzM6%EgoLQLgo!UM zEJTq=By@0Jz8Eb1=+VCB{zEhLq!7*5PvTivSm)orDOg;Izv{o?iD`$>44ZC~UI

<}c1&dJ0WdRTZkwYW`|=sNx} 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 Doa+{D literal 10576 zcmd6N2{e>{y!WG|{#yK7)IUN+$zHNVwiYzXzHdWh8$>Z=8T?bJg#LqsEM+&0b?jRy zLdc$VNQGfS3^A7bed@jMx%ZxP&wJi`?|aVsbWR@TndkW}-{rGBk94%uce8V`BM7n^ zbLFxgf^36RBzXrL{I6g4x(0r**<4k>jBKL+lB+W!5#%U>xqQLk&I|gmpNT{(0MhZI>^wJ#9I+z_e{PunxNLx}%B7Q1E$^Q@uPuRs4KV zsi+sr7Mb;47#$)UH=F8vehnAS9pzbr;0GK*-24dZ@6(~bSdRWa8*SKuu>3xiRYP|C zJ}W!3MdkNdUD#e^%kR^hPmn)VD*7Q zY|>T)i9`4imQg>Kjg+gFmRsBh*@Np1IttSiLLW={FRnkP?LWC0bdW5*Gt>B1z@t5U z3VF)w^G`mAnKu`uUJi(9tE><$E7-=gFRx%lfuKA5+aEOeVTy6cS z|4`gW${X*bQoV(cTEJ_x-gh;ZQE9lTquTOJn87gi=#n;$fiM`_#c~u;*_<7eEyhnL zMaBAb^rRtLj~?zYbeVDIXV62ce!J+1&ii*-5cgkQ?q;q&2~-H ztF*&kXw9QH?U&3(Y5NdF9NmGBy}5zC`Pa|h7XrtBrA_KtKu zt{p6)`{;5F_1}NTqNSn0zk9_*Bl_mOz%pZlfV_08Xu>?l*_H(sBFp@{o;j{LW6Uv+A6`oVCs{NL;-KaIqO-<$e z3^dxxiqM#*6q<-?U@*Ecgy^YCA0HpMmZ)*{YIIaos)#Z9Q>kgLQG$YxUSkAbUZ-&c zui^o2ZV`-zwsuU@4Ly7Nbgcw=L${>Z*jNoMt!GU)3QOUOlZ#VbOI%%DUHH|-Dd9#; z=gPtae&xqkuD)-X4>XL)7P@+RM0g;u6U@#h2u6&HK3dpkB_z^QeagKTO=FMWL)!LiubaZ9EyRrr$NXXLn zVN!3dxyZ?rYKneK2BkNLqyG8l7{;u?=030A%$aT5wq*rwZmcd1x}CtNs;Y9y-A;uK zOwY_b1;6zNXGbV+m}o09q67vV>!P9#h+(Tt&YU?TEFt0j$w5mi{MD;h2lnoL8L+J5XDt&C;gi-HFWXn9q%LhD zdhlIiqsZygI{a!+o<>AOz(^gGzvY&W=()S+pVUqiRaRCOvnb2&t;zPAN{cCW>6c_O zWv{^;9JaoYV<3+ruNDO17+|b*S@23mgtp(~OtV zWG>N3>)dGFt5XbxsyF(vA>vZA5|dz=6!KGY4gGiIMZFs^(;5+YiZGDx|IVkHHdG8nw3eacHQa zkx_b6q~PGCQVqCD|JJR7kpQNvB6Fr_px7yrApE1xDo`x4>5DrpH-&58zJ0~6gEDDp zX<7OCI!XRN9>H4WEKIbENJwb!JSh4RX5zWJ=yXC*aC-E0aC3Wm9>bSb7`Pd5LO|fX zO@Sjk!mP%>ys)TEhrFow}f9}pPEfQ{oz1LPt(LHwTSloGUve);asYN-`@?k!{JVTPv)Y{5|{GGXE z2xXk8(HV!fBNUf@J))G&+Z`*bs{`%jPF*K8pP#g8-aZ8MZv5n0u-^Iz7x#p$9M~~J`O;?(FdKN#}&3!WXb@Kdp<5l9GBj>EC z8*g?>oPyL~3%&q>Ue@sBa0-->kVf1d@x|Q+*+741TTt7*J zi15zfQ2MC?acvlSPz=q0Cr@^T9g*v-8P?70r8pb=+*xB5rRC?J{`&1(c23TREDxjE zvuDoeO4R&()%HRzWu)4Vl$n{?a7K2!X<}kxoTS}jnVUnIP~k3;jPrU|8Pf^!r2+}^ zc#Z!4etE)badocu?1-?KSaeKG%)b5m8ExlhKN+9L=3Dm!sF~>+A8~hsw?6jqzwkCT%Qc2)mk^n*LxgqHAjd|8+{idxMZ5E^*6> z)IO}AX6*(eFB-~L?dJL{m%<(Q>PFaVL(_BPZy)Wa4V4#FRaf(TcPlWV&A35ma!KBJ z*xb^BpZs_%r0WqWUdo9m<2sN^A1u9E7{;E{(kgvfU0p<6Tq|S`PxcS1uSGlkmcQrb z)vRiK{rc6c$Uf{_ds1F~2*-JX;_iQlM7?o5lqdnr$jC@@b913v<(+w(gg!${2-0XG z(I#m?tY3{!2|7!uIUocisPa#iqe$|DgJNb^3Uia=#hwMtQscqXtu7oyw^rL`EckO!)4!>P9)KkA$~d6M?2 zz;;j4l&t-SzgCz`=iVIC=GNApwuJK(|CQUCNlMkaIJDQgdmn>d+x@Wu?<{6sat)H* z80r%R)<<#S!&wHe?43F5ZLF-58_d~0=q;Sw+|E|T_132i`n{W@gyh{vgN`3Rj!QVc z_PugeSWeEAN8a-zJekfvPuma4H#B6S87Gz1ww~R0I$-UNm}%kVu5?X(c!ad;fD~b| zL;Z1hxDl+5lyk3W7_Xuk>`>gfTd$spnWujrt~`%dl+_ONYFKDj&ReDiT0!J?5>H$$ zwt2_SyvyrWHUHp=T8fR0%>f>s+%vWfS5}w(6uf3k?%%(kr5?e%$9RdsVDvzG7Q0cE zD9(Lauw=c{d9~zQ;|P6Qa|VbO38+op~?>;2urm0DBXyg2lr+nQo# zsG~DFS0Q#Vl#H#$@v)d#S(VxVl0geOHgFyPbz*{qpYE03V$ify^AoCzqvzTc>U3XT zAJf5oX~uNh_U%-!R`T44U#;Qne97$K-#h~K5-#-K)$NbBc!$N;x-Db#35xl_)3m?+ z;`*Kc7I1o9V=7K&MMi~1w`@T&qdOd{(hP4p`+c**^YZd)ZPRWee~yRj>o0O}rVmgC z3hi3N`m9g?g{!{F!NCzSX5~s4CRdDXu8zd4zEQ@|psfZwqbTlsXh?PAM*4-tp=EgB7B&yRyvF?x>^c`s^uEsI926=tH>@|)-SGX=Lf5#3)Wo+za zbGw8m{%}wi*`mp~G5n?E$YSKRbDj4ltGNNi58@U#i?4wa@YZqNds>}f->Sz^2c@Ot0jq95K zIoTwoF~rZ_>@sF`A@jtv&g}2hlgmL;72`tVP8-#TSk!>c}TL>|_xM zRvE>P&)PAufb<>NS%c6gew#YR*hMT1O?zRJ^+_}~wjz6lQrlPnkZO6 z%I+`SI|a)cbV=bDn!s@UUofWs2PEu2z2yO3-fUPg2$6I2=4gNX%wK@nVYoqlcRNr5 zX(1tgv#i9WKljO#on-NC?i!abXWH0?R95VQi$)Vs*6=hWBqU&Md@orX?UKkx*5_N$ z58?QqBa#1R{3)cJK)iTv-xeojzE6G3UIY<`Af-)RU8e#A1Gll2;PFDx91s>@W^!`n z!XhI2ckVn_fNp?N%rZ>?p%tD&<~}}TNJV#9YxdKKN*|e1_*|Ld7#|SlH(g!&uV2&g z^a0>_TadDyXxiK;FxjyQn|Kx)w!*+xKu_QL^w$ja#G=q%gD9X@yF%-CNocT68Ab5-dEwUxS7JPW0G{+_Zwy zMU31e^Q})_2cTG9aRg?|bx9DW_#wJB|8Q8Vh1X4_j&5FcCu<~db1Px~T?}jte5?+8 zQD*0j8_46&!R9$$M*+)1KcMcKb0kzF-Y;3r?Aax6i-3UVE zU=2co)Oz?Ob&_1=vV5*C2_5g&4jewM+jq^5YxN78=34ue`}cq1rkdRteeHrcb(-nA z%ZAlV<3@nt3%14GJyq|loa;*>X`4C^OZ?Yt4`DS81DS)^T&vAkw%uHr8A$=z%_ZEj zH&30JcLOfg3k~@IaF403&C1vG@FQ}!4g8h_Xm1}y{`m2ub90@#50;fHx4I%HN0dIm zaDX0t`Q5t{ac3P$#$Zlh*qOg#VX{Gn3 zszZCCzN6zqtnZX6bhnXHonW@z zQ5}v<&h)CPi&X!GFd~r{otQ`l@W_~@S^+ky3=_%ACNu2`jOZwfz5&W~)U#*lfH8#6 zoin)$|89fnYMbV~%2O1hS zvDc5)Y_k8+!pZxYS6c zbw(+bw<>Lkw(+yka`or9c6PC4wXf>t&qnXCPTm6t4AR5^Np)qk=X83_e7Z%!eeF6$ z58qN}jP)@D__)+Z^^Z*bhhJUF?0nDz(ljr{wo!}lqY1~H2KL+fLe89Il=~EVbi(>c z0e=Au`yYSk=3zN{E2yiCr0L~as!O1yj=QFy){E}3dZE>%%~)}a@8-IlhSr8(Gyyg< z`|e$TAO<5%BDt2X%hcrLWZ!8ZLw(&@5~Skd4>j7pz7?HaU4~dJ`HZa^)eBZjinSfe zztkfZ!o?F9W^HTdgt>O+rTjcJwxsoAhG0p&F<@EV&Ms&0tcT;D9t@^Mxm9X^BvA_Rzb<3)* z@S+c7;hh6lR{BTI0ttab%{h;(8hQ}dby5ZJa%m~#e}^MI{PN{{#{CC*d3!VI2p74; z&%n#8Bw)ExnwWaM{sAr4A@SL3>!&@qo`$e^+RQ?{8!;-zfoVMvZJgd+KD$IeFMx?q zR?JKGB?*OEGyPji1hjg4LW^CCH+ z0Un=;g!{hJxw7;;U^m>>(CNJua@`upYNJ-+3vui?W) zT^obTAwz=vUZIFY$k8#oy_j;mRcX<7-WPf zyTk}EW)A0W{){+NdOM4f9YFO=uK^X{gut2_ELz+d+w}GF5DtZphL;}f!ga4gqhVtK zX4bR|R$=#`7VdMPS~IoJTwQx0JpjtO)7Oj;`dG5Sy6@}Lgc`;@e{&zF);yPXwYbt7 zN#W@g8*)Kb0Z#F~2RVBzbImAvIGPZK*zqYxBNOe(AlYH`u3VWDD?NXkLF2@f2svqX zU@gCP+w<`yopj3kzP7S+Det`J4%bB}&J&Zo__4e6*-x$fz7p7~Q&~&39tT5JfoVnG zsEmMeRWRbAyr|=bA@=)U^7yuP5k3S#KtH4A1~mhALqk)Obo&M5+-qz1Z$Dmqo2;3- zMj*QG{ik_Oo4C5@^S&$%zWsH6oTRX{h=1NX<#KlRV@AUyCZqzIyahhnrf0Wb$WNWeQd~NaeC!jm(Sz9Mp zw}F-_0tg63VdbboT6r*dn0logZHY+eyiE zeIE`qG&2J}ws;mzav`Gd>uHoPl zb{#CSobDwEhrT-w+D>bt;??0w?;^L&)#0#c12sYe*( zf%`iTp+X%9jvb3r%8@ZK83O(4>|DFpD7c>H5%o)hB+`+dlZLz5xkqt$NuJs?oe*z$Up&9x;e`Waxc z;?P%Ou)ZBx3uMzGBOrODwc+BpH#?Y(?^3xFki}{Lck*Ra;gRk}j{|}5F=N`aXT3efgTmlF-%VUC1%D0k#V`GDu z3i_-x#t$FewUf^$)he=htK&KK<;=-RJ{)v~8&WcnH~eZQ9`3DY40*K6&!qS)eEZe; zvSH)25|(K_{+N=99HYdH+Xt{k_O0CzGSzE84lt$`o>o;=MI|NW6&Bv6IPFh{FJ=>% z6-l=S{tQPexvblW1@pLWjD*!QPzO|0f&w-cVj1BN*^p$RzpkYpCy_#d8#Jt`$7m3- zt208XYF@5$^8nq-U0%Wtif3O6sZcMF1|4djWkpmj-&*pw1#)wXNcO$Er32UmC?34L zY(97HNWtWcNQSbY=gsG@HsHKd3r5a6Q1uZ8X?j*4;5-bIMz42~k#!u~S+w#1B5H>3 zs6j=*dIfy)OC_bBjKo0M!!5p3zDb_=#!FxId|(%L`OUyt=v)loq)kItobdy-SJX?1)?R zzc=W7?wpQAm61#i^l|2;8>aOS-o2;RMxz=AG07^kHQw8Ks0@fL>ZF!U&lkucDzUMq zV4r2Mvi=l0yKwi{z>)8Num-^uaQsI%bTmBQEEjc5@Q20qb#;%CdVbSu#GeCYTwL!U z$E0t(e`;3R{z6WFxB_1p%sFhy>pyp4eKA8Bk3Veazw$LEPC2mVgZ*!!i+sF?svco) zTx3Z3`T4zcP$=WTdRxa|yY>Xod;NJ`vs|vC2dk@bN`#8UJD(q^$r%$+p%|Jyxt9)V zYFAOa5(y+x$FVo}snh?&!no^}Sy-TD8$tUM5)uN>ENkCBD5F!IX;(pbHUvwHY*B7Q zwWpZje|*94CVRh_AOzGJVis&Nc|6UangIGLDl(poY#K4r(|gsGp*`q) zOup8&PPDI zQtqQFAR1??iGeUaQ0biq>_Ts18I}^nSyTgZcLco+^^CxkGtkjFiZQG9r4X3lwot(P zjcv6@{ZAswU15a`4Gci7y$akAu%lX7O$5*RbZ`-;s+ULf!B>Prcx0&@JT8<1LpuTm zr|U~oB>km%8eElCR%YT>yIzt=STY4Gs7Z-)1;k=-XK$Zl^y=>Z)K}U#x)KeiwM&jp2FM!C~=c|bCuMMmPV+~ZE;(&EuF{>I2 zuwItv&VA&baGvw%pKTlW5awQQ-xK_S21#}ab+RDwz;NyeV%dtD*?;Jeptg3qFB6qx zM|sf<-GfT?5d3`|DeBNSUfmq7fJ_;#sRpAOin%^i*6btDmlU92-M@Fw5zLx_a*vFz ziJTD!fB!0=LunxNqlyCry*>_yi?;ptAvOg>cMYQ2lfRAuKVr(sg5Ls}oC%htRzl$N z_hC?Uo)XyIZ`?=)*Y*-vsNkL9z@FB)cFh0`Zg@?>2$;+{0zo!3JRIIJsK0UgFDVfH zF`a*J-99sDb!TkbySH!OTc4hsZ{+KHe#W*KyeD({LoltNS=ry(TLPFcTU!&(8$*QX z00@wjl$5&tYtxOfnh!I1rrDo zh^z4@*m|`~i;LY+Li(stt2qC5KN>f^c~-OCIwg9cY%7ey0*~Hm?>%( zmXR?6py^5TsN6qr~PH!2o9tuA#wLh9tCBZJm+74olhvLody zot_H;0C>rcHd0-w-{-N=?dYJexwZfz({fLiz98y{K^@GOn4E9mc6;wAB@C`{M@I+O zS^Focfwhgcjp2qSCeKmJ8Bl(YZ#XRw%n3j-k*{wE7gkj4K!Th<1bSu(2+fqA)=b*C z7)G}*g7%p8dZ%SnbTsH9pVasDHrNzoR#jO*VafBT1s}MXO08|U%TI{~ryN)t8MMH@ z%DfaVkUF5o9>JErv+3v|8PoZZ>FH^sU56zvr>KQ>qP`h4M9R(Kf$JvT44UD}Z{zB6 z#Q!p`B;Xwcs{C5bHpD=>sBg<}3~BKPQfGLF4Fv#dDf7>a%5&+lfjt0c&v8DJt9@8-0h)sP%&fFPp^TcEiP&Vi%^^@!ro z&byme;Zx7op+eBRvH-~c_6dUGQD9aUR^mE{16Q0ZK3<~u<2^rF9Bt4++}A-$4|-F7 zDLTn&5)6q9%W`5~IL{?ZOYmY4cWrA{Ky0^e)l=+RZra_jaK{S;=^sCSk(2xUP>&s4 zfh@Cbfl(-c&N0px;f_Cy{w?Ta-2rR#1ogZAdoQ*98$V);3VOr;{w;sMC)XDbP9f>) zuRBWZRfCfC>$v&BT9VV$(h@u?^ax6Sy+h^K+5e9-S=waLk!dk5s0ulbjuE4(b(wt8 H`tH8~G*iHR diff --git a/test/e2e/support/snapshots/desktop_firefox/BrowserStackFirefox/elements/distinct-elements-pacifico-1280x973.png b/test/e2e/support/snapshots/desktop_firefox/BrowserStackFirefox/elements/distinct-elements-pacifico-1280x973.png index 92b7ee4dcaf23c3fe50452e52a25f97b1daca72f..50a538fd15615b59b65f639030836ab037d576d5 100644 GIT binary patch literal 11898 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 XzEdhozkZL8K1VoV@I%hAt3UleI%Dcm diff --git a/test/e2e/support/snapshots/desktop_firefox/BrowserStackFirefox/hosted-fields/card-element-pacifico-1280x973.png b/test/e2e/support/snapshots/desktop_firefox/BrowserStackFirefox/hosted-fields/card-element-pacifico-1280x973.png index 0474dfde04f7856209295f37082602c683d58065..13e9b853ffef9164f538a9a4713f068b02a8f14f 100644 GIT binary patch literal 11152 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 literal 10957 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 diff --git a/test/e2e/support/snapshots/desktop_msedge/BrowserStackEdge/elements/card-element-pacifico-945x1020.png b/test/e2e/support/snapshots/desktop_msedge/BrowserStackEdge/elements/card-element-pacifico-945x1020.png index e99ae94b9148ecc25ce11ee847223886fa3beb8c..7d6fea76d7e9723b75a1f427c15a50fc8fca12be 100644 GIT binary patch delta 5196 zcmeH}X;4#F6vr>%${@5tMIfT=YDFE1CI$lvxI_#xwTK!qw2>GjiDHmNj8DL#w1kLZ zHG-yLDJn3Kkf2Numx5t2G(ZAjEkPwlK`X=>5F5ID=-BDB8K!(FAKv+J-#z#LzxVyl zc~^Dl#i5Iq#!2($005rnIfj?nF)bl9m&j}U_ubD{H6VTqGkoA~wIwpo%G+v|*+H$CQr zwV(#$bI!0ZEv_en59cH&YGwH$LHI)?V?@~a`Q&9HSBYh&w+bg*8T2lIU@ASu ziUJzVf$ffCqc18;>E70i1);~DEKbyxmxKh|R>VqM8p8o_asAjBUgwXORq*p3*H~Ol zDiXd5$rXuM0+$53+F9dS`Ihy>a5LoD?A|@b*7lfff`^Q=mfVI#jYDs2Pb4QfiM{Fj z<>jmCbkUxr4Xqur1YYH&6=#BXw4kF|KyH`qAlz4|Y-fS!L-rP=c+N;rTe_y00k>wr z1(coJqlUi-m!q3AD2#2^Hl~eZCkw-l-*2D5#Y#oQqb7n#>LXdMBNB}>^C-RJ-qE~+ zTedN$SnS^$pgP)%(x4cWj@BP?dc5(2&F@P0v2!P?$=To4yQ+o;8x>+!2}@~Y2g#DZ zddycse%)52&JE#y+Nu)Nz?G508^^|B)XubsVpO~ufor)H6IPqp{E+WWqU;_EU8^zy zFwaTDWlntaR5xUnIMXsRqNM4^;+9nGur1^@R>dpgdeU(z1ICTHH_?s-2iy@$7e*&o zT{#h?E%Hp*kqsk`-MFr;^8m?1_ldqA$iL1qI(l8h$F}0b6e*+k9>(?D z&+PY*#C6JTFVt~NOe6AW_3*)n+I~T7lihGQHcIN5b(dd2dkqQ5I|KJFi6+mXlHdW` z6$;adR+(n}$YO9Ue%|b73r6#WRSs+cV+}@B{hEYdmQV*TLZnsq3`LNw@%I#!9+KDr z%`2x{MmT9^Xhy%^4Ohw%g71O46k4Ao&Pr02-B(7zwY2o6-yn{EO4Pa`qhA)@E!tBJ z0M^bc&UquW7-NKp#O_aVZ?ltAO}ny6CLD6ouRM7;*X;BxyxTf~qc98`sO{`b30^_H z#3xdY)ZKLwT3vk`B+ulmz{jmybn^wp4dOh0@KYzJdL+^XtyCv>Do~e(T$PB!);N?2 z@ZWmQaMbi57g>GqWP_qul?|sM0(PTlZ4acfT&S3Uu)chgPLZ^ChZF|&qarE9+wx@5 zql}6U1#L%~$2Xb^0)Cs6r|FObVabbK+o8a{6|fU5jwZpEDvx+`SpDP?zW{9`pw!nq z_^kU^^1|uQY0USeh&&giFEj9@6I+0VaVu!vr=&USU0p*%Z>>~q8fn<8;6;u@y!{9z zj|Tvz;pIyfgJ@=mTu=YGX({GX;~Di3xvR2F%#AV76(+SUcmsUQ9mQa=Q9J z`SlxU9CI+%-2g;;Ks+`YoHduX2a%bY9uZcq$Zle=sI8zT^xm%Jy7m{+c+Rk{yOv=y zDMd6hN=afbG^lCRHMRLr>Rhm_3}y+ySucAFU0nC?BlLG^livDTqej)GVY;RXkXy3m z&j#Syu0M`Sm)nw%?XPoLe?iZv)7L+F3UYP&dV8M&c>qnXJb%;9-UE4SQ(}gD9Yt;L6PC@X+JEN;2)3@?Ct~>+QwblIJAHPqq W4!t?dp)xgoavElI~MI4lnoV%=zDQ&+q*2 zQH3BOxf@sgWP$CQBxk& zTt@=B>*-HUuBeZp$_j^*u`w~!g31lGk-9*unR}0TteJ%fP3d4q##BIEryVLqP;qS^ zqPbn+HEsKttJeFcY0x$t$N4t%quFlrjj0wc(&qfpl7{OLwVH#;z;RG%Ww?rIVGP`HYgXYUlsW#mkFMW)Q+}1eAyw=)^}%X}+Ow3W1reQE)oVJP?h-aksDh zzT4hNx%_-bOI@>Q8^(NxS3Km~GD@pxZ;0I3*hcj&#}-mtU`&R5(l z->z3NNWZQpl7j>y!NZY!#hJT*@h95voxR~{xw?N^biVOkV#J>+N@z+g>w-2}%3xTN zXV_YdV;0sLMu97axl2LwKd}ns*U(h`Q+^zAVZ}DCI5r{%y4zogG4t;|dHI`#frZ*;^AjA(1jCR!l!@yU^?!s{N)?8Ao zVbBjfElW~Nm2`Gd8&B!m^t#m~WLy?nU@ulfwsC)aoPO}!c}lu+x3CPSr+Yww*(HuNXAn8`Y!NDQ}tW`+=~Z0Y(P^c^kk=ql&Tpnhg5gQq-0_&7{P}-tOp?7 zk-k6UVf;gBmO&~_@S{;nvwtQCqZ?fCbYtrZko!gUY5+X#SZhq&SZ|rU1D{_^cznEe z?y1b#V2z;Y-8-j^0icxsQy&0Lh{W$bgBQ~dEd2?;ili@*6Mh9Xy@dP$cU~J@c+mE%K^B||LZm2 zW&i(|9WL=-@cda==6{+0{~Wq!kYD=!=lRS(BM+AOU*`XH@^Ag@R=)u2l6M&PL9na! sLCV{;w>JwU*a9QLBsSWJHHoEfFme=fSq{wjU5hc~j{*+x_lJG^H_7|=T>t<8 diff --git a/test/e2e/support/snapshots/desktop_msedge/BrowserStackEdge/elements/distinct-elements-pacifico-945x1020.png b/test/e2e/support/snapshots/desktop_msedge/BrowserStackEdge/elements/distinct-elements-pacifico-945x1020.png index 69bcff69a6d4bba3001e7d85ea0b27601eeff9f1..ddd218a10a5488c82f9427a2f6a51260a06822be 100644 GIT binary patch literal 12238 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 T*TMrK3%MWnK30At@an$-=Wj_O literal 12216 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 literal 12460 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 Zc_w`3z4qmO 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 From 01279dc4a5b16e5751eedda833982fe059ef2fd2 Mon Sep 17 00:00:00 2001 From: Alexander Date: Thu, 17 Feb 2022 11:15:51 -0300 Subject: [PATCH 14/14] Update the bank-redirect d.ts --- lib/recurly/bank-redirect.js | 7 ++++++- types/lib/bank-redirect.d.ts | 15 ++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/recurly/bank-redirect.js b/lib/recurly/bank-redirect.js index b62f86186..65a205d9a 100644 --- a/lib/recurly/bank-redirect.js +++ b/lib/recurly/bank-redirect.js @@ -14,7 +14,7 @@ export function factory (options) { } /** - * Initializes an BankRedirect session. + * Initializes a BankRedirect session. * * @param {Object} options * @param {Recurly} options.recurly @@ -58,6 +58,11 @@ class BankRedirect extends Emitter { }); } + /** + * Fetch the countries. + * @param {Object} data + * @param {string} attachTo + */ loadCountries (data, attachTo) { debug('Load countries'); diff --git a/types/lib/bank-redirect.d.ts b/types/lib/bank-redirect.d.ts index e3838620a..7a33b087e 100644 --- a/types/lib/bank-redirect.d.ts +++ b/types/lib/bank-redirect.d.ts @@ -21,18 +21,20 @@ export type BankRedirectOptions = { country_code?: string; /** - * Invoice Uuid from PendingPurchase + * Invoice Uuid from PendingPurchase. */ invoice_uuid: string; }; -export type LoadBankOptions = { +export type LoadBanksOptions = { /** * Token Payment method type. */ payment_method_type: PaymentMethodType; }; +export type LoadCountriesOptions = LoadBanksOptions; + export interface BankRedirectInstance extends Emitter { /** * Start the BankRedirect Payment Modal. @@ -40,11 +42,14 @@ export interface BankRedirectInstance extends Emitter { start: (data: BankRedirectOptions) => void; /** - * Load the banks. + * Load the banks for the specified payment method type. */ - loadBanks: (data: LoadBankOptions, attachTo?: string) => void; + loadBanks: (data: LoadBanksOptions, attachTo?: string) => void; - loadCountries: (attachTo?: string) => void; + /** + * Load the countries for the specified payment method type. + */ + loadCountries: (data: LoadCountriesOptions, attachTo?: string) => void; } export type BankRedirect = () => BankRedirectInstance;