77 lines
2.9 KiB
Dart
77 lines
2.9 KiB
Dart
import 'dart:io';
|
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
import 'package:budget_app/models/ai_settings.dart';
|
|
|
|
/// Конфигурация для тестовой среды
|
|
class TestConfig {
|
|
static bool _initialized = false;
|
|
|
|
/// Инициализация тестовой среды
|
|
static Future<void> initialize() async {
|
|
if (_initialized) return;
|
|
|
|
try {
|
|
// Загружаем .env файл напрямую, так как flutter_dotenv.load() не работает в тестах
|
|
final testEnvFile = File('test/.env');
|
|
final rootEnvFile = File('.env');
|
|
|
|
if (testEnvFile.existsSync()) {
|
|
final content = await testEnvFile.readAsString();
|
|
dotenv.testLoad(fileInput: content);
|
|
print('✓ Test configuration loaded from test/.env file');
|
|
} else if (rootEnvFile.existsSync()) {
|
|
final content = await rootEnvFile.readAsString();
|
|
dotenv.testLoad(fileInput: content);
|
|
print('✓ Test configuration loaded from root .env file');
|
|
} else {
|
|
throw Exception('No .env files found');
|
|
}
|
|
} catch (e) {
|
|
// .env файл не найден, используем значения по умолчанию
|
|
print('Warning: .env file not found, using default test configuration');
|
|
print('Error details: $e');
|
|
|
|
// Инициализируем dotenv с пустыми значениями если не можем загрузить файл
|
|
dotenv.testLoad(fileInput: '''
|
|
RUN_INTEGRATION_TESTS=false
|
|
TEST_AI_TIMEOUT_SECONDS=30
|
|
''');
|
|
}
|
|
|
|
_initialized = true;
|
|
}
|
|
|
|
/// Получить настройки AI для тестов
|
|
static AiSettings getTestAiSettings() {
|
|
final apiKey = dotenv.env['OPENROUTER_API_KEY'];
|
|
final timeout = int.tryParse(dotenv.env['TEST_AI_TIMEOUT_SECONDS'] ?? '30') ?? 30;
|
|
final defaultModel = dotenv.env['AI_DEFAULT_MODEL'] ?? 'google/gemini-2.5-flash';
|
|
|
|
return AiSettings(
|
|
apiKey: apiKey,
|
|
baseUrl: 'https://openrouter.ai/api/v1',
|
|
defaultModel: defaultModel,
|
|
timeoutSeconds: timeout,
|
|
temperature: 0.1, // Низкая температура для более предсказуемых результатов
|
|
maxTokens: 500,
|
|
isEnabled: apiKey != null && apiKey.isNotEmpty,
|
|
);
|
|
}
|
|
|
|
/// Проверить, должны ли запускаться интеграционные тесты
|
|
static bool shouldRunIntegrationTests() {
|
|
final runTests = dotenv.env['RUN_INTEGRATION_TESTS']?.toLowerCase();
|
|
return runTests == 'true' || runTests == '1';
|
|
}
|
|
|
|
/// Проверить, настроен ли AI для тестов
|
|
static bool isAiConfigured() {
|
|
final apiKey = dotenv.env['OPENROUTER_API_KEY'];
|
|
return apiKey != null && apiKey.isNotEmpty;
|
|
}
|
|
|
|
/// Получить тестовый API ключ
|
|
static String? getTestApiKey() {
|
|
return dotenv.env['OPENROUTER_API_KEY'];
|
|
}
|
|
} |