Emdash source with visual editor image upload fix

Fixes:
1. media.ts: wrap placeholder generation in try-catch
2. toolbar.ts: check r.ok, display error message in popover
This commit is contained in:
2026-05-03 10:44:54 +07:00
parent 78f81bebb6
commit 2d1be52177
2352 changed files with 662964 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import { describe, expect, it } from "vitest";
import {
fromDatetimeLocalInputValue,
toDatetimeLocalInputValue,
} from "../../src/lib/datetime-local";
describe("toDatetimeLocalInputValue", () => {
it("returns empty for non-string and empty values", () => {
expect(toDatetimeLocalInputValue(undefined)).toBe("");
expect(toDatetimeLocalInputValue(null)).toBe("");
expect(toDatetimeLocalInputValue(0)).toBe("");
expect(toDatetimeLocalInputValue("")).toBe("");
});
it("strips seconds/ms/Z from full ISO 8601", () => {
expect(toDatetimeLocalInputValue("2026-02-26T09:30:00.000Z")).toBe("2026-02-26T09:30");
});
it("pads date-only values to UTC midnight", () => {
expect(toDatetimeLocalInputValue("2026-02-26")).toBe("2026-02-26T00:00");
});
it("preserves a value already in datetime-local shape", () => {
expect(toDatetimeLocalInputValue("2026-02-26T09:30")).toBe("2026-02-26T09:30");
});
});
describe("fromDatetimeLocalInputValue", () => {
it("returns empty for empty input", () => {
expect(fromDatetimeLocalInputValue("")).toBe("");
});
it("appends seconds/ms/Z so the value matches the validator's ISO shape", () => {
expect(fromDatetimeLocalInputValue("2026-02-26T09:30")).toBe("2026-02-26T09:30:00.000Z");
});
it("round-trips a stored ISO value without drift", () => {
const stored = "2026-02-26T09:30:00.000Z";
expect(fromDatetimeLocalInputValue(toDatetimeLocalInputValue(stored))).toBe(stored);
});
});