agent-ecosystem/test/renderer/store/teamRefreshFanoutDebugBridge.test.ts

81 lines
2.7 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import {
installTeamRefreshFanoutDebugBridge,
TEAM_REFRESH_FANOUT_DEBUG_STORAGE_KEY,
} from '../../../src/renderer/store/teamRefreshFanoutDebugBridge';
import {
__resetTeamRefreshFanoutDiagnosticsForTests,
noteTeamRefreshFanout,
} from '../../../src/renderer/store/teamRefreshFanoutDiagnostics';
describe('teamRefreshFanoutDebugBridge', () => {
beforeEach(() => {
localStorage.clear();
delete window.__TEAM_REFRESH_FANOUT__;
__resetTeamRefreshFanoutDiagnosticsForTests();
});
afterEach(() => {
localStorage.clear();
delete window.__TEAM_REFRESH_FANOUT__;
__resetTeamRefreshFanoutDiagnosticsForTests();
});
it('does not install without the localStorage flag', () => {
const cleanup = installTeamRefreshFanoutDebugBridge();
expect(window.__TEAM_REFRESH_FANOUT__).toBeUndefined();
cleanup();
expect(window.__TEAM_REFRESH_FANOUT__).toBeUndefined();
});
it('installs a frozen bridge behind the localStorage flag', () => {
localStorage.setItem(TEAM_REFRESH_FANOUT_DEBUG_STORAGE_KEY, '1');
const cleanup = installTeamRefreshFanoutDebugBridge();
expect(window.__TEAM_REFRESH_FANOUT__).toBeDefined();
expect(Object.isFrozen(window.__TEAM_REFRESH_FANOUT__)).toBe(true);
expect(typeof window.__TEAM_REFRESH_FANOUT__?.snapshot).toBe('function');
expect(typeof window.__TEAM_REFRESH_FANOUT__?.summary).toBe('function');
expect(typeof window.__TEAM_REFRESH_FANOUT__?.reset).toBe('function');
cleanup();
expect(window.__TEAM_REFRESH_FANOUT__).toBeUndefined();
});
it('cleanup removes only the bridge it installed', () => {
localStorage.setItem(TEAM_REFRESH_FANOUT_DEBUG_STORAGE_KEY, '1');
const cleanup = installTeamRefreshFanoutDebugBridge();
const replacement = {
snapshot: window.__TEAM_REFRESH_FANOUT__!.snapshot,
summary: window.__TEAM_REFRESH_FANOUT__!.summary,
reset: window.__TEAM_REFRESH_FANOUT__!.reset,
};
window.__TEAM_REFRESH_FANOUT__ = replacement;
cleanup();
expect(window.__TEAM_REFRESH_FANOUT__).toBe(replacement);
});
it('bridge reset clears diagnostics', () => {
localStorage.setItem(TEAM_REFRESH_FANOUT_DEBUG_STORAGE_KEY, '1');
const cleanup = installTeamRefreshFanoutDebugBridge();
noteTeamRefreshFanout({
teamName: 'team-a',
surface: 'team-change-listener',
phase: 'scheduled',
reason: 'event:process',
operation: 'refreshTeamData',
});
expect(window.__TEAM_REFRESH_FANOUT__?.summary('team-a').total).toBe(1);
window.__TEAM_REFRESH_FANOUT__?.reset();
expect(window.__TEAM_REFRESH_FANOUT__?.summary('team-a').total).toBe(0);
cleanup();
});
});