Files
TORCH/test/cmd-list.test.mjs
T
google-labs-jules[bot]andPR0M3TH3AN 62afdbb774 perf: optimize roster check in cmd-list using Set
Refactored `src/cmd-list.mjs` to use a `Set` for roster lookups, reducing complexity from O(M*N) to O(M+N).
Added dependency injection to `cmdList` to enable unit testing.
Added `test/cmd-list.test.mjs` to verify functionality.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-18 03:31:13 +00:00

58 lines
1.7 KiB
JavaScript

import { test, describe, it } from 'node:test';
import assert from 'node:assert';
import { cmdList } from '../src/cmd-list.mjs';
describe('cmdList', () => {
it('should list active locks and identify unknown agents', async () => {
const logs = [];
const mockLocks = [
{
agent: 'agent-1',
createdAt: 1000,
expiresAt: 4600,
eventId: 'event-1',
platform: 'linux',
},
{
agent: 'unknown-agent',
createdAt: 2000,
eventId: 'event-2',
platform: 'mac',
},
];
const deps = {
getRelays: async () => ['wss://relay.example.com'],
getNamespace: async () => 'test-namespace',
queryLocks: async () => mockLocks,
getRoster: async () => ['agent-1', 'agent-2'],
todayDateStr: () => '2023-10-27',
nowUnix: () => 3000, // agent-1 age: 2000s (~33m), unknown-agent age: 1000s (~17m)
log: (...args) => logs.push(args.join(' ')),
error: (...args) => logs.push(args.join(' ')),
};
await cmdList('daily', deps);
const output = logs.join('\n');
// Verify header
assert.match(output, /Active test-namespace daily locks/);
// Verify agents listed
assert.match(output, /agent-1/);
assert.match(output, /unknown-agent/);
// Verify unknown warning
assert.match(output, /Warning: lock events found with non-roster agent names: unknown-agent/);
// Verify summary stats
// Locked: 2 (agent-1 and unknown-agent both count as locked agents) / Roster size 2
assert.match(output, /Locked: 2\/2/);
// Verify available
// agent-2 is in roster and not in lockedAgents
assert.match(output, /Available: agent-2/);
});
});