test: dedupe directory cli mock reads

This commit is contained in:
Peter Steinberger
2026-05-12 18:46:01 +01:00
parent f054295e48
commit 4b41e591fe

View File

@@ -58,6 +58,18 @@ function requireRecord(value: unknown): Record<string, unknown> {
return value as Record<string, unknown>;
}
function firstMockArg(mockFn: { mock: { calls: ReadonlyArray<ReadonlyArray<unknown>> } }): unknown {
const call = mockFn.mock.calls[0];
if (!call) {
throw new Error("expected mock to be called");
}
return call[0];
}
function firstRecordArg(mockFn: { mock: { calls: ReadonlyArray<ReadonlyArray<unknown>> } }) {
return requireRecord(firstMockArg(mockFn));
}
function runtimeErrors(): string[] {
return runtimeState.defaultRuntime.error.mock.calls.map(([message]) => String(message));
}
@@ -110,18 +122,18 @@ describe("registerDirectoryCli", () => {
});
expect(mocks.resolveInstallableChannelPlugin).toHaveBeenCalledTimes(1);
const installArgs = requireRecord(mocks.resolveInstallableChannelPlugin.mock.calls.at(0)?.[0]);
const installArgs = firstRecordArg(mocks.resolveInstallableChannelPlugin);
expect(installArgs.rawChannel).toBe("demo-directory");
expect(installArgs.allowInstall).toBe(true);
expect(mocks.replaceConfigFile).toHaveBeenCalledTimes(1);
const replaceArgs = requireRecord(mocks.replaceConfigFile.mock.calls.at(0)?.[0]);
const replaceArgs = firstRecordArg(mocks.replaceConfigFile);
expect(replaceArgs.nextConfig).toEqual({
channels: {},
plugins: { entries: { "demo-directory": { enabled: true } } },
});
expect(replaceArgs.baseHash).toBe("config-1");
expect(self).toHaveBeenCalledTimes(1);
expect(requireRecord(self.mock.calls.at(0)?.[0]).accountId).toBe("default");
expect(firstRecordArg(self).accountId).toBe("default");
expect(runtimeState.defaultRuntime.log).toHaveBeenCalledWith(
JSON.stringify({ id: "self-1", name: "Family Phone" }, null, 2),
);
@@ -159,7 +171,7 @@ describe("registerDirectoryCli", () => {
channel: null,
});
expect(self).toHaveBeenCalledTimes(1);
expect(requireRecord(self.mock.calls.at(0)?.[0]).cfg).toBe(autoEnabledConfig);
expect(firstRecordArg(self).cfg).toBe(autoEnabledConfig);
expect(mocks.replaceConfigFile).toHaveBeenCalledWith({
nextConfig: autoEnabledConfig,
baseHash: "config-1",
@@ -199,7 +211,7 @@ describe("registerDirectoryCli", () => {
);
expect(listPeersLive).toHaveBeenCalledTimes(1);
const listPeersLiveArgs = requireRecord(listPeersLive.mock.calls.at(0)?.[0]);
const listPeersLiveArgs = firstRecordArg(listPeersLive);
expect(listPeersLiveArgs.accountId).toBe("default");
expect(listPeersLiveArgs.query).toBe("ada");
expect(listPeersLiveArgs.limit).toBe(5);
@@ -229,7 +241,7 @@ describe("registerDirectoryCli", () => {
});
expect(listGroups).toHaveBeenCalledTimes(1);
expect(requireRecord(listGroups.mock.calls.at(0)?.[0]).accountId).toBe("default");
expect(firstRecordArg(listGroups).accountId).toBe("default");
expect(runtimeState.defaultRuntime.log).toHaveBeenCalledWith(
JSON.stringify([{ id: "channel:config", kind: "group" }], null, 2),
);
@@ -256,7 +268,7 @@ describe("registerDirectoryCli", () => {
).rejects.toThrow("exit:1");
expect(mocks.resolveInstallableChannelPlugin).toHaveBeenCalledTimes(1);
const installArgs = requireRecord(mocks.resolveInstallableChannelPlugin.mock.calls.at(0)?.[0]);
const installArgs = firstRecordArg(mocks.resolveInstallableChannelPlugin);
expect(installArgs.rawChannel).toBe("openclaw-weixin");
expect(installArgs.allowInstall).toBe(true);
expect(mocks.replaceConfigFile).not.toHaveBeenCalled();