import { beforeEach, describe, expect, it, vi } from "vitest";
import { SystemRole } from "@capakraken/shared";

import {
  createToolContext,
  executeTool,
  getDashboardSkillGapSummary,
} from "./assistant-tools-dashboard-test-helpers.js";

describe("assistant dashboard tools skill gaps", () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  it("routes skill gap reads through the dashboard router path", async () => {
    vi.mocked(getDashboardSkillGapSummary).mockResolvedValue({
      roleGaps: [
        { role: "Pipeline TD", needed: 4, filled: 1, gap: 3, fillRate: 25 },
      ],
      totalOpenPositions: 3,
      skillSupplyTop10: [{ skill: "houdini", resourceCount: 5 }],
      resourcesByRole: [{ role: "Pipeline TD", count: 2 }],
    });

    const ctx = createToolContext({}, { userRole: SystemRole.CONTROLLER });
    const result = await executeTool("get_skill_gaps", "{}", ctx);

    expect(getDashboardSkillGapSummary).toHaveBeenCalledTimes(1);
    expect(JSON.parse(result.content)).toEqual({
      roleGaps: [
        { role: "Pipeline TD", needed: 4, filled: 1, gap: 3, fillRate: 25 },
      ],
      totalOpenPositions: 3,
      skillSupplyTop10: [{ skill: "houdini", resourceCount: 5 }],
      resourcesByRole: [{ role: "Pipeline TD", count: 2 }],
    });
  });
});
