test(FN-4403): complete Step 3 — cover rooms/mobile footer behavior
Fusion-Task-Id: FN-4403 Fusion-Task-Lineage: 9bbfbed9-c40b-4ad2-a739-c8d93f9f691f
This commit is contained in:
@@ -247,6 +247,31 @@ describe("ChatView — rooms (FN-3805..FN-3811 contract)", () => {
|
|||||||
expect(selectRoom).toHaveBeenCalledWith("room-b");
|
expect(selectRoom).toHaveBeenCalledWith("room-b");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("shows Create room in mobile footer for Rooms scope and hides New Chat + rooms header", () => {
|
||||||
|
const viewportSpy = mockMobileViewport();
|
||||||
|
|
||||||
|
const { container } = render(<ChatView projectId="proj-123" addToast={vi.fn()} experimentalFeatures={{ chatRooms: true }} />);
|
||||||
|
|
||||||
|
const createRoomButton = screen.getByTestId("chat-create-room-btn");
|
||||||
|
expect(createRoomButton.closest(".chat-sidebar-footer")).toBeInTheDocument();
|
||||||
|
expect(screen.queryByTestId("chat-new-btn")).not.toBeInTheDocument();
|
||||||
|
expect(container.querySelector(".chat-sidebar-rooms-header")).not.toBeInTheDocument();
|
||||||
|
|
||||||
|
viewportSpy.mockRestore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("keeps Create room in rooms header on desktop and omits rooms footer", () => {
|
||||||
|
const viewportSpy = mockDesktopViewport();
|
||||||
|
|
||||||
|
const { container } = render(<ChatView projectId="proj-123" addToast={vi.fn()} experimentalFeatures={{ chatRooms: true }} />);
|
||||||
|
|
||||||
|
const createRoomButton = screen.getByTestId("chat-create-room-btn");
|
||||||
|
expect(createRoomButton.closest(".chat-sidebar-rooms-header")).toBeInTheDocument();
|
||||||
|
expect(container.querySelector(".chat-sidebar-footer")).not.toBeInTheDocument();
|
||||||
|
|
||||||
|
viewportSpy.mockRestore();
|
||||||
|
});
|
||||||
|
|
||||||
it.each([
|
it.each([
|
||||||
{ memberCount: 1, expectedText: "1 member" },
|
{ memberCount: 1, expectedText: "1 member" },
|
||||||
{ memberCount: 2, expectedText: "2 members" },
|
{ memberCount: 2, expectedText: "2 members" },
|
||||||
|
|||||||
@@ -2836,16 +2836,32 @@ describe("ChatView sidebar structure", () => {
|
|||||||
expect(screen.getByTestId("chat-new-btn")).toBeInTheDocument();
|
expect(screen.getByTestId("chat-new-btn")).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("renders mobile footer New Chat button", () => {
|
it("renders mobile footer New Chat button in Direct scope", () => {
|
||||||
setupMockChat({ sessions: [], filteredSessions: [] });
|
setupMockChat({ sessions: [], filteredSessions: [] });
|
||||||
|
const viewportSpy = mockViewportMode("mobile");
|
||||||
|
|
||||||
render(<ChatView projectId="proj-123" addToast={vi.fn()} />);
|
render(<ChatView projectId="proj-123" addToast={vi.fn()} />);
|
||||||
|
|
||||||
expect(screen.getByTestId("chat-new-btn")).toBeInTheDocument();
|
expect(screen.getByTestId("chat-new-btn")).toBeInTheDocument();
|
||||||
|
|
||||||
|
viewportSpy.mockRestore();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("opens new chat dialog when clicking mobile footer New Chat button", async () => {
|
it("hides mobile footer New Chat button in Rooms scope", async () => {
|
||||||
setupMockChat({ sessions: [], filteredSessions: [] });
|
setupMockChat({ sessions: [], filteredSessions: [] });
|
||||||
|
const viewportSpy = mockViewportMode("mobile");
|
||||||
|
|
||||||
|
render(<ChatView projectId="proj-123" addToast={vi.fn()} experimentalFeatures={{ chatRooms: true }} />);
|
||||||
|
|
||||||
|
await userEvent.click(screen.getByTestId("chat-sidebar-scope-rooms"));
|
||||||
|
expect(screen.queryByTestId("chat-new-btn")).not.toBeInTheDocument();
|
||||||
|
|
||||||
|
viewportSpy.mockRestore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("opens new chat dialog when clicking mobile footer New Chat button in Direct scope", async () => {
|
||||||
|
setupMockChat({ sessions: [], filteredSessions: [] });
|
||||||
|
const viewportSpy = mockViewportMode("mobile");
|
||||||
|
|
||||||
render(<ChatView projectId="proj-123" addToast={vi.fn()} />);
|
render(<ChatView projectId="proj-123" addToast={vi.fn()} />);
|
||||||
|
|
||||||
@@ -2853,6 +2869,8 @@ describe("ChatView sidebar structure", () => {
|
|||||||
|
|
||||||
const dialog = document.querySelector(".chat-new-dialog") as HTMLElement | null;
|
const dialog = document.querySelector(".chat-new-dialog") as HTMLElement | null;
|
||||||
expect(dialog).toBeInTheDocument();
|
expect(dialog).toBeInTheDocument();
|
||||||
|
|
||||||
|
viewportSpy.mockRestore();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("session list has both chat-session-list and chat-sidebar-list classes", () => {
|
it("session list has both chat-session-list and chat-sidebar-list classes", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user