fix: resolve TypeScript lint errors in telemetry tests

- Fix variable name conflicts in mcp-telemetry.test.ts
- Fix process.exit mock type in batch-processor.test.ts
- Fix position tuple types in event-tracker.test.ts
- Import MockInstance type from vitest
This commit is contained in:
czlonkowski
2025-09-26 18:57:05 +02:00
parent a5cf4193e4
commit 2716207d72
3 changed files with 39 additions and 24 deletions

View File

@@ -310,14 +310,14 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(searchRequest.params);
}
expect(telemetry.trackSearchQuery).toHaveBeenCalledWith('webhook', 2, 'OR');
});
it('should track zero-result searches', async () => {
const searchRequest: CallToolRequest = {
const zeroResultRequest: CallToolRequest = {
method: 'tools/call',
params: {
name: 'search_nodes',
@@ -334,14 +334,14 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(zeroResultRequest.params);
}
expect(telemetry.trackSearchQuery).toHaveBeenCalledWith('nonexistent', 0, 'AND');
});
it('should track fallback search queries', async () => {
const searchRequest: CallToolRequest = {
const fallbackRequest: CallToolRequest = {
method: 'tools/call',
params: {
name: 'search_nodes',
@@ -360,7 +360,7 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(fallbackRequest.params);
}
// Should track both main query and fallback
@@ -400,7 +400,7 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(validateRequest.params);
}
expect(telemetry.trackWorkflowCreation).toHaveBeenCalledWith(workflow, true);
@@ -444,7 +444,7 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(validateRequest.params);
}
expect(telemetry.trackValidationDetails).toHaveBeenCalledWith(
@@ -482,7 +482,7 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(validateNodeRequest.params);
}
// Should track the validation attempt
@@ -514,7 +514,7 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(slowToolRequest.params);
}
expect(telemetry.trackToolUsage).toHaveBeenCalledWith(
@@ -680,7 +680,7 @@ describe.skip('MCP Telemetry Integration', () => {
const callToolHandler = server.requestHandlers.get('tools/call');
if (callToolHandler) {
await callToolHandler(callToolRequest.params);
await callToolHandler(validateRequest.params);
}
expect(telemetry.trackWorkflowCreation).toHaveBeenCalledWith(complexWorkflow, true);

View File

@@ -1,4 +1,4 @@
import { describe, it, expect, beforeEach, vi, afterEach, beforeAll, afterAll } from 'vitest';
import { describe, it, expect, beforeEach, vi, afterEach, beforeAll, afterAll, type MockInstance } from 'vitest';
import { TelemetryBatchProcessor } from '../../../src/telemetry/batch-processor';
import { TelemetryEvent, WorkflowTelemetry, TELEMETRY_CONFIG } from '../../../src/telemetry/telemetry-types';
import { TelemetryError, TelemetryErrorType } from '../../../src/telemetry/telemetry-error';
@@ -17,14 +17,15 @@ vi.mock('../../../src/utils/logger', () => ({
describe('TelemetryBatchProcessor', () => {
let batchProcessor: TelemetryBatchProcessor;
let mockSupabase: SupabaseClient;
let mockIsEnabled: vi.Mock;
let mockProcessExit: vi.SpyInstance;
let mockIsEnabled: ReturnType<typeof vi.fn>;
let mockProcessExit: MockInstance;
const createMockSupabaseResponse = (error: any = null) => ({
data: null,
error,
status: error ? 400 : 200,
statusText: error ? 'Bad Request' : 'OK'
statusText: error ? 'Bad Request' : 'OK',
count: null
});
beforeEach(() => {
@@ -38,7 +39,9 @@ describe('TelemetryBatchProcessor', () => {
} as any;
// Mock process events to prevent actual exit
mockProcessExit = vi.spyOn(process, 'exit').mockImplementation(() => undefined as never);
mockProcessExit = vi.spyOn(process, 'exit').mockImplementation(() => {
throw new Error('Process.exit called');
});
vi.clearAllMocks();
@@ -431,8 +434,14 @@ describe('TelemetryBatchProcessor', () => {
const error = new Error('Mixed error');
const errorResponse = createMockSupabaseResponse(error);
vi.mocked(mockSupabase.from).mockImplementation((table) => ({
insert: vi.fn().mockResolvedValue(errorResponse)
}));
insert: vi.fn().mockResolvedValue(errorResponse),
url: { href: '' },
headers: {},
select: vi.fn(),
upsert: vi.fn(),
update: vi.fn(),
delete: vi.fn()
} as any));
const events: TelemetryEvent[] = [
{ user_id: 'user1', event: 'event1', properties: {} }
@@ -457,8 +466,14 @@ describe('TelemetryBatchProcessor', () => {
// Mock successful operations for dead letter queue processing
vi.mocked(mockSupabase.from).mockImplementation((table) => ({
insert: vi.fn().mockResolvedValue(createMockSupabaseResponse())
}));
insert: vi.fn().mockResolvedValue(createMockSupabaseResponse()),
url: { href: '' },
headers: {},
select: vi.fn(),
upsert: vi.fn(),
update: vi.fn(),
delete: vi.fn()
} as any));
await batchProcessor.flush([]);
expect(batchProcessor.getMetrics().deadLetterQueueSize).toBe(0);

View File

@@ -21,8 +21,8 @@ vi.mock('path');
describe('TelemetryEventTracker', () => {
let eventTracker: TelemetryEventTracker;
let mockGetUserId: vi.Mock;
let mockIsEnabled: vi.Mock;
let mockGetUserId: ReturnType<typeof vi.fn>;
let mockIsEnabled: ReturnType<typeof vi.fn>;
beforeEach(() => {
mockGetUserId = vi.fn().mockReturnValue('test-user-123');
@@ -107,9 +107,9 @@ describe('TelemetryEventTracker', () => {
describe('trackWorkflowCreation()', () => {
const mockWorkflow = {
nodes: [
{ id: '1', type: 'webhook', name: 'Webhook' },
{ id: '2', type: 'httpRequest', name: 'HTTP Request' },
{ id: '3', type: 'set', name: 'Set' }
{ id: '1', type: 'webhook', name: 'Webhook', position: [0, 0] as [number, number], parameters: {} },
{ id: '2', type: 'httpRequest', name: 'HTTP Request', position: [100, 0] as [number, number], parameters: {} },
{ id: '3', type: 'set', name: 'Set', position: [200, 0] as [number, number], parameters: {} }
],
connections: {
'1': { main: [[{ node: '2', type: 'main', index: 0 }]] }