UNPKG

@charisma-ai/react

Version:
75 lines (74 loc) 3.37 kB
import React from "react"; import { render, act } from "@testing-library/react"; import { describe, it, vi, expect, beforeEach } from "vitest"; import "@testing-library/jest-dom/vitest"; import { AudioManagerProvider, useAudioManager } from "./useAudioManager.js"; // Mock AudioManager class vi.mock("@charisma-ai/sdk", ()=>({ AudioManager: vi.fn(()=>({ initialise: vi.fn(), startListening: vi.fn(), stopListening: vi.fn(), connect: vi.fn(), resetTimeout: vi.fn(), playCharacterSpeech: vi.fn(), mediaAudioPlay: vi.fn(), mediaAudioSetVolume: vi.fn(), mediaAudioToggleMute: vi.fn(), mediaAudioStopAll: vi.fn(), browserIsSupported: vi.fn(()=>true) })) })); // Helper component to access context in tests const TestComponent = ()=>{ const { initialise, isListening, startListening, stopListening, connect, isBrowserSupported } = useAudioManager(); return /*#__PURE__*/ React.createElement("div", null, /*#__PURE__*/ React.createElement("button", { type: "button", onClick: initialise }, "Initialise"), /*#__PURE__*/ React.createElement("button", { type: "button", onClick: ()=>startListening() }, "Start Listening"), /*#__PURE__*/ React.createElement("button", { type: "button", onClick: stopListening }, "Stop Listening"), /*#__PURE__*/ React.createElement("button", { type: "button", onClick: ()=>connect("test-token", "test-session") }, "Connect"), /*#__PURE__*/ React.createElement("div", null, "Is Listening: ", isListening ? "Yes" : "No"), /*#__PURE__*/ React.createElement("div", null, "Is Browser Supported: ", isBrowserSupported ? "Yes" : "No")); }; describe("useAudioManager", ()=>{ beforeEach(()=>{ vi.clearAllMocks(); }); it("should initialise AudioManager and check browser support", ()=>{ const { getByText } = render(/*#__PURE__*/ React.createElement(AudioManagerProvider, { options: {} }, /*#__PURE__*/ React.createElement(TestComponent, null))); expect(getByText("Is Browser Supported: Yes")).toBeInTheDocument(); }); it("should start listening and set isListening to true", ()=>{ const { getByText } = render(/*#__PURE__*/ React.createElement(AudioManagerProvider, { options: {} }, /*#__PURE__*/ React.createElement(TestComponent, null))); const startButton = getByText("Start Listening"); act(()=>{ startButton.click(); }); expect(getByText("Is Listening: Yes")).toBeInTheDocument(); }); it("should stop listening and set isListening to false", ()=>{ const { getByText } = render(/*#__PURE__*/ React.createElement(AudioManagerProvider, { options: {} }, /*#__PURE__*/ React.createElement(TestComponent, null))); const startButton = getByText("Start Listening"); const stopButton = getByText("Stop Listening"); act(()=>{ startButton.click(); }); expect(getByText("Is Listening: Yes")).toBeInTheDocument(); act(()=>{ stopButton.click(); }); expect(getByText("Is Listening: No")).toBeInTheDocument(); }); });