rework ui
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -36,7 +36,7 @@ void main() {
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify the login title is displayed (German localization)
|
||||
expect(find.text('BILDERUPLOAD'), findsOneWidget);
|
||||
expect(find.byKey(const Key('login_title')), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('displays username and password fields', (WidgetTester tester) async {
|
||||
@@ -162,7 +162,7 @@ void main() {
|
||||
when(mockLoginController.authenticate('testuser', 'wrongpassword'))
|
||||
.thenAnswer((_) async => (jwtTokenPairDto: null));
|
||||
|
||||
await pumpAppConfig(tester, GlobalRouter.pathLogin);
|
||||
await pumpApp(tester, const LoginWidget());
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Enter credentials
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:fotodocumentation/controller/customer_controller.dart';
|
||||
import 'package:fotodocumentation/dto/customer_dto.dart' show CustomerDto;
|
||||
import 'package:fotodocumentation/dto/customer_dto.dart' show CustomerDto, CustomerListDto;
|
||||
import 'package:fotodocumentation/dto/picture_dto.dart';
|
||||
import 'package:fotodocumentation/pages/customer/picture_fullscreen_dialog.dart';
|
||||
import 'package:fotodocumentation/utils/di_container.dart';
|
||||
@@ -13,8 +13,7 @@ import '../testing/test_utils.dart';
|
||||
import '../testing/test_utils.mocks.dart';
|
||||
|
||||
// Minimal valid base64 encoded 1x1 pixel PNG image
|
||||
const String _testImage =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==';
|
||||
const String _testImage = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -74,8 +73,9 @@ void main() {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/1");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify customer name is displayed
|
||||
@@ -93,8 +93,9 @@ void main() {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/1");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify the comment is displayed
|
||||
@@ -105,8 +106,9 @@ void main() {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/3");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// The comment field should be empty but the label should exist
|
||||
@@ -117,47 +119,51 @@ void main() {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/1");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Both navigation buttons should always be visible at the bottom
|
||||
expect(find.byIcon(Icons.chevron_left), findsOneWidget);
|
||||
expect(find.byIcon(Icons.chevron_right), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_left")), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_right")), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('shows both navigation buttons when on middle picture', (WidgetTester tester) async {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/2");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Both navigation buttons should be visible
|
||||
expect(find.byIcon(Icons.chevron_left), findsOneWidget);
|
||||
expect(find.byIcon(Icons.chevron_right), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_left")), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_right")), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('shows both navigation buttons on last picture', (WidgetTester tester) async {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/3");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Both navigation buttons should be visible (right one is disabled)
|
||||
expect(find.byIcon(Icons.chevron_left), findsOneWidget);
|
||||
expect(find.byIcon(Icons.chevron_right), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_left")), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_right")), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('navigates to next picture when right button is tapped', (WidgetTester tester) async {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/1");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify first picture comment is shown
|
||||
@@ -176,15 +182,16 @@ void main() {
|
||||
setScreenSize(tester, 1024, 1024);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/2");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/2");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify second picture comment is shown
|
||||
expect(find.text('Second picture comment'), findsOneWidget);
|
||||
|
||||
// Tap left navigation button
|
||||
await tester.tap(find.byIcon(Icons.chevron_left));
|
||||
await tester.tap(find.byKey(Key("navigate_left")));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify first picture comment is now shown
|
||||
@@ -203,21 +210,23 @@ void main() {
|
||||
);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => singlePictureCustomer);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/1");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Both navigation buttons should be shown but disabled
|
||||
expect(find.byIcon(Icons.chevron_left), findsOneWidget);
|
||||
expect(find.byIcon(Icons.chevron_right), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_left")), findsOneWidget);
|
||||
expect(find.byKey(Key("navigate_right")), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('opens fullscreen dialog when image is tapped', (WidgetTester tester) async {
|
||||
setScreenSize(tester, 2048, 2048);
|
||||
|
||||
when(mockCustomerController.get(id: 1)).thenAnswer((_) async => customerDto);
|
||||
when(mockCustomerController.getAll("", "")).thenAnswer((_) async => _list);
|
||||
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathPicture}/1/1");
|
||||
await pumpAppConfig(tester, "${GlobalRouter.pathHome}${GlobalRouter.pathPicture}/1/1");
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Find the GestureDetector with the image key
|
||||
@@ -238,3 +247,5 @@ void main() {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
List<CustomerListDto> _list = [CustomerListDto(id: 1, customerNumber: "CODE1", name: "Customer 1"), CustomerListDto(id: 2, customerNumber: "CODE2", name: "Customer 2")];
|
||||
|
||||
Reference in New Issue
Block a user