/** * External dependencies */ import { render, screen } from '@testing-library/react'; import { recordEvent } from '@woocommerce/tracks'; /** * Internal dependencies */ import WooCommerceServicesItem from '../experimental-woocommerce-services-item'; jest.mock( '@woocommerce/tracks', () => ( { ...jest.requireActual( '@woocommerce/tracks' ), recordEvent: jest.fn(), } ) ); jest.mock( '@woocommerce/admin-layout', () => { const mockContext = { layoutPath: [ 'root' ], layoutString: 'root', extendLayout: () => {}, isDescendantOf: () => false, }; return { ...jest.requireActual( '@woocommerce/admin-layout' ), useLayoutContext: jest.fn().mockReturnValue( mockContext ), useExtendLayout: jest.fn().mockReturnValue( mockContext ), }; } ); describe( 'WooCommerceServicesItem', () => { it( 'should render WCS item with CTA = "Get started" when WCS is not installed', () => { render( ); expect( screen.queryByText( 'WooCommerce Shipping' ) ).toBeInTheDocument(); expect( screen.queryByRole( 'button', { name: 'Get started' } ) ).toBeInTheDocument(); } ); it( 'should render WCS item with CTA = "Activate" when WCS is installed', () => { render( ); expect( screen.queryByText( 'WooCommerce Shipping' ) ).toBeInTheDocument(); expect( screen.queryByRole( 'button', { name: 'Activate' } ) ).toBeInTheDocument(); } ); it( 'should record track when clicking setup button', () => { render( ); screen.queryByRole( 'button', { name: 'Get started' } )?.click(); expect( recordEvent ).toHaveBeenCalledWith( 'tasklist_click', { context: 'root/wc-settings', task_name: 'shipping-recommendation', } ); } ); } );