import { describe, expect, it } from "vitest";
import {
  COURSE_HERO_WEEKLY_TIME_VALUES,
  normalizeWeeklyTimeValue,
} from "@/components/page-blocks/course-hero/defaultContent";
import { normalizeCourseHeroContent } from "@/components/page-blocks/course-hero/normalizeContent";

describe("courseHero defaults", () => {
  it("includes all business-rule weekly time values", () => {
    for (const value of [
      "25 minutes",
      "45 minutes",
      "90 minutes",
      "120 minutes",
      "225 minutes",
      "Integrated across subjects",
    ]) {
      expect(COURSE_HERO_WEEKLY_TIME_VALUES).toContain(value);
    }
  });

  it("normalizes numeric weekly time input to labeled minutes", () => {
    expect(normalizeWeeklyTimeValue("225 min")).toBe("225 minutes");
    expect(normalizeWeeklyTimeValue("45 minutes")).toBe("45 minutes");
  });
});

describe("normalizeCourseHeroContent", () => {
  it("replaces legacy Course Name default with {subject}", () => {
    const normalized = normalizeCourseHeroContent({ name: "Course Name" });
    expect(normalized.name).toBe("{subject}");
  });

  it("replaces stale Science name when page course differs", () => {
    const normalized = normalizeCourseHeroContent(
      { name: "Science" },
      { subject: "Mathematics", course_name: "Mathematics" }
    );
    expect(normalized.name).toBe("{subject}");
  });

  it("keeps Science name when page course is Science", () => {
    const normalized = normalizeCourseHeroContent(
      { name: "Science" },
      { subject: "Science", course_name: "Science" }
    );
    expect(normalized.name).toBe("Science");
  });
});
