import { describe, expect, it, vi } from "vitest";
import { createFlowOverlayState, stopFlowAnimation } from "./flow-overlay";

describe("flow overlay lifecycle", () => {
  it("starts empty so conduit data can be loaded once per map session", () => {
    expect(createFlowOverlayState()).toEqual({ data: null, animationFrameId: null, overlay: null });
  });

  it("cancels an active animation frame without clearing cached data", () => {
    const cancelAnimationFrame = vi.fn();
    vi.stubGlobal("window", { cancelAnimationFrame });
    const state = createFlowOverlayState();
    state.data = [];
    state.animationFrameId = 42;
    stopFlowAnimation(state);
    expect(cancelAnimationFrame).toHaveBeenCalledWith(42);
    expect(state.animationFrameId).toBeNull();
    expect(state.data).toBeTruthy();
    vi.unstubAllGlobals();
  });
});
