import {expect} from 'chai'; import * as sinon from 'sinon'; import PaymentCompleteDriver from './PaymentComplete.driver'; describe('PaymentComplete', () => { const driver = new PaymentCompleteDriver(); const paymentResult = { chargeId: '123', isPending: false, }; const pendingPaymentResult = { chargeId: '123', isPending: true, }; const order = { description: { amount: 14.99, currency: 'USD', }, }; const locale = 'en'; afterEach(() => driver.cleanup()); it('should render success message', () => { driver.when.render({paymentResult, order, locale}); expect(driver.get.transactionInfo().text()).contains(`Your payment of $${order.description.amount} was successfull.`); }); it('should render pending message', () => { driver.when.render({paymentResult: pendingPaymentResult, order, locale}); expect(driver.get.transactionInfo().text()).contains(`Your payment of $${order.description.amount} is being processed.`); }); it('should render only info', () => { driver.when.render({paymentResult, order, locale}); expect(driver.get.transactionInfo().text()).contains(paymentResult.chargeId); expect(driver.get.transactionInfo().text()).contains(`$${order.description.amount}`); expect(driver.get.transactionInfo().text()).contains('your@email.com'); expect(driver.has.returnButton()).to.be.false; }); it('should render return button and call onReturn', () => { const onReturn = sinon.spy(); driver.when.render({paymentResult, order, locale, onReturn}); expect(driver.has.returnButton()).to.be.true; driver.when.clickReturnButton(); expect(onReturn.calledOnce).to.be.true; }); });