insta-toc
Version:
Simultaneously generate, update, and maintain a table of contents for your notes in real time.
43 lines (30 loc) • 1.77 kB
text/typescript
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();
});
});