Update SessionForm test

This commit is contained in:
Roland Geider
2025-05-09 21:23:09 +02:00
parent 01c5c9186d
commit 7141e26480
2 changed files with 26 additions and 6 deletions

View File

@@ -21,8 +21,8 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:wger/exceptions/http_exception.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/helpers/errors.dart';
import 'package:wger/helpers/json.dart';
import 'package:wger/helpers/ui.dart';
import 'package:wger/l10n/generated/app_localizations.dart';
import 'package:wger/models/workouts/session.dart';
import 'package:wger/providers/routines.dart';
@@ -51,6 +51,7 @@ class SessionForm extends StatefulWidget {
}
class _SessionFormState extends State<SessionForm> {
Widget errorMessage = const SizedBox.shrink();
final _form = GlobalKey<FormState>();
final impressionController = TextEditingController();
@@ -90,6 +91,7 @@ class _SessionFormState extends State<SessionForm> {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
errorMessage,
ToggleButtons(
renderBorder: false,
onPressed: (int index) {
@@ -219,16 +221,18 @@ class _SessionFormState extends State<SessionForm> {
await routinesProvider.editSession(widget._session);
}
setState(() {
errorMessage = const SizedBox.shrink();
});
if (context.mounted && widget._onSaved != null) {
widget._onSaved!();
}
} on WgerHttpException catch (error) {
if (context.mounted) {
showHttpExceptionErrorDialog(error, context);
}
} catch (error) {
if (context.mounted) {
showErrorDialog(error, context);
setState(() {
errorMessage = FormHttpErrorsWidget(error);
});
}
}
},

View File

@@ -4,6 +4,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:provider/provider.dart';
import 'package:wger/exceptions/http_exception.dart';
import 'package:wger/l10n/generated/app_localizations.dart';
import 'package:wger/models/workouts/session.dart';
import 'package:wger/providers/routines.dart';
@@ -126,5 +127,20 @@ void main() {
expect(captured.notes, 'Updated notes');
expect(onSavedCalled, isTrue);
});
testWidgets('shows server side error messages', (WidgetTester tester) async {
// Arrange
await pumpSessionForm(tester);
when(mockRoutinesProvider.addSession(any, any)).thenThrow(WgerHttpException.fromMap({
'name': ['The name is not valid'],
}));
// Act
await tester.tap(find.byKey(const ValueKey('save-button')));
await tester.pumpAndSettle();
// Assert
expect(find.text('The name is not valid'), findsOneWidget, reason: 'Error message is shown');
});
});
}