diff --git a/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.clientScripts.js b/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.clientScripts.js deleted file mode 100644 index 357ff28b50..0000000000 --- a/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.clientScripts.js +++ /dev/null @@ -1,3 +0,0 @@ -window.mainConfiguration = { - allowPaymentMethods: ['giftcard'] -}; diff --git a/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.mocks.js b/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.mocks.js deleted file mode 100644 index 28daf29ae5..0000000000 --- a/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.mocks.js +++ /dev/null @@ -1,28 +0,0 @@ -import { RequestMock, RequestLogger } from 'testcafe'; -import { BASE_URL } from '../../pages'; - -import { mock, loggers } from '../onOrderUpdated/onOrderUpdated.mocks'; - -const path = require('path'); -require('dotenv').config({ path: path.resolve('../../', '.env') }); - -const MOCK_SESSION_ID = 'CS616D08FC28573F9C'; -const MOCK_SESSION_DATA = 'Ab02b4c0!BQABAgChW9EQ6U'; - -const balanceUrl = `https://checkoutshopper-test.adyen.com/checkoutshopper/v1/sessions/${MOCK_SESSION_ID}/paymentMethodBalance?clientKey=${process.env.CLIENT_KEY}`; - -const balanceResponse = { - balance: { - currency: 'USD', - value: 1000000 - }, - sessionData: MOCK_SESSION_DATA -}; - -const balanceMock = RequestMock() - .onRequestTo(request => request.url === balanceUrl && request.method === 'post') - .respond(balanceResponse, 200, { - 'Access-Control-Allow-Origin': BASE_URL - }); - -export { mock, balanceMock, loggers, MOCK_SESSION_DATA }; diff --git a/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.test.js b/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.test.js deleted file mode 100644 index 240dd57d13..0000000000 --- a/packages/e2e/tests/giftcards/onRequiringConfirmation/onRequiringConfirmation.test.js +++ /dev/null @@ -1,46 +0,0 @@ -import { ClientFunction } from 'testcafe'; - -import { fillIFrame, getInputSelector } from '../../utils/commonUtils'; -import { GIFTCARD_NUMBER, GIFTCARD_PIN } from '../utils/constants'; -import { GIFTCARDS_SESSIONS_URL } from '../../pages'; -import { mock, loggers, MOCK_SESSION_DATA, balanceMock } from './onRequiringConfirmation.mocks'; - -import { GiftCardSessionPage } from '../../_models/GiftCardComponent.page'; - -const giftCard = new GiftCardSessionPage(); -const { balanceLogger, ordersLogger, paymentLogger } = loggers; - -const getCallBackData = ClientFunction(() => window.onRequiringConfirmationTestData); - -// only setup the loggers for the endpoints so we can setup different responses for different scenarios -fixture`Testing gift cards`.page(GIFTCARDS_SESSIONS_URL).requestHooks([balanceLogger, ordersLogger, paymentLogger]); - -// set up request hooks for different scenarios -test.requestHooks([balanceMock, mock])('Test if onRequiringConfirmation is retrieved on success', async t => { - await giftCard.pmHolder(); - await giftCard.cardUtils.fillCardNumber(t, GIFTCARD_NUMBER); - await fillIFrame(t, giftCard.iframeSelector, 1, getInputSelector('encryptedSecurityCode'), GIFTCARD_PIN); - - // first step, request confirmation (.balanceCheck()) - await t - .click(giftCard.payButton) - .expect(balanceLogger.count(() => true)) - .eql(1) - .expect( - balanceLogger.contains(record => { - const { sessionData } = JSON.parse(record.request.body); - return sessionData === MOCK_SESSION_DATA; - }) - ) - .ok() - .expect(ordersLogger.count(() => true)) - .eql(0) - .expect(getCallBackData()) - .ok(); - - // second step, make payment (.submit()) - await t - .click(giftCard.payButton) - .expect(paymentLogger.count(() => true)) - .eql(1); -}); diff --git a/packages/lib/src/components/Giftcard/Giftcard.test.tsx b/packages/lib/src/components/Giftcard/Giftcard.test.tsx index ae5c35d784..5a4da203c6 100644 --- a/packages/lib/src/components/Giftcard/Giftcard.test.tsx +++ b/packages/lib/src/components/Giftcard/Giftcard.test.tsx @@ -247,4 +247,62 @@ describe('Giftcard', () => { expect(onSubmit).toHaveBeenCalled(); }); }); + + describe('onRequiringConfirmation handling', () => { + test('should require confirmation and resolve payment', async () => { + const onBalanceCheck = jest.fn(resolve => + resolve({ + balance: { value: 2000, currency: 'EUR' } + }) + ); + const onOrderRequest = jest.fn(resolve => resolve({})); + const onSubmit = jest.fn(); + const onRequiringConfirmation = jest.fn(resolve => resolve()); + + // mounting and clicking pay button + const giftcard = new Giftcard(global.core, { + ...baseProps, + onBalanceCheck, + onOrderRequest, + onRequiringConfirmation, + onSubmit + }); + render(giftcard.render()); + giftcard.setState({ isValid: true }); + const payButton = await screen.findByRole('button'); + await user.click(payButton); + + expect(onOrderRequest).not.toHaveBeenCalled(); + expect(onRequiringConfirmation).toHaveBeenCalled(); + expect(onSubmit).toHaveBeenCalled(); + }); + + test('should require confirmation and cancel payment', async () => { + const onBalanceCheck = jest.fn(resolve => + resolve({ + balance: { value: 2000, currency: 'EUR' } + }) + ); + const onOrderRequest = jest.fn(resolve => resolve({})); + const onSubmit = jest.fn(); + const onRequiringConfirmation = jest.fn(({ reject }) => reject()); + + // mounting and clicking pay button + const giftcard = new Giftcard(global.core, { + ...baseProps, + onBalanceCheck, + onOrderRequest, + onRequiringConfirmation, + onSubmit + }); + render(giftcard.render()); + giftcard.setState({ isValid: true }); + const payButton = await screen.findByRole('button'); + await user.click(payButton); + + expect(onOrderRequest).not.toHaveBeenCalled(); + expect(onRequiringConfirmation).toHaveBeenCalled(); + expect(onSubmit).not.toHaveBeenCalled(); + }); + }); });