2023-02-28 05:04:44 -05:00
|
|
|
import {
|
|
|
|
createFakeRecurly,
|
|
|
|
defaultSubscription,
|
|
|
|
} from '../../fixtures/recurly-mock'
|
|
|
|
import { PaymentProvider } from '../../../../../../frontend/js/features/subscription/context/payment-context'
|
|
|
|
import { plans } from '../../fixtures/plans'
|
2023-03-01 04:33:10 -05:00
|
|
|
import PaymentPreviewPanel from '../../../../../../frontend/js/features/subscription/components/new/payment-preview/payment-preview-panel'
|
|
|
|
import CheckoutPanel from '../../../../../../frontend/js/features/subscription/components/new/checkout/checkout-panel'
|
|
|
|
import { fillForm } from '../../helpers/payment'
|
2023-02-28 05:04:44 -05:00
|
|
|
|
|
|
|
describe('common recurly validations', function () {
|
|
|
|
beforeEach(function () {
|
|
|
|
const plan = plans.find(({ planCode }) => planCode === 'collaborator')
|
|
|
|
|
|
|
|
if (!plan) {
|
|
|
|
throw new Error('No plan was found while running the test!')
|
|
|
|
}
|
|
|
|
|
|
|
|
cy.window().then(win => {
|
|
|
|
win.metaAttributesCache = new Map()
|
|
|
|
win.metaAttributesCache.set('ol-countryCode', '')
|
|
|
|
win.metaAttributesCache.set('ol-recurlyApiKey', '1234')
|
|
|
|
win.metaAttributesCache.set('ol-recommendedCurrency', 'USD')
|
|
|
|
win.metaAttributesCache.set('ol-plan', plan)
|
|
|
|
win.metaAttributesCache.set('ol-planCode', plan.planCode)
|
|
|
|
win.metaAttributesCache.set('ol-showCouponField', true)
|
|
|
|
win.recurly = createFakeRecurly(defaultSubscription)
|
|
|
|
cy.interceptEvents()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
it('initializes recurly', function () {
|
|
|
|
cy.window().then(win => {
|
|
|
|
cy.spy(win.recurly, 'configure')
|
|
|
|
cy.spy(win.recurly.Pricing, 'Subscription')
|
|
|
|
})
|
|
|
|
|
|
|
|
cy.mount(<PaymentProvider publicKey="0000" />)
|
|
|
|
|
|
|
|
cy.window().then(win => {
|
|
|
|
expect(win.recurly.configure).to.be.calledOnce
|
|
|
|
expect(win.recurly.Pricing.Subscription).to.be.calledOnce
|
|
|
|
})
|
|
|
|
})
|
2023-03-01 04:33:10 -05:00
|
|
|
|
|
|
|
it('shows three d secure challenge content only once when changing currency', function () {
|
|
|
|
cy.intercept('POST', 'user/subscription/create', {
|
|
|
|
statusCode: 404,
|
|
|
|
body: {
|
|
|
|
threeDSecureActionTokenId: '123',
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
cy.mount(
|
|
|
|
<PaymentProvider publicKey="0000">
|
|
|
|
<PaymentPreviewPanel />
|
|
|
|
<CheckoutPanel />
|
|
|
|
</PaymentProvider>
|
|
|
|
)
|
|
|
|
cy.findByTestId('checkout-form').within(() => fillForm())
|
|
|
|
cy.findByRole('button', { name: /upgrade now/i }).click()
|
|
|
|
cy.findByRole('button', { name: /change currency/i }).click()
|
|
|
|
cy.findByRole('menu').within(() => {
|
|
|
|
cy.findByRole('menuitem', { name: /gbp/i }).click()
|
|
|
|
})
|
|
|
|
cy.findAllByText('3D challenge content').should('have.length', 1)
|
|
|
|
})
|
2023-02-28 05:04:44 -05:00
|
|
|
})
|