import { setupServer } from 'msw/node';
import { handlers } from '../src/mocks/handlers';

// Configurar variáveis de ambiente para testes
process.env.NODE_ENV = 'test';
process.env.MONGODB_URI =
  process.env.MONGODB_URI || 'mongodb://admin:password123@localhost:27017';
process.env.JWT_SECRET = 'test-secret-key';
process.env.JWT_ALGORITHM = 'HS256';
process.env.API_KEY = 'JOqyUcP45H875xmuI2gT3H9dDK42I2Wt';
process.env.LARAVEL_URL = process.env.LARAVEL_URL || 'http://localhost:8000';
process.env.LARAVEL_API_URL =
  process.env.LARAVEL_API_URL || 'http://localhost:8000';
process.env.PLUGGY_CLIENT_ID = 'test-client-id';
process.env.PLUGGY_CLIENT_SECRET = 'test-client-secret';
process.env.PLUGGY_API_URL = 'https://api.pluggy.ai';

process.env.MASTER_API_SECRET =
  process.env.MASTER_API_SECRET ?? 'test-master-api-secret-for-e2e';
process.env.MASTER_API_IMPERSONATION_HEADER =
  process.env.MASTER_API_IMPERSONATION_HEADER ?? 'X-Master-User-UUID';

// Configuração do MSW para testes E2E
const server = setupServer(...handlers);

beforeAll(() => {
  server.listen({
    onUnhandledRequest: 'bypass',
  });
});

afterEach(() => {
  server.resetHandlers();
});

afterAll(() => {
  server.close();
});

// Configuração global para testes
global.console = {
  ...console,
  // Suprimir logs durante os testes para manter a saída limpa
  log: jest.fn(),
  debug: jest.fn(),
  info: jest.fn(),
  warn: jest.fn(),
  error: jest.fn(),
};
