import { describe, expect, it } from "vitest";
import { mergeBlockContentWithDefaults } from "./mergeBlockContent";

const libraryDefaults = {
  showNav: true,
  navPrevLabel: "",
  navPrevHref: "",
  navCenterLabel: "Overview",
  navCenterHref: "/",
  navNextLabel: "Q2: The Data Scientist",
  navNextHref: "/quarter/2",
  color: "moss",
};

describe("mergeBlockContentWithDefaults — bottom navigation", () => {
  it("keeps intentionally cleared Next fields instead of restoring library defaults", () => {
    const merged = mergeBlockContentWithDefaults(
      {
        navPrevLabel: "Q3: The Young Engineer",
        navPrevHref: "/quarter/3",
        navNextLabel: "",
        navNextHref: "",
      },
      libraryDefaults,
      "how-each-course-sees"
    );

    expect(merged.navPrevLabel).toBe("Q3: The Young Engineer");
    expect(merged.navPrevHref).toBe("/quarter/3");
    expect(merged.navNextLabel).toBe("");
    expect(merged.navNextHref).toBe("");
    // Center still comes from library when not overridden
    expect(merged.navCenterLabel).toBe("Overview");
  });

  it("persists updated Next values over library defaults", () => {
    const merged = mergeBlockContentWithDefaults(
      {
        navNextLabel: "Q3: The Young Engineer",
        navNextHref: "/quarter/3",
      },
      libraryDefaults,
      "quarter-courses-and-learning"
    );

    expect(merged.navNextLabel).toBe("Q3: The Young Engineer");
    expect(merged.navNextHref).toBe("/quarter/3");
  });

  it("allows clearing Previous while keeping Next", () => {
    const merged = mergeBlockContentWithDefaults(
      {
        navPrevLabel: "",
        navPrevHref: "",
        navNextLabel: "Q2: The Data Scientist",
        navNextHref: "/quarter/2",
      },
      libraryDefaults,
      "how-each-course-sees"
    );

    expect(merged.navPrevLabel).toBe("");
    expect(merged.navPrevHref).toBe("");
    expect(merged.navNextLabel).toBe("Q2: The Data Scientist");
    expect(merged.navNextHref).toBe("/quarter/2");
  });

  it("allows clearing Center Overview", () => {
    const merged = mergeBlockContentWithDefaults(
      {
        navCenterLabel: "",
        navCenterHref: "",
        navPrevLabel: "Q1",
        navPrevHref: "/quarter/1",
      },
      libraryDefaults,
      "how-each-course-sees"
    );

    expect(merged.navCenterLabel).toBe("");
    expect(merged.navCenterHref).toBe("");
  });

  it("still uses library Next when page never set the keys", () => {
    const merged = mergeBlockContentWithDefaults(
      { color: "valencia" },
      libraryDefaults,
      "how-each-course-sees"
    );

    expect(merged.navNextLabel).toBe("Q2: The Data Scientist");
    expect(merged.navNextHref).toBe("/quarter/2");
  });
});
