Server IP : 172.67.158.161 / Your IP : 3.142.156.202 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/thread-self/root/home/giankuin/sieuthiweb.com.vn/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout/cart/test/ |
Upload File : |
/** * External dependencies */ import { render, screen, waitFor } from '@testing-library/react'; import { previewCart } from '@woocommerce/resource-previews'; import { dispatch } from '@wordpress/data'; import { CART_STORE_KEY as storeKey } from '@woocommerce/block-data'; /** * Internal dependencies */ import CartBlock from '../block'; import { defaultCartState } from '../../../../data/default-states'; describe( 'Testing cart', () => { beforeEach( async () => { fetchMock.mockResponse( ( req ) => { if ( req.url.match( /wc\/store\/cart/ ) ) { return Promise.resolve( JSON.stringify( previewCart ) ); } } ); // need to clear the store resolution state between tests. await dispatch( storeKey ).invalidateResolutionForStore(); await dispatch( storeKey ).receiveCart( defaultCartState ); } ); afterEach( () => { fetchMock.resetMocks(); } ); it( 'renders cart if there are items in the cart', async () => { render( <CartBlock emptyCart={ null } attributes={ { isShippingCalculatorEnabled: false, isShippingCostHidden: true, } } /> ); await waitFor( () => expect( fetchMock ).toHaveBeenCalled() ); expect( await screen.getByText( /Proceed to Checkout/i ) ).toBeInTheDocument(); /** * @todo Investigate extra POST request on initial cart render. * * We have an unfixed bug in our test in which the full cart triggers a POST * request to `wc/store/cart/update-item` causing the fetch to be called twice. */ expect( fetchMock ).toHaveBeenCalledTimes( 2 ); } ); it( 'renders empty cart if there are no items in the cart', async () => { fetchMock.mockResponse( ( req ) => { if ( req.url.match( /wc\/store\/cart/ ) ) { return Promise.resolve( JSON.stringify( defaultCartState ) ); } } ); render( <CartBlock emptyCart={ '<div>Empty Cart</div>' } attributes={ { isShippingCalculatorEnabled: false, isShippingCostHidden: true, } } /> ); await waitFor( () => expect( fetchMock ).toHaveBeenCalled() ); expect( await screen.getByText( /Empty Cart/i ) ).toBeInTheDocument(); expect( fetchMock ).toHaveBeenCalledTimes( 1 ); } ); } );