feat(ui): réglages auto-enchaînement exercice, programme et séance (ticket #77)
Ajoute les réglages d'auto-enchaînement des chronos d'étapes sur exercise_library_screen.dart, program_screen.dart et workout_template_screen.dart, s'appuyant sur la résolution du ticket #76. Propagation du nouveau champ vérifiée exhaustivement sur les 5 points d'impact de _ProgramExerciseDraft (constructeur, fromExercise, fromProgramExercise, copy(), toConfig()) — pas de répétition du bug #72. flutter pub get OK, dart format appliqué (7 fichiers reformatés), analyze propre (mêmes infos préexistantes), 152/152 tests verts, build APK debug validé. Développés dans le même worktree partagé par DevBackend et DevFrontend ; feature/step-chaining-77-ui-settings restée vide, jamais divergée. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -435,6 +435,58 @@ void main() {
|
||||
expect(saved.steps.single.defaultTargetValue, 12);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'le réglage d’enchaînement automatique des étapes est sauvegardé',
|
||||
(tester) async {
|
||||
final exerciseRepository = _FakeExerciseRepository();
|
||||
|
||||
await tester.binding.setSurfaceSize(const Size(400, 3600));
|
||||
addTearDown(() => tester.binding.setSurfaceSize(null));
|
||||
|
||||
await _pumpExerciseForm(tester, exerciseRepository);
|
||||
await tester.enterText(
|
||||
find.widgetWithText(TextFormField, 'Nom'),
|
||||
'Combo',
|
||||
);
|
||||
await tester.enterText(
|
||||
find.widgetWithText(TextFormField, 'Temps par défaut (s)'),
|
||||
'30',
|
||||
);
|
||||
await tester.tap(
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Rythmer cet exercice avec des étapes',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
await tester.tap(
|
||||
find.widgetWithText(
|
||||
SwitchListTile,
|
||||
'Enchaîner automatiquement les chronos consécutifs',
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
await tester.tap(find.text('Ajouter une étape'));
|
||||
await tester.pump();
|
||||
await tester.enterText(
|
||||
find.widgetWithText(TextFormField, 'Nom de l’étape').last,
|
||||
'Dribble main droite',
|
||||
);
|
||||
await tester.enterText(
|
||||
find.widgetWithText(TextFormField, 'Durée par défaut (s)').last,
|
||||
'12',
|
||||
);
|
||||
|
||||
await tester.ensureVisible(find.text('Enregistrer'));
|
||||
await tester.tap(find.text('Enregistrer'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
final saved = exerciseRepository.saved.single;
|
||||
expect(saved.steps, hasLength(1));
|
||||
expect(saved.autoStartNextTimedStep, isFalse);
|
||||
},
|
||||
);
|
||||
|
||||
testWidgets('désigner une image comme icône l’indique visuellement', (
|
||||
tester,
|
||||
) async {
|
||||
|
||||
Reference in New Issue
Block a user