import { describe, expect, test } from "vitest";
import { getDefaultLocalSettings } from "../src/settings/Settings";
import { resolveTocTitle } from "../src/settings/localTocSettings";

describe("resolveTocTitle", () => {
    test("prefers local title settings over global settings", () => {
        const local = getDefaultLocalSettings();
        local.title.name = "Local TOC";
        local.title.level = 2;
        local.title.center = true;

        const title = resolveTocTitle(local, { tocTitle: "Global TOC", tocTitleLevel: 1, tocTitleCentered: false });

        expect(title).toEqual({ text: "Local TOC", level: 2, centered: true, usesGlobalCentering: false });
    });

    test("falls back to global settings when local values are null", () => {
        const local = getDefaultLocalSettings();

        const title = resolveTocTitle(local, { tocTitle: "Global TOC", tocTitleLevel: 3, tocTitleCentered: true });

        expect(title).toEqual({ text: "Global TOC", level: 3, centered: true, usesGlobalCentering: true });
    });

    test("preserves a local false centering override instead of falling back to global", () => {
        const local = getDefaultLocalSettings();
        local.title.center = false;

        const title = resolveTocTitle(local, { tocTitle: "Global TOC", tocTitleLevel: 3, tocTitleCentered: true });

        expect(title).toEqual({ text: "Global TOC", level: 3, centered: false, usesGlobalCentering: false });
    });

    test("returns null when title text is blank", () => {
        const local = getDefaultLocalSettings();
        local.title.name = "";

        const title = resolveTocTitle(local, { tocTitle: "Global TOC", tocTitleLevel: 1, tocTitleCentered: false });

        expect(title).toBeNull();
    });
});
