diff --git a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/local-footer.spec.tsx b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/local-footer.spec.tsx new file mode 100644 index 000000000000..5f6c2669c77f --- /dev/null +++ b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/local-footer.spec.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { isMobile } from '@deriv/shared'; +import { mockStore, StoreProvider } from '@deriv/stores'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { render, screen } from '@testing-library/react'; +// eslint-disable-next-line import/no-extraneous-dependencies +import userEvent from '@testing-library/user-event'; +import { mock_ws } from 'Utils/mock'; +import RootStore from 'Stores/root-store'; +import { DBotStoreProvider, mockDBotStore } from 'Stores/useDBotStore'; +import LocalFooter from '../local-footer'; + +jest.mock('@deriv/shared', () => ({ + ...jest.requireActual('@deriv/shared'), + isMobile: jest.fn(), +})); + +jest.mock('@deriv/bot-skeleton/src/scratch/blockly', () => jest.fn()); +jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ + saveRecentWorkspace: jest.fn(), + unHighlightAllBlocks: jest.fn(), +})); +jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); + +describe('LocalFooter', () => { + let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element, mock_DBot_store: RootStore | undefined; + + beforeAll(() => { + const mock_store = mockStore({}); + mock_DBot_store = mockDBotStore(mock_store, mock_ws); + + wrapper = ({ children }: { children: JSX.Element }) => ( + + + {children} + + + ); + }); + + it('should render LocalFooter', () => { + const { container } = render(, { wrapper }); + expect(container).toBeInTheDocument(); + }); + + it('should open modal on click open button', async () => { + render(, { wrapper }); + const open_button = screen.getByText('Open'); + await userEvent.click(open_button); + expect(mock_DBot_store?.load_modal?.is_load_modal_open).toBeTruthy(); + }); + + it('should render cancel button on mobile', () => { + (isMobile as jest.Mock).mockReturnValueOnce(true); + render(, { wrapper }); + expect(screen.getByText('Cancel')).toBeInTheDocument(); + }); + + it('should reset local file on cancel button click', async () => { + (isMobile as jest.Mock).mockReturnValueOnce(true); + render(, { wrapper }); + const cancel_button = screen.getByText('Cancel'); + await userEvent.click(cancel_button); + expect(mock_DBot_store?.load_modal?.loaded_local_file).toBeNull(); + }); +});