chore(version): update app version to 1.3.5+85 and improve test coverage reporting in CI

This commit is contained in:
mso7nueh
2025-12-08 11:19:08 +03:00
parent abe4985f0e
commit c2a506cdbf
148 changed files with 12395 additions and 1889 deletions

View File

@@ -0,0 +1,64 @@
import 'package:eatvio_app/core/theme/theme_helper.dart';
import 'package:eatvio_app/features/create_diet/presentation/widgets/error_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('ValidationErrorWidget', () {
testWidgets('displays error message', (tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeHelper().themeData(),
home: Scaffold(
body: ValidationErrorWidget(error: 'Test error message'),
),
),
);
expect(find.byType(ValidationErrorWidget), findsOneWidget);
expect(find.text('Test error message'), findsOneWidget);
});
testWidgets('displays error icon', (tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeHelper().themeData(),
home: Scaffold(
body: ValidationErrorWidget(error: 'Test error'),
),
),
);
expect(find.byType(ValidationErrorWidget), findsOneWidget);
});
testWidgets('handles long error messages', (tester) async {
final longError = 'A' * 100;
await tester.pumpWidget(
MaterialApp(
theme: ThemeHelper().themeData(),
home: Scaffold(
body: ValidationErrorWidget(error: longError),
),
),
);
expect(find.byType(ValidationErrorWidget), findsOneWidget);
expect(find.text(longError), findsOneWidget);
});
testWidgets('displays empty error message', (tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeHelper().themeData(),
home: Scaffold(
body: ValidationErrorWidget(error: ''),
),
),
);
expect(find.byType(ValidationErrorWidget), findsOneWidget);
});
});
}

View File

@@ -0,0 +1,81 @@
import 'package:eatvio_app/core/theme/theme_helper.dart';
import 'package:eatvio_app/features/create_diet/presentation/cubit/create_diet_cubit.dart';
import 'package:eatvio_app/features/create_diet/presentation/cubit/create_diet_state.dart';
import 'package:eatvio_app/features/create_diet/presentation/widgets/status_drop_down_widget.dart';
import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
import 'package:eatvio_app/generated/l10n.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'status_drop_down_widget_test.mocks.dart';
@GenerateMocks([CreateDietCubit])
void main() {
group('StatusDropDownWidget', () {
late MockCreateDietCubit mockCubit;
setUp(() {
mockCubit = MockCreateDietCubit();
});
Widget createTestWidget({DietState? dietState}) {
return MaterialApp(
theme: ThemeHelper().themeData(),
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [Locale('ru')],
home: BlocProvider<CreateDietCubit>.value(
value: mockCubit,
child: Scaffold(
body: StatusDropDownWidget(dietState: dietState),
),
),
);
}
testWidgets('displays status dropdown widget', (tester) async {
when(mockCubit.state).thenReturn(
CreateDietState.initial(),
);
when(mockCubit.stream).thenAnswer((_) => Stream.value(
CreateDietState.initial(),
));
// ignore: return_of_invalid_type
when(mockCubit.setDietState(any)).thenAnswer((_) => () {});
await tester.pumpWidget(createTestWidget());
await tester.pumpAndSettle();
expect(find.byType(StatusDropDownWidget), findsOneWidget);
});
testWidgets('displays error when dietStateError is present', (tester) async {
when(mockCubit.state).thenReturn(
CreateDietState.initial().copyWith(
dietStateError: 'Error message',
),
);
when(mockCubit.stream).thenAnswer((_) => Stream.value(
CreateDietState.initial().copyWith(
dietStateError: 'Error message',
),
));
// ignore: return_of_invalid_type
when(mockCubit.setDietState(any)).thenAnswer((_) => () {});
await tester.pumpWidget(createTestWidget());
await tester.pumpAndSettle();
expect(find.byType(StatusDropDownWidget), findsOneWidget);
});
});
}