diff --git a/src/cli/directory-cli.test.ts b/src/cli/directory-cli.test.ts index a71bdddeb3e..8e42d7bfc2b 100644 --- a/src/cli/directory-cli.test.ts +++ b/src/cli/directory-cli.test.ts @@ -58,6 +58,18 @@ function requireRecord(value: unknown): Record { return value as Record; } +function firstMockArg(mockFn: { mock: { calls: ReadonlyArray> } }): 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> } }) { + 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();