| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- import StartFreeTrialButton from '../../../../frontend/js/shared/components/start-free-trial-button'
- import getMeta from '@/utils/meta'
- import { SplitTestProvider } from '@/shared/context/split-test-context'
- describe('start free trial button', function () {
- beforeEach(function () {
- cy.intercept('POST', '/event/paywall-prompt', {
- statusCode: 204,
- }).as('event-paywall-prompt')
- cy.intercept('POST', '/event/paywall-click', {
- statusCode: 204,
- }).as('event-paywall-click')
- getMeta('ol-ExposedSettings').isOverleaf = true
- })
- it('renders the button with custom text', function () {
- cy.mount(
- <SplitTestProvider>
- <StartFreeTrialButton source="cypress-test">
- Some Custom Text
- </StartFreeTrialButton>
- </SplitTestProvider>
- )
- cy.wait('@event-paywall-prompt')
- .its('request.body.paywall-type')
- .should('eq', 'cypress-test')
- cy.get('button').contains('Some Custom Text')
- })
- it('renders the button with styled button', function () {
- cy.mount(
- <SplitTestProvider>
- <StartFreeTrialButton
- source="cypress-test"
- buttonProps={{
- variant: 'danger',
- size: 'lg',
- }}
- >
- Start free trial
- </StartFreeTrialButton>
- </SplitTestProvider>
- )
- cy.wait('@event-paywall-prompt')
- cy.get('button.btn.btn-danger.btn-lg').contains('Start free trial')
- })
- it('renders the button with custom class', function () {
- cy.mount(
- <SplitTestProvider>
- <StartFreeTrialButton
- source="cypress-test"
- buttonProps={{ className: 'ct-test-class' }}
- >
- Start free trial
- </StartFreeTrialButton>
- </SplitTestProvider>
- )
- cy.wait('@event-paywall-prompt')
- .its('request.body.paywall-type')
- .should('eq', 'cypress-test')
- cy.get('.ct-test-class').contains('Start free trial')
- })
- it('calls onClick callback and opens a new tab to the subscription page on click', function () {
- const onClickStub = cy.stub()
- cy.mount(
- <SplitTestProvider>
- <StartFreeTrialButton source="cypress-test" handleClick={onClickStub}>
- Start free trial
- </StartFreeTrialButton>
- </SplitTestProvider>
- )
- cy.wait('@event-paywall-prompt')
- cy.window().then(win => {
- cy.stub(win, 'open').as('Open')
- })
- cy.get('button.btn').contains('Start free trial').click()
- cy.wrap(null).then(() => {
- cy.wait('@event-paywall-click')
- .its('request.body.paywall-type')
- .should('eq', 'cypress-test')
- cy.get('@Open').should(
- 'have.been.calledOnceWithExactly',
- '/user/subscription/choose-your-plan?itm_campaign=cypress-test&paywall-type=cypress-test'
- )
- expect(onClickStub).to.be.called
- })
- })
- })
|