mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-11-14 20:20:12 +00:00
44 lines
1.7 KiB
TypeScript
44 lines
1.7 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { isValidCouchDBServerURL, probeCouchDBConnection } from "./couchDBConnectionProbe";
|
|
|
|
describe("CouchDB setup connection policy", () => {
|
|
it.each([
|
|
[false, "connect to an existing database"],
|
|
[true, "create or connect to a database"],
|
|
] as const)("%s can %s through an owned connection probe", async (createIfMissing, _description) => {
|
|
const check = vi.fn(async () => ({ ok: true as const }));
|
|
const dispose = vi.fn(async () => undefined);
|
|
const probe = { check, getStatus: vi.fn(), dispose };
|
|
|
|
await expect(probeCouchDBConnection(probe, createIfMissing)).resolves.toEqual({ ok: true });
|
|
|
|
expect(check).toHaveBeenCalledWith({ createIfMissing, showResult: false });
|
|
expect(dispose).toHaveBeenCalledOnce();
|
|
});
|
|
|
|
it("returns a connection error and still disposes the probe", async () => {
|
|
const dispose = vi.fn(async () => undefined);
|
|
const probe = {
|
|
check: vi.fn(async () => ({ ok: false as const, reason: "database does not exist" })),
|
|
getStatus: vi.fn(),
|
|
dispose,
|
|
};
|
|
|
|
await expect(probeCouchDBConnection(probe, false)).resolves.toEqual({
|
|
ok: false,
|
|
reason: "database does not exist",
|
|
});
|
|
expect(dispose).toHaveBeenCalledOnce();
|
|
});
|
|
|
|
it.each([
|
|
["https://couch.example", true],
|
|
["http://127.0.0.1:5984", true],
|
|
["ftp://couch.example", false],
|
|
["couch.example", false],
|
|
["https://", false],
|
|
])("validates the saved server URL %s", (value, expected) => {
|
|
expect(isValidCouchDBServerURL(value)).toBe(expected);
|
|
});
|
|
});
|