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,89 @@
import 'package:eatvio_app/features/settings/entities/settings_entity.dart';
import 'package:eatvio_app/features/settings/presentation/pages/change_password_screen.dart';
import 'package:eatvio_app/core/theme/theme_helper.dart';
import 'package:eatvio_app/generated/l10n.dart';
import 'package:eatvio_app/features/settings/presentation/bloc/settings_cubit/settings_cubit.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
import '../../../../fixtures/settings_fixtures.dart';
import '../bloc/settings_cubit_test.mocks.dart';
void main() {
group('ChangePasswordScreen', () {
late SettingsCubit settingsCubit;
late MockProfileRepository mockProfileRepository;
late MockSettingsRepository mockSettingsRepository;
late MockConsultantRepository mockConsultantRepository;
late MockConsultationsRepository mockConsultationsRepository;
setUp(() {
mockProfileRepository = MockProfileRepository();
mockSettingsRepository = MockSettingsRepository();
mockConsultantRepository = MockConsultantRepository();
mockConsultationsRepository = MockConsultationsRepository();
settingsCubit = SettingsCubit(
profileRepository: mockProfileRepository,
settingsRepository: mockSettingsRepository,
consultantRepository: mockConsultantRepository,
consultationsRepository: mockConsultationsRepository,
);
});
tearDown(() {
settingsCubit.close();
});
testWidgets('отображает экран смены пароля', (tester) async {
final settingsEntity = SettingsEntity(
profileSettingsModel: SettingsFixtures.profileSettingsModel(),
profileDetailsModel: SettingsFixtures.profileDetailsModel(),
settingsCubit: settingsCubit,
);
await tester.pumpWidget(
MaterialApp(
theme: ThemeHelper().themeData(),
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
home: ChangePasswordScreen(settingsEntity: settingsEntity),
),
);
expect(find.byType(ChangePasswordScreen), findsOneWidget);
expect(find.text('Смена пароля'), findsOneWidget);
expect(find.text('Coming soon...'), findsOneWidget);
});
testWidgets('имеет AppBar с заголовком', (tester) async {
final settingsEntity = SettingsEntity(
profileSettingsModel: SettingsFixtures.profileSettingsModel(),
profileDetailsModel: SettingsFixtures.profileDetailsModel(),
settingsCubit: settingsCubit,
);
await tester.pumpWidget(
MaterialApp(
theme: ThemeHelper().themeData(),
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
home: ChangePasswordScreen(settingsEntity: settingsEntity),
),
);
expect(find.byType(AppBar), findsOneWidget);
expect(find.text('Смена пароля'), findsOneWidget);
});
});
}