forked from eatvio/eatvio_app
109 lines
3.6 KiB
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
|
|
});
|
|
});
|
|
}
|
|
|