import * as React from "react"; import { render, screen, fireEvent, cleanup, waitFor, } from "@testing-library/react"; import SectionPreview from "./SectionPreview"; import { HeaderLayouts } from "@sc/plugins/misc/v2/blocks/weblayouts/Headers/types"; const props = { label: HeaderLayouts.ONE, layout: HeaderLayouts.ONE, onAddSection: (layout) => console.log(layout), }; const testId = "Blocks-AddSectionsTab-SectionPreview"; describe("Rendering --> Tests", () => { afterEach(cleanup); it(`Should render in the dom`, () => { render(); expect(screen.queryByTestId(testId)).toBeTruthy(); }); test.skip(`Should auto generate an image based on the LayoutType passed in the props`, () => {}); it(`Should show the previewImage (instead of the auto-generated image) when one is provided in the previewImage props`, () => { const image = "https://images.unsplash.com/photo-1590076225577-6026a68fea4d"; render(); expect(screen.queryByTestId(testId).querySelector("img").src).toBe(image); }); }); describe("Events --> Tests", () => { afterEach(cleanup); it(`Should trigger the onAddSection event when the [add to page] button is clicked`, () => { const onAddSection = jest.fn(); const { container } = render( ); fireEvent.mouseEnter(screen.getByTestId(testId)); waitFor( () => { fireEvent.click(screen.getByText("Add To Page")); }, { container: screen.getByText("Add To Page") } ); expect(onAddSection).toBeCalled(); }); it(`Should receive the LayoutType when the onAddSection event is triggered`, () => { const onAddSection = jest.fn(); render(); fireEvent.mouseEnter(screen.getByTestId(testId)); waitFor( () => { fireEvent.click(screen.getByText("Add To Page")); }, { container: screen.getByText("Add To Page") } ); expect(onAddSection.mock.calls[0][0]).toBe(HeaderLayouts.ONE); }); }); describe("Methods --> Tests", () => { afterEach(cleanup); test.skip(`Should show a popup window with the actual layout displaying when the [preview] button is clicked`, () => { render(); fireEvent.mouseEnter(screen.getByTestId(testId)); expect( screen.queryByTestId("Blocks-AddSectionsTab-SectionPreview-Preview") ).toBeNull(); waitFor( () => { fireEvent.click(screen.getByTestId("preview-icon")); }, { container: screen.getByTestId("preview-icon") } ); expect( screen.queryByTestId("Blocks-AddSectionsTab-SectionPreview-Preview") ).toBeTruthy(); }); });