From a5ea2ff20697f73ed451b1b9410e3ce286e47f11 Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Mon, 13 Jul 2026 13:32:01 +0200 Subject: [PATCH] Cover home_screen navigation/resume flows toward 100% Add widget tests for the manual-workout icon navigation, starting a workout (navigates to WorkoutScreen), and auto-resume of a saved active session. home_screen down to 4 uncovered lines. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01PM3auNTifaVgcXWDizZrjH --- .../test/screens/home_screen_test.dart | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/stronglift_replacement/workout_app/test/screens/home_screen_test.dart b/stronglift_replacement/workout_app/test/screens/home_screen_test.dart index 656505b..047b3cb 100644 --- a/stronglift_replacement/workout_app/test/screens/home_screen_test.dart +++ b/stronglift_replacement/workout_app/test/screens/home_screen_test.dart @@ -4,6 +4,8 @@ import 'package:sqflite_common_ffi/sqflite_ffi.dart'; import 'package:workout_app/screens/home_screen.dart'; import 'package:workout_app/services/storage_service.dart'; +import '../fake_secure_storage.dart'; + void main() { setUpAll(() { sqfliteFfiInit(); @@ -83,4 +85,37 @@ void main() { await _pump(tester, _wrap()); expect(find.text('HTTP sync (no ADB needed)'), findsOneWidget); }); + + testWidgets('manual-workout icon navigates to the manual form', (tester) async { + installFakeSecureStorage(); // ManualWorkoutScreen loads its sync budget + await _pump(tester, _wrap()); + await tester.tap(find.byIcon(Icons.edit_note)); + await tester.pump(); + await tester.pump(const Duration(milliseconds: 300)); + expect(find.text('Log Manual Workout'), findsOneWidget); + }); + + testWidgets('starting a workout navigates to the workout screen', + (tester) async { + await _pump(tester, _wrap()); + await tester.tap(find.text('Start Workout A')); + await tester.pump(); + await tester.pump(const Duration(milliseconds: 300)); + expect(find.textContaining('Workout A'), findsWidgets); + }); + + testWidgets('an active session auto-resumes into the workout screen', + (tester) async { + await tester.runAsync( + () => StorageService.instance.saveActiveSession({ + 'workoutType': 'A', + 'startTime': DateTime.now().toIso8601String(), + 'exercises': [], + }), + ); + await _pump(tester, _wrap()); + await tester.pump(const Duration(milliseconds: 300)); + // The post-frame auto-resume pushed the workout screen. + expect(find.textContaining('Workout A'), findsWidgets); + }); }