mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-07-19 02:56:02 +00:00
42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { eventHub } from "@/common/events";
|
|
import { translateLiveSyncMessage } from "@/common/translation";
|
|
import {
|
|
observeServiceComposition,
|
|
observeServiceContext,
|
|
SERVICE_CONTEXT_MEMBERS,
|
|
} from "../../../../test/contracts/serviceContext";
|
|
import { NodeServiceContext } from "./NodeServiceContext";
|
|
import { NodeServiceHub } from "./NodeServiceHub";
|
|
import type { StandardIo } from "@vrtmrz/livesync-commonlib/context";
|
|
|
|
const TRANSLATION_KEY = "Replicator.Message.InitialiseFatalError";
|
|
|
|
describe("NodeServiceContext contract", () => {
|
|
it("preserves the CLI capabilities and host-neutral API results", () => {
|
|
const standardIo: StandardIo = {
|
|
readStdin: async () => "input",
|
|
prompt: async () => "answer",
|
|
writeStdout: () => undefined,
|
|
writeStderr: () => undefined,
|
|
};
|
|
const context = new NodeServiceContext("/tmp/livesync-context-contract", standardIo);
|
|
|
|
expect(observeServiceContext(context, TRANSLATION_KEY)).toEqual({
|
|
translation: translateLiveSyncMessage(TRANSLATION_KEY),
|
|
receivedEvents: ["context-contract-event"],
|
|
});
|
|
expect(context.events).toBe(eventHub);
|
|
expect(context.databasePath).toBe("/tmp/livesync-context-contract");
|
|
expect(context.standardIo).toBe(standardIo);
|
|
|
|
const hub = new NodeServiceHub(context.databasePath, context);
|
|
const composition = observeServiceComposition(hub, context);
|
|
expect(composition.hubUsesExpectedContext).toBe(true);
|
|
expect(SERVICE_CONTEXT_MEMBERS.filter((member) => !composition.servicesUsingExpectedContext[member])).toEqual(
|
|
[]
|
|
);
|
|
});
|
|
});
|