Files
eatvio_app/test/features/settings/presentation/pages/pressure_screen_test.dart

109 lines
3.6 KiB
Dart

import 'package:eatvio_app/core/theme/theme_helper.dart';
import 'package:eatvio_app/features/settings/entities/settings_entity.dart';
import 'package:eatvio_app/features/settings/presentation/bloc/settings_cubit/settings_cubit.dart';
import 'package:eatvio_app/features/settings/presentation/bloc/settings_cubit/settings_state.dart';
import 'package:eatvio_app/features/settings/presentation/pages/pressure_screen.dart';
import 'package:eatvio_app/generated/l10n.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:go_router/go_router.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import '../../../../fixtures/settings_fixtures.dart';
import 'pressure_screen_test.mocks.dart';
@GenerateMocks([SettingsCubit])
void main() {
group('PressureScreen', () {
late MockSettingsCubit mockSettingsCubit;
late SettingsEntity settingsEntity;
setUp(() {
mockSettingsCubit = MockSettingsCubit();
final profileDetails = SettingsFixtures.profileDetailsModel();
final profileSettings = SettingsFixtures.profileSettingsModel();
when(mockSettingsCubit.state).thenReturn(
SettingsStateLoaded(
profile: SettingsFixtures.profileModel(),
profileSettings: profileSettings,
profileDetails: profileDetails,
hasActiveConsultation: false,
),
);
settingsEntity = SettingsEntity(
profileSettingsModel: profileSettings,
profileDetailsModel: profileDetails,
settingsCubit: mockSettingsCubit,
);
});
Widget createTestWidget() {
final router = GoRouter(
initialLocation: '/',
routes: [
GoRoute(
path: '/',
builder: (context, state) => PressureScreen(settingsEntity: settingsEntity),
),
],
);
return MaterialApp.router(
theme: ThemeHelper().themeData(),
routerConfig: router,
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [Locale('ru')],
);
}
testWidgets('displays screen with correct title', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget());
await tester.pumpAndSettle();
expect(find.text('Давление'), findsOneWidget);
});
testWidgets('displays input fields for pressure', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget());
await tester.pumpAndSettle();
// Check for input fields by hint text
expect(find.text('90'), findsWidgets);
});
testWidgets('displays form fields', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget());
await tester.pumpAndSettle();
// Check that screen displays correctly with input fields
expect(find.byType(TextFormField), findsWidgets);
});
testWidgets('displays save button', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget());
await tester.pumpAndSettle();
expect(find.text('Сохранить'), findsOneWidget);
});
testWidgets('displays save button', (WidgetTester tester) async {
await tester.pumpWidget(createTestWidget());
await tester.pumpAndSettle();
// Verify save button is displayed
expect(find.text('Сохранить'), findsOneWidget);
// Note: Testing button tap requires proper navigation setup
});
});
}