// @vitest-environment jsdom

import { act, renderHook } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import type { ExecutionEvent } from "@/lib/sync/execution/types";
import { useBumpFlow } from "./use-bump-flow";

describe("useBumpFlow", () => {
  it("exposes initial flow state", () => {
    const { result } = renderHook(() => useBumpFlow());

    expect(result.current.step).toBe("component");
    expect(result.current.previewing).toBe(false);
    expect(result.current.bumping).toBe(false);
    expect(result.current.progress).toEqual([]);
  });

  it("updates state via action helpers", () => {
    const event: ExecutionEvent = {
      step: "precheck",
      status: "running",
      message: "Checking",
      at: "2026-05-27T00:00:00.000Z",
    };

    const { result } = renderHook(() => useBumpFlow());

    act(() => {
      result.current.setStep("preview");
      result.current.setPreviewing(true);
      result.current.setBumping(true);
      result.current.appendProgress(event);
    });

    expect(result.current.step).toBe("preview");
    expect(result.current.previewing).toBe(true);
    expect(result.current.bumping).toBe(true);
    expect(result.current.progress).toEqual([event]);

    act(() => {
      result.current.resetProgress();
    });

    expect(result.current.progress).toEqual([]);
  });
});
