Skip to content

Commit

Permalink
feat(payments): PAYMENTS-5513 add set_as_default_vaulted_instrument m…
Browse files Browse the repository at this point in the history
…apping (#100)
  • Loading branch information
leeBigCommerce authored Jun 8, 2020
1 parent 14fa535 commit 6eb926d
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/payment/v1/payment-mappers/payment-mapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export default class PaymentMapper {
notify_url: order.callbackUrl,
return_url: paymentMethod.returnUrl || (order.payment ? order.payment.returnUrl : null),
vault_payment_instrument: !payment.instrumentId ? payment.shouldSaveInstrument : null,
set_as_default_stored_instrument: (payment.instrumentId || payment.shouldSaveInstrument) ? payment.setAsDefaultInstrument : null,
};

const { method } = paymentMethod;
Expand Down
71 changes: 71 additions & 0 deletions test/payment/v1/payment-mappers/payment-mapper.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,26 @@ describe('PaymentMapper', () => {
);
});

it('maps requests for vaulted instrument to be made default', () => {
data = merge({}, data, {
payment: {
shouldSaveInstrument: true,
instrumentId: 'token1',
ccCvv: '123',
three_d_secure: { token: 'aaa.bbb.ccc' },
setAsDefaultInstrument: true,
},
});

const output = paymentMapper.mapToPayment(data);

expect(output).toEqual(
expect.objectContaining({
set_as_default_stored_instrument: true,
}),
);
});

it('maps requests for instrument to be vaulted', () => {
data = merge({}, data, {
payment: {
Expand All @@ -191,6 +211,57 @@ describe('PaymentMapper', () => {
);
});

it('maps requests for instrument to be vaulted AND made default', () => {
data = merge({}, data, {
payment: {
shouldSaveInstrument: true,
setAsDefaultInstrument: true,
},
});

const output = paymentMapper.mapToPayment(data);

expect(output).toEqual(
expect.objectContaining({
set_as_default_stored_instrument: true,
}),
);
});

it('ignores requests to set non-vaulted instruments as default', () => {
data = merge({}, data, {
payment: {
instrumentId: undefined,
setAsDefaultInstrument: true,
},
});

const output = paymentMapper.mapToPayment(data);

expect(output).not.toEqual(
expect.objectContaining({
set_as_default_stored_instrument: true,
}),
);
});

it('ignores requests to set an instrument that is not about to be vaulted, as default', () => {
data = merge({}, data, {
payment: {
shouldSaveInstrument: false,
setAsDefaultInstrument: true,
},
});

const output = paymentMapper.mapToPayment(data);

expect(output).not.toEqual(
expect.objectContaining({
set_as_default_stored_instrument: true,
}),
);
});

it('maps the input object into a payment object with method', () => {
data = merge({}, data, {
paymentMethod: {
Expand Down

0 comments on commit 6eb926d

Please sign in to comment.