forked from eatvio/eatvio_app
115 lines
3.8 KiB
Dart
115 lines
3.8 KiB
Dart
import 'package:eatvio_app/core/app_config.dart';
|
|
import 'package:eatvio_app/core/app_initializer.dart';
|
|
import 'package:eatvio_app/core/env_config.dart';
|
|
import 'package:eatvio_app/core/locator_service.dart';
|
|
import 'package:eatvio_app/features/video_calls/presentation/bloc/video_call_session/video_call_session_cubit.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:mockito/mockito.dart';
|
|
|
|
class _MockVideoCallSessionCubit extends Mock implements VideoCallSessionCubit {}
|
|
|
|
void main() {
|
|
setUpAll(() async {
|
|
// Initialize dotenv for tests
|
|
dotenv.loadFromString(envString: 'DEV_BASE_URL=http://localhost\nBASE_URL=http://localhost');
|
|
});
|
|
|
|
setUp(() async {
|
|
await sl.reset();
|
|
sl.registerLazySingleton<VideoCallSessionCubit>(
|
|
_MockVideoCallSessionCubit.new,
|
|
);
|
|
});
|
|
|
|
tearDown(() async {
|
|
await sl.reset();
|
|
});
|
|
|
|
group('AppConfig', () {
|
|
test('creates config with prod build type', () {
|
|
final config = AppConfig(buildType: AppBuildType.prod);
|
|
|
|
expect(config.buildType, AppBuildType.prod);
|
|
expect(config.baseUrl, EnvConfig.baseUrl);
|
|
});
|
|
|
|
test('creates config with dev build type', () {
|
|
final config = AppConfig(buildType: AppBuildType.dev);
|
|
|
|
expect(config.buildType, AppBuildType.dev);
|
|
expect(config.baseUrl, EnvConfig.devBaseUrl);
|
|
});
|
|
|
|
test('creates config with tests build type', () {
|
|
final config = AppConfig(buildType: AppBuildType.tests);
|
|
|
|
expect(config.buildType, AppBuildType.tests);
|
|
expect(config.baseUrl, EnvConfig.devBaseUrl);
|
|
});
|
|
|
|
test('setBaseUrl updates baseUrl', () {
|
|
final config = AppConfig(buildType: AppBuildType.prod);
|
|
const newUrl = 'https://new-url.com';
|
|
|
|
config.setBaseUrl(newUrl);
|
|
|
|
expect(config.baseUrl, newUrl);
|
|
});
|
|
|
|
test('globalBlocProviders returns list of BlocProvider', () {
|
|
final config = AppConfig(buildType: AppBuildType.prod);
|
|
|
|
expect(config.globalBlocProviders, isA<List>());
|
|
expect(config.globalBlocProviders.isNotEmpty, true);
|
|
});
|
|
|
|
test('localizationDelegates returns list of LocalizationsDelegate', () {
|
|
final config = AppConfig(buildType: AppBuildType.prod);
|
|
|
|
expect(config.localizationDelegates, isA<List>());
|
|
expect(config.localizationDelegates.isNotEmpty, true);
|
|
});
|
|
|
|
test('supportedLocales returns list of Locale', () {
|
|
final config = AppConfig(buildType: AppBuildType.prod);
|
|
|
|
expect(config.supportedLocales, isA<List>());
|
|
expect(config.supportedLocales.isNotEmpty, true);
|
|
});
|
|
|
|
test('baseUrl is initialized correctly for each build type', () {
|
|
final prodConfig = AppConfig(buildType: AppBuildType.prod);
|
|
final devConfig = AppConfig(buildType: AppBuildType.dev);
|
|
final testConfig = AppConfig(buildType: AppBuildType.tests);
|
|
|
|
expect(prodConfig.baseUrl, isA<String>());
|
|
expect(devConfig.baseUrl, isA<String>());
|
|
expect(testConfig.baseUrl, isA<String>());
|
|
expect(devConfig.baseUrl, testConfig.baseUrl);
|
|
});
|
|
|
|
test('setBaseUrl can be called multiple times', () {
|
|
final config = AppConfig(buildType: AppBuildType.prod);
|
|
const url1 = 'https://url1.com';
|
|
const url2 = 'https://url2.com';
|
|
|
|
config.setBaseUrl(url1);
|
|
expect(config.baseUrl, url1);
|
|
|
|
config.setBaseUrl(url2);
|
|
expect(config.baseUrl, url2);
|
|
});
|
|
|
|
test('globalBlocProviders contains expected providers', () {
|
|
final config = AppConfig(buildType: AppBuildType.prod);
|
|
final providers = config.globalBlocProviders;
|
|
|
|
expect(providers.length, greaterThan(0));
|
|
// Проверяем, что список содержит элементы
|
|
expect(providers.first, isA<BlocProvider>());
|
|
});
|
|
});
|
|
}
|