/**
 * Jest 전역 테스트 설정
 *
 * 모든 테스트 실행 전 자동으로 로드됩니다
 */

// 환경 변수 설정 (테스트 환경)
process.env.NODE_ENV = 'test';
process.env.LOG_LEVEL = 'error'; // 테스트 시 로그 최소화

// 타임존 설정
process.env.TZ = 'Asia/Seoul';

// 전역 타임아웃 확장 (필요 시)
jest.setTimeout(10000);

// 콘솔 출력 모킹 (선택사항 - 테스트 출력을 깔끔하게)
// global.console = {
//   ...console,
//   log: jest.fn(),
//   debug: jest.fn(),
//   info: jest.fn(),
//   warn: jest.fn(),
//   error: jest.fn(),
// };

// 모든 테스트 실행 전
beforeAll(() => {
  // 전역 설정
});

// 각 테스트 파일 실행 전
beforeEach(() => {
  // 각 테스트 전 초기화
});

// 각 테스트 파일 실행 후
afterEach(() => {
  // 모킹 정리
  jest.clearAllMocks();
});

// 모든 테스트 실행 후
afterAll(() => {
  // 정리 작업
});

// 커스텀 매처 (선택사항)
expect.extend({
  // 날짜 문자열 검증
  toBeValidDate(received) {
    const isValid = !isNaN(Date.parse(received));
    return {
      message: () => `expected ${received} to be a valid date string`,
      pass: isValid
    };
  },

  // ID 검증
  toBeValidId(received) {
    const isValid = Number.isInteger(received) && received > 0;
    return {
      message: () => `expected ${received} to be a valid ID (positive integer)`,
      pass: isValid
    };
  }
});
