import 'package:eatvio_app/firebase_options.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; void main() { setUpAll(() async { // Initialize dotenv for tests with Firebase configuration dotenv.loadFromString(envString: ''' FIREBASE_PROJECT_ID=test-project FIREBASE_DATABASE_URL=https://test-project.firebaseio.com FIREBASE_STORAGE_BUCKET=test-project.appspot.com FIREBASE_MESSAGING_SENDER_ID=123456789 FIREBASE_ANDROID_API_KEY=test-android-api-key FIREBASE_ANDROID_APP_ID=1:123456789:android:test FIREBASE_IOS_API_KEY=test-ios-api-key FIREBASE_IOS_APP_ID=1:123456789:ios:test FIREBASE_IOS_BUNDLE_ID=com.test.app DEV_BASE_URL=http://localhost BASE_URL=http://localhost '''); }); group('DefaultFirebaseOptions', () { test('currentPlatform - возвращает FirebaseOptions или выбрасывает UnsupportedError', () { // Тест для currentPlatform // В тестовом окружении defaultTargetPlatform может быть разным // Проверяем что метод либо возвращает опции, либо выбрасывает UnsupportedError try { final options = DefaultFirebaseOptions.currentPlatform; expect(options, isA()); } catch (e) { // Если платформа не поддерживается, это нормально expect(e, isA()); } }); test('android - возвращает FirebaseOptions с правильными полями', () { final options = DefaultFirebaseOptions.android; expect(options, isA()); // Проверяем что все необходимые поля присутствуют expect(options.apiKey, isNotNull); expect(options.apiKey, isNotEmpty); expect(options.appId, isNotNull); expect(options.appId, isNotEmpty); expect(options.messagingSenderId, isNotNull); expect(options.messagingSenderId, isNotEmpty); expect(options.projectId, isNotNull); expect(options.projectId, isNotEmpty); }); test('ios - возвращает FirebaseOptions с правильными полями', () { final options = DefaultFirebaseOptions.ios; expect(options, isA()); // Проверяем что все необходимые поля присутствуют expect(options.apiKey, isNotNull); expect(options.apiKey, isNotEmpty); expect(options.appId, isNotNull); expect(options.appId, isNotEmpty); expect(options.messagingSenderId, isNotNull); expect(options.messagingSenderId, isNotEmpty); expect(options.projectId, isNotNull); expect(options.projectId, isNotEmpty); expect(options.iosBundleId, isNotNull); expect(options.iosBundleId, isNotEmpty); }); test('android и ios возвращают разные значения', () { final androidOptions = DefaultFirebaseOptions.android; final iosOptions = DefaultFirebaseOptions.ios; // Они должны быть разными объектами expect(androidOptions, isNot(equals(iosOptions))); // API ключи должны быть разными expect(androidOptions.apiKey, isNot(equals(iosOptions.apiKey))); }); }); }