import { describe, expect, it, vi } from "vitest" import { useAudioStore } from "../store/audioStore" vi.mock("../services/api", () => ({ fetchChannels: vi.fn(), fetchStream: vi.fn(), })) describe("audioStore", () => { it("initializes with default state", () => { const state = useAudioStore.getState() expect(state.channels).toEqual([]) expect(state.currentChannel).toBeNull() expect(state.streamUrl).toBeNull() expect(state.isPlaying).toBe(false) expect(state.volume).toBe(0.7) expect(state.isLoading).toBe(false) expect(state.error).toBeNull() expect(state.favorites).toEqual([]) }) it("sets channels", () => { useAudioStore.getState().setChannels([ { id: "UC1", name: "Test", handle: "", description: "", isLive: true, videoId: "v1" }, ]) expect(useAudioStore.getState().channels).toHaveLength(1) }) it("sets current channel and clears stream URL", () => { useAudioStore.getState().setStreamUrl("https://old.m3u8") useAudioStore.getState().setCurrentChannel({ id: "UC1", name: "Test", handle: "", description: "", isLive: true, videoId: "v1", }) expect(useAudioStore.getState().currentChannel).not.toBeNull() expect(useAudioStore.getState().streamUrl).toBeNull() }) it("manages favorites", () => { useAudioStore.getState().addFavorite("UC1") expect(useAudioStore.getState().isFavorite("UC1")).toBe(true) useAudioStore.getState().removeFavorite("UC1") expect(useAudioStore.getState().isFavorite("UC1")).toBe(false) }) it("does not duplicate favorites", () => { useAudioStore.getState().addFavorite("UC1") useAudioStore.getState().addFavorite("UC1") expect(useAudioStore.getState().favorites.filter((f) => f === "UC1")).toHaveLength(1) }) it("sets volume", () => { useAudioStore.getState().setVolume(0.5) expect(useAudioStore.getState().volume).toBe(0.5) }) it("sets loading state", () => { useAudioStore.getState().setLoading(true) expect(useAudioStore.getState().isLoading).toBe(true) useAudioStore.getState().setLoading(false) expect(useAudioStore.getState().isLoading).toBe(false) }) it("sets error", () => { useAudioStore.getState().setError("Test error") expect(useAudioStore.getState().error).toBe("Test error") useAudioStore.getState().setError(null) expect(useAudioStore.getState().error).toBeNull() }) })