125 lines
2.6 KiB
TypeScript
125 lines
2.6 KiB
TypeScript
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
/**
|
|
* External dependencies
|
|
*/
|
|
import { render, screen } from '@testing-library/react';
|
|
import { recordEvent } from '@woocommerce/tracks';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { Transitional } from '../index';
|
|
|
|
jest.mock( '../mshots-image', () => ( {
|
|
__esModule: true,
|
|
MShotsImage: () => {
|
|
return <img alt="preview-img" />;
|
|
},
|
|
} ) );
|
|
|
|
jest.mock( '../../assembler-hub/site-hub', () => ( {
|
|
__esModule: true,
|
|
SiteHub: () => {
|
|
return <div />;
|
|
},
|
|
} ) );
|
|
|
|
jest.mock( '@woocommerce/tracks', () => ( { recordEvent: jest.fn() } ) );
|
|
|
|
describe( 'Transitional', () => {
|
|
let props: {
|
|
sendEvent: jest.Mock;
|
|
};
|
|
|
|
beforeEach( () => {
|
|
props = {
|
|
sendEvent: jest.fn(),
|
|
};
|
|
} );
|
|
|
|
it( 'should render Transitional page', () => {
|
|
// @ts-ignore
|
|
render( <Transitional { ...props } /> );
|
|
|
|
expect(
|
|
screen.getByText( /Your store looks great!/i )
|
|
).toBeInTheDocument();
|
|
|
|
expect( screen.getByRole( 'img' ) ).toBeInTheDocument();
|
|
|
|
expect(
|
|
screen.getByRole( 'button', {
|
|
name: /Preview store/i,
|
|
} )
|
|
).toBeInTheDocument();
|
|
|
|
expect(
|
|
screen.getByRole( 'button', {
|
|
name: /Go to the Editor/i,
|
|
} )
|
|
).toBeInTheDocument();
|
|
|
|
expect(
|
|
screen.getByRole( 'button', {
|
|
name: /Back to Home/i,
|
|
} )
|
|
).toBeInTheDocument();
|
|
} );
|
|
|
|
it( 'should record an event when clicking on "Preview store" button', () => {
|
|
window.open = jest.fn();
|
|
// @ts-ignore
|
|
render( <Transitional { ...props } /> );
|
|
|
|
screen
|
|
.getByRole( 'button', {
|
|
name: /Preview store/i,
|
|
} )
|
|
.click();
|
|
|
|
expect( recordEvent ).toHaveBeenCalledWith(
|
|
'customize_your_store_transitional_preview_store_click'
|
|
);
|
|
} );
|
|
|
|
it( 'should record an event when clicking on "Go to the Editor" button', () => {
|
|
// @ts-ignore Mocking window location
|
|
delete window.location;
|
|
window.location = {
|
|
// @ts-ignore Mocking window location href
|
|
href: jest.fn(),
|
|
};
|
|
|
|
// @ts-ignore
|
|
render( <Transitional { ...props } /> );
|
|
|
|
screen
|
|
.getByRole( 'button', {
|
|
name: /Go to the Editor/i,
|
|
} )
|
|
.click();
|
|
|
|
expect( recordEvent ).toHaveBeenCalledWith(
|
|
'customize_your_store_transitional_editor_click'
|
|
);
|
|
} );
|
|
|
|
it( 'should send GO_BACK_TO_HOME event when clicking on "Back to Home" button', () => {
|
|
// @ts-ignore
|
|
render( <Transitional { ...props } /> );
|
|
|
|
screen
|
|
.getByRole( 'button', {
|
|
name: /Back to Home/i,
|
|
} )
|
|
.click();
|
|
|
|
expect( props.sendEvent ).toHaveBeenCalledWith( {
|
|
type: 'GO_BACK_TO_HOME',
|
|
} );
|
|
expect( recordEvent ).toHaveBeenCalledWith(
|
|
'customize_your_store_transitional_home_click'
|
|
);
|
|
} );
|
|
} );
|