Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.9 kB · 72 lines
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273import { describe, expect, it } from "vitest";import { chatOpenAfterLivenessChange, chatPreferenceKey, shouldOpenChat,} from "./chat-preference";
describe("chat preference", () => { it("only persists the desktop preference", () => { expect(chatPreferenceKey(true)).toBe("streamplace:chat-open"); expect(chatPreferenceKey(false)).toBeNull(); });
it("opens live chat by default", () => { expect(shouldOpenChat(false, null)).toBe(true); });
it("respects an explicit closed preference while live", () => { expect(shouldOpenChat(false, "false")).toBe(false); });
it("keeps chat closed while offline", () => { expect(shouldOpenChat(true, null)).toBe(false); expect(shouldOpenChat(true, "true")).toBe(false); });
it("restores the intended chat state after a false-offline startup", () => { expect( chatOpenAfterLivenessChange({ isOffline: false, wasOffline: true, userChangedChat: false, preferredChatOpen: true, currentChatOpen: false, }), ).toBe(true);
expect( chatOpenAfterLivenessChange({ isOffline: false, wasOffline: true, userChangedChat: false, preferredChatOpen: false, currentChatOpen: false, }), ).toBe(false); });
it("does not override a viewer's choice during the visit", () => { expect( chatOpenAfterLivenessChange({ isOffline: false, wasOffline: true, userChangedChat: true, preferredChatOpen: true, currentChatOpen: false, }), ).toBe(false); });
it("closes chat when a live stream goes offline", () => { expect( chatOpenAfterLivenessChange({ isOffline: true, wasOffline: false, userChangedChat: false, preferredChatOpen: true, currentChatOpen: true, }), ).toBe(false); });});