File "edit.js"
Full Path: /home/warrior1/public_html/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/test/edit.js
File size: 2.68 KB
MIME-type: text/html
Charset: utf-8
/**
* External dependencies
*/
import { render, findByRole, queryByText } from '@testing-library/react';
/**
* Internal dependencies
*/
import { Edit } from '../edit';
const blockSettingsMock = jest.requireMock( '@woocommerce/block-settings' );
jest.mock( '@wordpress/block-editor', () => ( {
...jest.requireActual( '@wordpress/block-editor' ),
useBlockProps: jest.fn(),
} ) );
jest.mock( '@woocommerce/block-settings', () => ( {
...jest.requireActual( '@woocommerce/block-settings' ),
PRIVACY_URL: '/privacy-policy',
TERMS_URL: '/terms-and-conditions',
} ) );
describe( 'Edit', () => {
it( 'Renders a checkbox if the checkbox attribute is true', async () => {
const { container } = render(
<Edit
attributes={ {
text: 'I agree to the terms and conditions',
checkbox: true,
} }
setAttributes={ () => void 0 }
/>
);
expect( await findByRole( container, 'checkbox' ) ).toBeTruthy();
} );
it( 'Renders a notice if either the terms and conditions or privacy url attribute are unset', async () => {
blockSettingsMock.PRIVACY_URL = '';
blockSettingsMock.TERMS_URL = '';
const { container } = render(
<Edit
attributes={ {
text: 'I agree to the terms and conditions',
checkbox: true,
} }
setAttributes={ () => void 0 }
/>
);
expect(
queryByText( container, 'Setup a Terms and Conditions page' )
).toBeInTheDocument();
expect(
queryByText( container, 'Setup a Privacy Policy page' )
).toBeInTheDocument();
expect(
queryByText(
container,
"You don't have any Terms and Conditions and/or Privacy Policy pages set up."
)
).toBeInTheDocument();
} );
it( 'Reminds users to set a URL for their terms and conditions if they are not in the terms textbox', () => {
blockSettingsMock.TERMS_URL = '/terms';
blockSettingsMock.PRIVACY_URL = '/privacy';
const { container } = render(
<Edit
attributes={ {
text: 'I agree to the terms and conditions',
checkbox: true,
} }
setAttributes={ () => void 0 }
/>
);
expect(
queryByText(
container,
'Ensure you add links to your policy pages in this section.'
)
).toBeInTheDocument();
} );
it( 'Shows no notices if the terms and privacy urls are set up and in the textbox', () => {
blockSettingsMock.TERMS_URL = '/terms';
blockSettingsMock.PRIVACY_URL = '/privacy';
const { container } = render(
<Edit
attributes={ {
text: 'I agree to the <a href="/terms">terms</a> and <a href="/privacy">privacy</a>',
checkbox: true,
} }
setAttributes={ () => void 0 }
/>
);
expect(
queryByText(
container,
'Ensure you add links to your policy pages in this section'
)
).not.toBeInTheDocument();
} );
} );