forked from eatvio/eatvio_app
test(tests): add comprehensive unit tests for various models and repositories, enhancing test coverage and ensuring correct functionality
This commit is contained in:
79
test/firebase_options_test.dart
Normal file
79
test/firebase_options_test.dart
Normal file
@@ -0,0 +1,79 @@
|
||||
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<FirebaseOptions>());
|
||||
} catch (e) {
|
||||
// Если платформа не поддерживается, это нормально
|
||||
expect(e, isA<UnsupportedError>());
|
||||
}
|
||||
});
|
||||
|
||||
test('android - возвращает FirebaseOptions с правильными полями', () {
|
||||
final options = DefaultFirebaseOptions.android;
|
||||
expect(options, isA<FirebaseOptions>());
|
||||
// Проверяем что все необходимые поля присутствуют
|
||||
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<FirebaseOptions>());
|
||||
// Проверяем что все необходимые поля присутствуют
|
||||
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)));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user