mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-08-15 08:05:44 +00:00
Use the packaged Commonlib type import and add regression coverage for every Obsidian vault and storage write method. Verify that fractional timestamps are floored without mutating caller-owned options.
33 lines
1.4 KiB
TypeScript
33 lines
1.4 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import type { App } from "obsidian";
|
|
import { ObsidianStorageAdapter } from "./ObsidianStorageAdapter";
|
|
|
|
describe("ObsidianStorageAdapter", () => {
|
|
it("floors write-option timestamps before calling Obsidian storage methods", async () => {
|
|
const write = vi.fn().mockResolvedValue(undefined);
|
|
const writeBinary = vi.fn().mockResolvedValue(undefined);
|
|
const append = vi.fn().mockResolvedValue(undefined);
|
|
const app = {
|
|
vault: {
|
|
adapter: {
|
|
write,
|
|
writeBinary,
|
|
append,
|
|
},
|
|
},
|
|
} as unknown as App;
|
|
const adapter = new ObsidianStorageAdapter(app);
|
|
const options = { ctime: 1778511180024.462, mtime: 1778511180999.913 };
|
|
const expectedOptions = { ctime: 1778511180024, mtime: 1778511180999 };
|
|
|
|
await adapter.write("note.md", "text", options);
|
|
await adapter.writeBinary("image.bin", new ArrayBuffer(0), options);
|
|
await adapter.append("log.md", "text", options);
|
|
|
|
expect(write).toHaveBeenCalledWith("note.md", "text", expectedOptions);
|
|
expect(writeBinary).toHaveBeenCalledWith("image.bin", expect.any(ArrayBuffer), expectedOptions);
|
|
expect(append).toHaveBeenCalledWith("log.md", "text", expectedOptions);
|
|
expect(options).toEqual({ ctime: 1778511180024.462, mtime: 1778511180999.913 });
|
|
});
|
|
});
|