Open Source Team Metrics based on PRs
1// jest.setup.ts
2import '@testing-library/jest-dom';
3
4// Polyfill for Request/Response in Node environment
5import 'whatwg-fetch';
6
7// Mock next-auth module
8jest.mock('next-auth', () => ({
9 __esModule: true,
10 default: jest.fn(),
11}));
12
13jest.mock('@/auth', () => ({
14 __esModule: true,
15 auth: jest.fn(),
16}));
17
18// Mock environment variables for tests
19process.env.TURSO_URL = 'libsql://test.turso.io';
20process.env.TURSO_TOKEN = 'test-token';
21process.env.GITHUB_OAUTH_CLIENT_ID = 'test-github-client-id';
22process.env.GITHUB_OAUTH_CLIENT_SECRET = 'test-github-client-secret';
23process.env.GITHUB_APP_ID = '123456';
24process.env.GITHUB_APP_PRIVATE_KEY = `-----BEGIN RSA PRIVATE KEY-----
25test-private-key
26-----END RSA PRIVATE KEY-----`;
27process.env.GITHUB_WEBHOOK_SECRET = 'test-webhook-secret';
28process.env.NEXT_PUBLIC_GITHUB_APP_SLUG = 'test-pr-cat';
29process.env.NEXTAUTH_URL = 'http://localhost:3000';
30process.env.NEXTAUTH_SECRET = 'test-nextauth-secret-minimum-32-characters-long';
31process.env.APP_URL = 'http://localhost:3000';
32(process.env as any).NODE_ENV = 'test';
33
34// Mock console methods to reduce noise in tests
35const originalConsoleError = console.error;
36global.console = {
37 ...console,
38 error: jest.fn((message, ...args) => {
39 // Filter out expected CORS/fetch errors in tests
40 if (typeof message === 'string' &&
41 (message.includes('Response for preflight') ||
42 message.includes('XMLHttpRequest'))) {
43 return;
44 }
45 originalConsoleError(message, ...args);
46 }),
47 warn: jest.fn(),
48 log: jest.fn(),
49};