__tests__ / config.test.ts
import { describe, it, expect } from "vitest";
import { homedir } from "os";
import { join, isAbsolute } from "path";
import { expandHome, resolveDatabasePath, configSchematics, DEFAULT_DATABASE_PATH } from "../src/config";
describe("expandHome", () => {
it("expands a bare '~' to the home directory", () => {
expect(expandHome("~")).toBe(homedir());
});
it("expands a leading '~/' to the home directory", () => {
expect(expandHome("~/notes/brain.db")).toBe(join(homedir(), "notes/brain.db"));
});
it("leaves a '~' not followed by a separator unchanged", () => {
expect(expandHome("~backup.db")).toBe("~backup.db");
});
it("leaves absolute paths unchanged", () => {
expect(expandHome("/var/data/brain.db")).toBe("/var/data/brain.db");
});
});
describe("resolveDatabasePath", () => {
it("expands '~' and returns an absolute path", () => {
const result = resolveDatabasePath("~/brain/finance.db");
expect(isAbsolute(result)).toBe(true);
expect(result).toBe(join(homedir(), "brain/finance.db"));
});
it("resolves a relative path to an absolute one", () => {
const result = resolveDatabasePath("finance.db");
expect(isAbsolute(result)).toBe(true);
});
it("leaves an already-absolute path unchanged", () => {
expect(resolveDatabasePath("/var/data/finance.db")).toBe("/var/data/finance.db");
});
});
describe("configSchematics", () => {
// NOTE: The installed @lmstudio/sdk@1.4.0 type definitions expose
// `ConfigSchematics` as a fully opaque, branded interface (see
// node_modules/@lmstudio/sdk/dist/index.d.ts around line 1469) with no
// public method to read a field's default value back out without a live
// plugin host (no `buildPartialConfig`, `fields`, etc.). Per the task
// brief's documented fallback, we instead assert against the exported
// DEFAULT_DATABASE_PATH constant, which is what src/config.ts passes as
// the default value to `.field("databasePath", ...)`.
it("defaults the databasePath to ~/.agents/brains/default.db", () => {
expect(DEFAULT_DATABASE_PATH).toBe("~/.agents/brains/default.db");
});
it("builds a ConfigSchematics object", () => {
expect(configSchematics).toBeDefined();
});
});
__tests__ / config.test.ts
import { describe, it, expect } from "vitest";
import { homedir } from "os";
import { join, isAbsolute } from "path";
import { expandHome, resolveDatabasePath, configSchematics, DEFAULT_DATABASE_PATH } from "../src/config";
describe("expandHome", () => {
it("expands a bare '~' to the home directory", () => {
expect(expandHome("~")).toBe(homedir());
});
it("expands a leading '~/' to the home directory", () => {
expect(expandHome("~/notes/brain.db")).toBe(join(homedir(), "notes/brain.db"));
});
it("leaves a '~' not followed by a separator unchanged", () => {
expect(expandHome("~backup.db")).toBe("~backup.db");
});
it("leaves absolute paths unchanged", () => {
expect(expandHome("/var/data/brain.db")).toBe("/var/data/brain.db");
});
});
describe("resolveDatabasePath", () => {
it("expands '~' and returns an absolute path", () => {
const result = resolveDatabasePath("~/brain/finance.db");
expect(isAbsolute(result)).toBe(true);
expect(result).toBe(join(homedir(), "brain/finance.db"));
});
it("resolves a relative path to an absolute one", () => {
const result = resolveDatabasePath("finance.db");
expect(isAbsolute(result)).toBe(true);
});
it("leaves an already-absolute path unchanged", () => {
expect(resolveDatabasePath("/var/data/finance.db")).toBe("/var/data/finance.db");
});
});
describe("configSchematics", () => {
// NOTE: The installed @lmstudio/sdk@1.4.0 type definitions expose
// `ConfigSchematics` as a fully opaque, branded interface (see
// node_modules/@lmstudio/sdk/dist/index.d.ts around line 1469) with no
// public method to read a field's default value back out without a live
// plugin host (no `buildPartialConfig`, `fields`, etc.). Per the task
// brief's documented fallback, we instead assert against the exported
// DEFAULT_DATABASE_PATH constant, which is what src/config.ts passes as
// the default value to `.field("databasePath", ...)`.
it("defaults the databasePath to ~/.agents/brains/default.db", () => {
expect(DEFAULT_DATABASE_PATH).toBe("~/.agents/brains/default.db");
});
it("builds a ConfigSchematics object", () => {
expect(configSchematics).toBeDefined();
});
});