feat(ui): programme simplifié en cartes compactes (ticket #20)

Simplifie l'affichage du programme sur program_screen.dart avec des
cartes compactes. flutter analyze propre, 30/30 tests verts, build APK
debug validé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 00:24:29 +02:00
parent 2e55fc021e
commit bf1134d4ff
2 changed files with 311 additions and 83 deletions

View File

@ -8,6 +8,7 @@ void main() {
testWidgets(
'ajoute un exercice au programme avec sa configuration par défaut',
(tester) async {
final programRepository = _FakeProgramRepository();
final exerciseRepository = _FakeExerciseRepository()
..exercises.add(
Exercise(
@ -23,7 +24,7 @@ void main() {
MaterialApp(
home: ProgramFormScreen(
programUseCases: _programUseCases(
_FakeProgramRepository(),
programRepository,
exerciseRepository,
),
exerciseUseCases: _exerciseUseCases(exerciseRepository),
@ -31,21 +32,30 @@ void main() {
),
);
await tester.enterText(
find.widgetWithText(TextFormField, 'Nom'),
'Jambes',
);
await tester.tap(find.text('Ajouter un exercice'));
await tester.pumpAndSettle();
await tester.tap(find.text('Squat'));
await tester.pumpAndSettle();
expect(find.text('Squat'), findsOneWidget);
expect(
find.text('3 séries · Temps + Répétitions · Repos 60 s'),
findsOneWidget,
);
expect(find.widgetWithText(CheckboxListTile, 'Temps'), findsOneWidget);
expect(
find.widgetWithText(CheckboxListTile, 'Répétitions'),
findsOneWidget,
);
expect(find.text('Repos 60 s'), findsOneWidget);
expect(find.text('Exercice ajouté'), findsOneWidget);
expect(find.byTooltip("Personnaliser l'exercice"), findsOneWidget);
expect(find.byType(CheckboxListTile), findsNothing);
await tester.tap(find.text('Enregistrer'));
await tester.pumpAndSettle();
final savedExercise = programRepository.programs.single.exercises.single;
expect(savedExercise.setsCount, 3);
expect(savedExercise.timeEnabled, isTrue);
expect(savedExercise.repsEnabled, isTrue);
expect(savedExercise.scoreEnabled, isFalse);
expect(savedExercise.restSecondsOverride, 60);
},
);
@ -80,12 +90,16 @@ void main() {
await tester.tap(find.text('Pompes'));
await tester.pumpAndSettle();
await tester.tap(find.byTooltip("Personnaliser l'exercice"));
await tester.pumpAndSettle();
expect(find.text("Personnaliser l'exercice"), findsOneWidget);
expect(
find.widgetWithText(CheckboxListTile, 'Répétitions'),
find.widgetWithText(SwitchListTile, 'Répétitions'),
findsOneWidget,
);
expect(find.widgetWithText(CheckboxListTile, 'Temps'), findsNothing);
expect(find.widgetWithText(CheckboxListTile, 'Score'), findsNothing);
expect(find.widgetWithText(SwitchListTile, 'Temps'), findsNothing);
expect(find.widgetWithText(SwitchListTile, 'Score'), findsNothing);
},
);
}