/**
 * Unit tests for the auth server actions in src/actions/auth-actions.ts.
 *
 * Mocks `@/lib/auth` to test the action wrappers in isolation from the
 * network and the Auth.js runtime.
 */

import { describe, it, expect, vi, beforeEach } from "vitest";

const signOutMock = vi.fn();

vi.mock("@/lib/auth", () => ({
  signOut: signOutMock,
}));

// `server-only` is a runtime guard that throws if imported outside a
// server context. Vitest is a Node env, so the guard fires — stub it.
vi.mock("server-only", () => ({}));

// Import after mocks.
const { signOutAction } = await import("@/actions/auth-actions");

beforeEach(() => {
  signOutMock.mockReset();
});

describe("signOutAction", () => {
  it("calls signOut and redirects to login", async () => {
    signOutMock.mockResolvedValue(undefined);
    // Note: signOutAction calls redirect() which throws in test context
    // We just verify signOut was called
    try {
      await signOutAction();
    } catch {
      // Expected - redirect() throws
    }
    expect(signOutMock).toHaveBeenCalled();
  });
});
