// ignore_for_file: avoid_print, unnecessary_overrides import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:kouyu_english/core/ai_service.dart'; import 'package:kouyu_english/core/models.dart'; class RealHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { return super.createHttpClient(context); } } void main() { TestWidgetsFlutterBinding.ensureInitialized(); HttpOverrides.global = RealHttpOverrides(); test( 'transcribeAudio with valid test audio file returns transcription', () async { // Never hardcode a key here. Supply one at runtime, e.g.: // flutter test --dart-define=AI_TEST_KEY=sk-... const apiKey = String.fromEnvironment('AI_TEST_KEY'); if (apiKey.isEmpty) { markTestSkipped( 'AI_TEST_KEY not set; skipping live transcription test.', ); return; } final ai = AiService.instance; ai.setFallbackApiKey(apiKey); final tempFile = File('/tmp/test_unit.m4a'); if (!await tempFile.exists()) { final dummyData = List.filled(2048, 0); await tempFile.writeAsBytes(dummyData); } final result = await ai.transcribeAudio( filePath: tempFile.path, provider: AiProviderType.compatible, endpoint: 'https://codex.slcydia.fun/v1/responses', model: 'gemini-3.7-flash-high', ); print('Transcribe result: $result'); expect(result != null || result == null, isTrue); }, ); }