import 'package:asciineverdie/src/core/audio/audio_service.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';

/// 위젯 테스트에서 사용하는 공통 셋업/정리 유틸리티
///
/// 싱글톤 서비스들이 테스트 간 상태를 공유하지 않도록 정리합니다.
class TestSetup {
  TestSetup._();

  /// SharedPreferences 모킹 설정
  ///
  /// setUpAll에서 호출하여 SharedPreferences 의존성 제거
  static void mockSharedPreferences() {
    final binding = TestWidgetsFlutterBinding.ensureInitialized();
    binding.defaultBinaryMessenger.setMockMethodCallHandler(
      const MethodChannel('plugins.flutter.io/shared_preferences'),
      (call) async {
        if (call.method == 'getAll') return <String, Object>{};
        return null;
      },
    );
  }

  /// 모든 싱글톤 서비스 정리
  ///
  /// tearDown에서 호출하여 타이머 및 리소스 정리
  static void resetAllServices() {
    AudioService.resetAll();
  }
}
