76 lines
2.4 KiB
TypeScript
76 lines
2.4 KiB
TypeScript
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()
|
|
})
|
|
}) |