fix(exercice): suppression d'exercice ne casse plus les programmes (ticket #62)
Corrige ExerciseUseCases.delete() qui cascadait à tort vers les ProgramExercise référents, violant le pattern snapshot (un exercice supprimé ne doit jamais affecter les programmes déjà composés). Ajoute le test de régression associé. Met à jour le texte de confirmation _confirmDelete dans exercise_library_screen.dart, devenu incohérent avec ce fix (il affirmait à tort que la suppression retirerait l'exercice des programmes). Trouvé pendant la QA finale du chantier "Exercice à plusieurs étapes" (#54). flutter analyze propre (mêmes infos préexistantes), 103/103 tests verts, build APK debug validé. Dernier ticket du chantier (#56/#58/#59/#60/#61/#62 tous faits). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -226,7 +226,10 @@ void main() {
|
||||
|
||||
await _pumpExerciseForm(tester, exerciseRepository);
|
||||
await tester.tap(
|
||||
find.widgetWithText(SwitchListTile, 'Rythmer cet exercice avec des étapes'),
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Rythmer cet exercice avec des étapes',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
await tester.tap(find.text('Ajouter une étape'));
|
||||
@ -256,7 +259,10 @@ void main() {
|
||||
|
||||
await _pumpExerciseForm(tester, exerciseRepository);
|
||||
await tester.tap(
|
||||
find.widgetWithText(SwitchListTile, 'Rythmer cet exercice avec des étapes'),
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Rythmer cet exercice avec des étapes',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
await tester.tap(find.text('Ajouter une étape'));
|
||||
@ -300,7 +306,10 @@ void main() {
|
||||
|
||||
await _pumpExerciseForm(tester, exerciseRepository);
|
||||
await tester.tap(
|
||||
find.widgetWithText(SwitchListTile, 'Rythmer cet exercice avec des étapes'),
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Rythmer cet exercice avec des étapes',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
await tester.tap(find.text('Ajouter une étape'));
|
||||
@ -334,7 +343,10 @@ void main() {
|
||||
|
||||
await _pumpExerciseForm(tester, exerciseRepository);
|
||||
await tester.tap(
|
||||
find.widgetWithText(SwitchListTile, 'Rythmer cet exercice avec des étapes'),
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Rythmer cet exercice avec des étapes',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
await tester.tap(find.text('Ajouter une étape'));
|
||||
@ -363,7 +375,10 @@ void main() {
|
||||
|
||||
await _pumpExerciseForm(tester, exerciseRepository);
|
||||
await tester.tap(
|
||||
find.widgetWithText(SwitchListTile, 'Rythmer cet exercice avec des étapes'),
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Rythmer cet exercice avec des étapes',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
for (var index = 0; index < 8; index++) {
|
||||
@ -372,7 +387,10 @@ void main() {
|
||||
}
|
||||
|
||||
expect(find.text('Limite atteinte'), findsOneWidget);
|
||||
expect(find.text('Un exercice peut contenir jusqu’à 8 étapes.'), findsOneWidget);
|
||||
expect(
|
||||
find.text('Un exercice peut contenir jusqu’à 8 étapes.'),
|
||||
findsOneWidget,
|
||||
);
|
||||
expect(find.text('Ajouter une étape'), findsNothing);
|
||||
});
|
||||
|
||||
@ -389,7 +407,10 @@ void main() {
|
||||
'30',
|
||||
);
|
||||
await tester.tap(
|
||||
find.widgetWithText(SwitchListTile, 'Rythmer cet exercice avec des étapes'),
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Rythmer cet exercice avec des étapes',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
await tester.tap(find.text('Ajouter une étape'));
|
||||
@ -512,7 +533,7 @@ void main() {
|
||||
|
||||
expect(find.text('Supprimer Squat ?'), findsOneWidget);
|
||||
expect(
|
||||
find.textContaining('Le supprimer le retirera de ces programmes.'),
|
||||
find.textContaining('Les programmes existants restent inchangés.'),
|
||||
findsOneWidget,
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user