agent-ecosystem/test/renderer/components/team/leadContextLoadGuards.test.ts
2026-05-03 10:52:38 +03:00

187 lines
5 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
buildLeadSessionDetailRequestKey,
deriveLeadContextButtonLabel,
shouldFetchLeadSessionDetail,
shouldLoadLeadSessionDetail,
} from '@renderer/components/team/leadContextLoadGuards';
describe('leadContextLoadGuards', () => {
describe('shouldLoadLeadSessionDetail', () => {
it('does not load when disabled', () => {
expect(
shouldLoadLeadSessionDetail({
enabled: false,
tabId: 'tab-1',
projectId: 'project-1',
leadSessionId: 'lead-1',
})
).toBe(false);
});
it('requires all identifiers', () => {
expect(
shouldLoadLeadSessionDetail({
enabled: true,
tabId: null,
projectId: 'project-1',
leadSessionId: 'lead-1',
})
).toBe(false);
expect(
shouldLoadLeadSessionDetail({
enabled: true,
tabId: 'tab-1',
projectId: null,
leadSessionId: 'lead-1',
})
).toBe(false);
expect(
shouldLoadLeadSessionDetail({
enabled: true,
tabId: 'tab-1',
projectId: 'project-1',
leadSessionId: null,
})
).toBe(false);
});
it('loads only when enabled and identifiers are valid', () => {
expect(
shouldLoadLeadSessionDetail({
enabled: true,
tabId: 'tab-1',
projectId: 'project-1',
leadSessionId: 'lead-1',
})
).toBe(true);
});
});
describe('buildLeadSessionDetailRequestKey', () => {
it('builds a stable per-tab request key', () => {
expect(
buildLeadSessionDetailRequestKey({
tabId: 'tab-1',
projectId: 'project-1',
leadSessionId: 'lead-1',
})
).toBe('tab-1:project-1:lead-1');
});
});
describe('shouldFetchLeadSessionDetail', () => {
it('does not fetch without a requested session', () => {
expect(
shouldFetchLeadSessionDetail({
requestedSessionId: null,
loadedSessionId: null,
loading: false,
inFlightOrAttemptedRequestKey: null,
nextRequestKey: null,
})
).toBe(false);
});
it('does not fetch while loading', () => {
expect(
shouldFetchLeadSessionDetail({
requestedSessionId: 'lead-1',
loadedSessionId: null,
loading: true,
inFlightOrAttemptedRequestKey: null,
nextRequestKey: 'tab-1:project-1:lead-1',
})
).toBe(false);
});
it('does not fetch an already loaded session', () => {
expect(
shouldFetchLeadSessionDetail({
requestedSessionId: 'lead-1',
loadedSessionId: 'lead-1',
loading: false,
inFlightOrAttemptedRequestKey: null,
nextRequestKey: 'tab-1:project-1:lead-1',
})
).toBe(false);
});
it('does not refetch the same attempted request key', () => {
expect(
shouldFetchLeadSessionDetail({
requestedSessionId: 'lead-1',
loadedSessionId: null,
loading: false,
inFlightOrAttemptedRequestKey: 'tab-1:project-1:lead-1',
nextRequestKey: 'tab-1:project-1:lead-1',
})
).toBe(false);
});
it('fetches when the requested session is unloaded and not already attempted', () => {
expect(
shouldFetchLeadSessionDetail({
requestedSessionId: 'lead-2',
loadedSessionId: 'lead-1',
loading: false,
inFlightOrAttemptedRequestKey: null,
nextRequestKey: 'tab-1:project-1:lead-2',
})
).toBe(true);
});
});
describe('deriveLeadContextButtonLabel', () => {
it('uses live percent while the panel is closed', () => {
expect(
deriveLeadContextButtonLabel({
liveContextUsedPercent: 25,
fullContextUsedPercent: 90,
contextPanelOpen: false,
})
).toBe('25.0%');
});
it('prefers full percent while the panel is open', () => {
expect(
deriveLeadContextButtonLabel({
liveContextUsedPercent: 25,
fullContextUsedPercent: 90,
contextPanelOpen: true,
})
).toBe('90.0%');
});
it('falls back to live percent while open when full percent is unavailable', () => {
expect(
deriveLeadContextButtonLabel({
liveContextUsedPercent: 25,
fullContextUsedPercent: null,
contextPanelOpen: true,
})
).toBe('25.0%');
});
it('falls back to Context when no percent is available', () => {
expect(
deriveLeadContextButtonLabel({
liveContextUsedPercent: null,
fullContextUsedPercent: null,
contextPanelOpen: false,
})
).toBe('Context');
});
it('does not clamp full percent values', () => {
expect(
deriveLeadContextButtonLabel({
liveContextUsedPercent: null,
fullContextUsedPercent: 125.5,
contextPanelOpen: true,
})
).toBe('125.5%');
});
});
});