test(bf-5klc): fix vitest mock hoisting errors
Use vi.hoisted() to declare mock classes before the factory runs, preventing "Cannot access X before initialization" errors that occur when vitest hoists vi.mock() calls but the factory captures references to variables not yet initialized. Fixes errors in: - src/tui/components/CrossReferencePanel.test.ts (MockCrossReferenceManager) - src/tui/components/WorkerAnalyticsPanel.test.ts (MockWorkerAnalytics) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
1cc5e8de60
commit
0004e51a02
2 changed files with 40 additions and 32 deletions
|
|
@ -63,29 +63,33 @@ vi.mock('../utils/colors.js', () => ({
|
|||
},
|
||||
}));
|
||||
|
||||
// Mock crossReferenceManager module - define everything inline to avoid hoisting issues
|
||||
// Mock crossReferenceManager module - use vi.hoisted() to avoid hoisting issues
|
||||
vi.mock('../../crossReferenceManager.js', () => {
|
||||
let mockManagerInstance: any = null;
|
||||
const { MockCrossReferenceManager, MockConstructor } = vi.hoisted(() => {
|
||||
let mockManagerInstance: any = null;
|
||||
|
||||
class MockCrossReferenceManager {
|
||||
getEntity = vi.fn(function() { return null; });
|
||||
getLinksForEntity = vi.fn(function() { return []; });
|
||||
getStats = vi.fn(function() { return ({
|
||||
totalLinks: 0,
|
||||
totalEntities: 0,
|
||||
byRelationship: {},
|
||||
byEntityType: {},
|
||||
mostLinked: [],
|
||||
recentLinks: [],
|
||||
});});
|
||||
findPath = vi.fn(function() { return null; });
|
||||
}
|
||||
|
||||
const MockConstructor = vi.fn(function() {
|
||||
if (!mockManagerInstance) {
|
||||
mockManagerInstance = new MockCrossReferenceManager();
|
||||
class MockCrossReferenceManager {
|
||||
getEntity = vi.fn(function() { return null; });
|
||||
getLinksForEntity = vi.fn(function() { return []; });
|
||||
getStats = vi.fn(function() { return ({
|
||||
totalLinks: 0,
|
||||
totalEntities: 0,
|
||||
byRelationship: {},
|
||||
byEntityType: {},
|
||||
mostLinked: [],
|
||||
recentLinks: [],
|
||||
});});
|
||||
findPath = vi.fn(function() { return null; });
|
||||
}
|
||||
return mockManagerInstance;
|
||||
|
||||
const MockConstructor = vi.fn(function() {
|
||||
if (!mockManagerInstance) {
|
||||
mockManagerInstance = new MockCrossReferenceManager();
|
||||
}
|
||||
return mockManagerInstance;
|
||||
});
|
||||
|
||||
return { MockCrossReferenceManager, MockConstructor };
|
||||
});
|
||||
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -71,19 +71,23 @@ vi.mock('../utils/colors.js', () => ({
|
|||
},
|
||||
}));
|
||||
|
||||
// Mock workerAnalytics module - define everything inline to avoid hoisting issues
|
||||
// Mock workerAnalytics module - use vi.hoisted() to avoid hoisting issues
|
||||
vi.mock('../../workerAnalytics.js', () => {
|
||||
class MockWorkerAnalytics {
|
||||
compareWorkers = vi.fn(() => ({
|
||||
worker1: { workerId: 'w-1', beadsCompleted: 10, beadsPerHour: 5, avgCompletionTimeMs: 1000, errorRate: 0.1, costPerBead: 0.5, totalCostUsd: 5, efficiencyScore: 0.8, activeTimeMs: 10000, idlePercentage: 0.2, errorCount: 1, totalTokens: 1000, trend: undefined },
|
||||
worker2: { workerId: 'w-2', beadsCompleted: 15, beadsPerHour: 7, avgCompletionTimeMs: 800, errorRate: 0.05, costPerBead: 0.3, totalCostUsd: 4.5, efficiencyScore: 0.9, activeTimeMs: 15000, idlePercentage: 0.1, errorCount: 0, totalTokens: 900, trend: undefined },
|
||||
differences: { beadsCompleted: -5, beadsPerHour: -2, avgCompletionTimeMs: 200, errorRate: 0.05, costPerBead: 0.2, efficiencyScore: -0.1, activeTimeMs: -5000, idlePercentage: 0.1, totalCostUsd: 0.5, totalTokens: 100 },
|
||||
percentDifferences: { beadsCompleted: -33.3, beadsPerHour: -28.6, avgCompletionTimeMs: 25, errorRate: 100, costPerBead: 66.7, efficiencyScore: -12.5, activeTimeMs: -33.3, idlePercentage: 100, totalCostUsd: 11.1, totalTokens: 11.1 },
|
||||
betterWorker: { beadsCompleted: 'worker2', beadsPerHour: 'worker2', avgCompletionTimeMs: 'worker2', errorRate: 'worker2', costPerBead: 'worker2', efficiencyScore: 'worker2', activeTimeMs: 'worker2', idlePercentage: 'worker2', totalCostUsd: 'worker2' },
|
||||
score: { worker1: 0, worker2: 9 },
|
||||
overallWinner: 'worker2',
|
||||
}));
|
||||
}
|
||||
const { MockWorkerAnalytics } = vi.hoisted(() => {
|
||||
class MockWorkerAnalytics {
|
||||
compareWorkers = vi.fn(() => ({
|
||||
worker1: { workerId: 'w-1', beadsCompleted: 10, beadsPerHour: 5, avgCompletionTimeMs: 1000, errorRate: 0.1, costPerBead: 0.5, totalCostUsd: 5, efficiencyScore: 0.8, activeTimeMs: 10000, idlePercentage: 0.2, errorCount: 1, totalTokens: 1000, trend: undefined },
|
||||
worker2: { workerId: 'w-2', beadsCompleted: 15, beadsPerHour: 7, avgCompletionTimeMs: 800, errorRate: 0.05, costPerBead: 0.3, totalCostUsd: 4.5, efficiencyScore: 0.9, activeTimeMs: 15000, idlePercentage: 0.1, errorCount: 0, totalTokens: 900, trend: undefined },
|
||||
differences: { beadsCompleted: -5, beadsPerHour: -2, avgCompletionTimeMs: 200, errorRate: 0.05, costPerBead: 0.2, efficiencyScore: -0.1, activeTimeMs: -5000, idlePercentage: 0.1, totalCostUsd: 0.5, totalTokens: 100 },
|
||||
percentDifferences: { beadsCompleted: -33.3, beadsPerHour: -28.6, avgCompletionTimeMs: 25, errorRate: 100, costPerBead: 66.7, efficiencyScore: -12.5, activeTimeMs: -33.3, idlePercentage: 100, totalCostUsd: 11.1, totalTokens: 11.1 },
|
||||
betterWorker: { beadsCompleted: 'worker2', beadsPerHour: 'worker2', avgCompletionTimeMs: 'worker2', errorRate: 'worker2', costPerBead: 'worker2', efficiencyScore: 'worker2', activeTimeMs: 'worker2', idlePercentage: 'worker2', totalCostUsd: 'worker2' },
|
||||
score: { worker1: 0, worker2: 9 },
|
||||
overallWinner: 'worker2',
|
||||
}));
|
||||
}
|
||||
|
||||
return { MockWorkerAnalytics };
|
||||
});
|
||||
|
||||
return {
|
||||
WorkerAnalytics: MockWorkerAnalytics,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue