Files
2026-07-13 13:39:12 +08:00

72 lines
2.8 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import {
ObsidianAuthError,
ObsidianNotFoundError,
ObsidianServerError,
ObsidianTimeoutError,
} from "../../src/lib/obsidian/api.ts";
test("ObsidianAuthError has correct name", () => {
const err = new ObsidianAuthError("bad token");
assert.equal(err.name, "ObsidianAuthError");
assert.equal(err.message, "bad token");
});
test("ObsidianNotFoundError has correct name", () => {
const err = new ObsidianNotFoundError("not found");
assert.equal(err.name, "ObsidianNotFoundError");
});
test("ObsidianServerError has correct name", () => {
const err = new ObsidianServerError("server error");
assert.equal(err.name, "ObsidianServerError");
});
test("ObsidianTimeoutError has correct name", () => {
const err = new ObsidianTimeoutError("timed out");
assert.equal(err.name, "ObsidianTimeoutError");
});
test("createObsidianClient returns object with all 17 expected methods", async () => {
const { createObsidianClient } = await import("../../src/lib/obsidian/api.ts");
const client = createObsidianClient("test-token");
assert.equal(typeof client.checkStatus, "function");
assert.equal(typeof client.searchSimple, "function");
assert.equal(typeof client.searchStructured, "function");
assert.equal(typeof client.readNote, "function");
assert.equal(typeof client.listVault, "function");
assert.equal(typeof client.getDocumentMap, "function");
assert.equal(typeof client.getNoteMetadata, "function");
assert.equal(typeof client.getActiveFile, "function");
assert.equal(typeof client.getPeriodicNote, "function");
assert.equal(typeof client.getTags, "function");
assert.equal(typeof client.commandList, "function");
assert.equal(typeof client.writeNote, "function");
assert.equal(typeof client.appendNote, "function");
assert.equal(typeof client.patchNote, "function");
assert.equal(typeof client.deleteNote, "function");
assert.equal(typeof client.moveNote, "function");
assert.equal(typeof client.executeCommand, "function");
assert.equal(typeof client.openFile, "function");
});
test("createObsidianClient accepts optional baseUrl", async () => {
const { createObsidianClient } = await import("../../src/lib/obsidian/api.ts");
const defaultClient = createObsidianClient("test-token");
assert.ok(defaultClient);
const remoteClient = createObsidianClient("test-token", "http://100.64.0.1:27123");
assert.ok(remoteClient);
assert.equal(typeof remoteClient.checkStatus, "function");
});
test("createObsidianClient works with trailing-slash baseUrl", async () => {
const { createObsidianClient } = await import("../../src/lib/obsidian/api.ts");
const client = createObsidianClient("test-token", "http://100.64.0.1:27123/");
assert.ok(client);
assert.equal(typeof client.checkStatus, "function");
});