test(tests): add comprehensive unit tests for various models and repositories, enhancing test coverage and ensuring correct functionality

This commit is contained in:
mso7nueh
2025-12-09 16:19:48 +03:00
parent edd064d20d
commit 70e4a42e98
25 changed files with 2565 additions and 58 deletions

View 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)));
});
});
}