/* Copyright 2024 New Vector Ltd. Copyright 2023 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ import React from "react"; import { fireEvent, render } from "@testing-library/react"; import MainSplit from "../../../src/components/structures/MainSplit"; import ResizeNotifier from "../../../src/utils/ResizeNotifier"; import { PosthogAnalytics } from "../../../src/PosthogAnalytics.ts"; describe("", () => { const resizeNotifier = new ResizeNotifier(); const children = (
ChildFooBar
); const panel =
Right panel
; beforeEach(() => { localStorage.clear(); }); it("renders", () => { const { asFragment, container } = render( , ); expect(asFragment()).toMatchSnapshot(); // Assert it matches the default width of 320 expect(container.querySelector(".mx_RightPanel_ResizeWrapper")!.style.width).toBe("320px"); }); it("respects defaultSize prop", () => { const { asFragment, container } = render( , ); expect(asFragment()).toMatchSnapshot(); // Assert it matches the default width of 350 expect(container.querySelector(".mx_RightPanel_ResizeWrapper")!.style.width).toBe("500px"); }); it("prefers size stashed in LocalStorage to the defaultSize prop", () => { localStorage.setItem("mx_rhs_size_thread", "333"); const { container } = render( , ); expect(container.querySelector(".mx_RightPanel_ResizeWrapper")!.style.width).toBe("333px"); }); it("should report to analytics on resize stop", () => { const { container } = render( , ); const spy = jest.spyOn(PosthogAnalytics.instance, "trackEvent"); const handle = container.querySelector(".mx_ResizeHandle--horizontal")!; fireEvent.mouseDown(handle); fireEvent.mouseMove(handle, { clientX: 0 }); fireEvent.mouseUp(handle); expect(spy).toHaveBeenCalledWith({ eventName: "WebPanelResize", panel: "right", roomType: "other_room", size: 400, }); }); });