feat(coverage): enhance coverage analysis script to filter generated files and generate detailed markdown report for files with less than 100% coverage

This commit is contained in:
mso7nueh
2025-12-15 23:37:17 +03:00
parent cb441b4027
commit f1b7a24044
46 changed files with 1592 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
import 'package:eatvio_app/core/locator_service.dart';
import 'package:eatvio_app/core/theme/theme_helper.dart';
import 'package:eatvio_app/features/auth/presentation/bloc/reset_password_cubit/reset_password_cubit.dart';
import 'package:eatvio_app/features/auth/presentation/pages/forget_password_screen.dart';
import 'package:eatvio_app/features/auth/repositories/reset_password_repository.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'forget_password_screen_test.mocks.dart';
@GenerateMocks([ResetPasswordRepository])
void main() {
group('ForgetPasswordScreen', () {
late MockResetPasswordRepository mockResetPasswordRepository;
late ResetPasswordCubit resetPasswordCubit;
setUp(() async {
await sl.reset();
mockResetPasswordRepository = MockResetPasswordRepository();
resetPasswordCubit = ResetPasswordCubit(
resetPasswordRepository: mockResetPasswordRepository,
);
sl.registerLazySingleton<ResetPasswordCubit>(() => resetPasswordCubit);
});
tearDown(() {
resetPasswordCubit.close();
});
Widget createTestWidget({required bool isAuth}) {
return MaterialApp(
theme: ThemeHelper().themeData(),
home: ForgetPasswordScreen(isAuth: isAuth),
);
}
testWidgets('displays screen with correct title when isAuth is false', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget(isAuth: false));
await tester.pumpAndSettle();
expect(find.text('Восстановление пароля'), findsOneWidget);
});
testWidgets('displays screen with correct title when isAuth is true', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget(isAuth: true));
await tester.pumpAndSettle();
expect(find.text('Смена пароля'), findsOneWidget);
});
testWidgets('displays email field in initial state', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget(isAuth: false));
await tester.pumpAndSettle();
expect(find.text('E-mail'), findsOneWidget);
expect(find.text('Введите e-mail'), findsOneWidget);
});
testWidgets('displays email field in initial state', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget(isAuth: false));
await tester.pump(); // Use pump instead of pumpAndSettle
// Check that email field exists
final textFields = find.byType(TextFormField);
expect(textFields, findsWidgets);
});
testWidgets('displays button in initial state', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget(isAuth: false));
await tester.pump(); // Use pump instead of pumpAndSettle
// Check that button exists (either "Сбросить пароль" or "Сменить пароль")
expect(find.text('Сбросить пароль'), findsOneWidget);
});
});
}