feat(ui): écran Composition de séance-modèle
Ajoute l'écran de composition de séance-modèle (presentation/workout_template_screen.dart), avec les ajustements application/domaine/repositories nécessaires et la navigation depuis l'accueil. flutter analyze propre, 12/12 tests verts, build APK debug validé. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -95,6 +95,15 @@ final class _FakeWorkoutTemplateRepository
|
||||
@override
|
||||
Future<WorkoutTemplate?> findById(String id) async => null;
|
||||
|
||||
@override
|
||||
Future<List<WorkoutTemplate>> listActive() async => const [];
|
||||
|
||||
@override
|
||||
Future<void> replaceComposition(
|
||||
WorkoutTemplate template,
|
||||
DateTime deletedAt,
|
||||
) async {}
|
||||
|
||||
@override
|
||||
Future<void> save(WorkoutTemplate template) async {}
|
||||
|
||||
|
||||
42
test/presentation/workout_template_screen_test.dart
Normal file
42
test/presentation/workout_template_screen_test.dart
Normal file
@ -0,0 +1,42 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:gametime/presentation/presentation.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets(
|
||||
'la vue programme de séance ne permet pas de changer les mesures actives',
|
||||
(tester) async {
|
||||
final program = WorkoutTemplateProgramDraft(
|
||||
clientKey: 'program-1',
|
||||
programNameSnapshot: 'Jambes',
|
||||
defaultRestSecondsSnapshot: 60,
|
||||
programSnapshotJson: '{}',
|
||||
exercises: [
|
||||
WorkoutTemplateExerciseDraft(
|
||||
snapshotExerciseId: 'exercise-1',
|
||||
exerciseNameSnapshot: 'Squat',
|
||||
setsCount: 3,
|
||||
timeEnabled: true,
|
||||
repsEnabled: true,
|
||||
scoreEnabled: false,
|
||||
targetTimeSeconds: 45,
|
||||
targetReps: 10,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(home: WorkoutTemplateProgramDetailScreen(program: program)),
|
||||
);
|
||||
|
||||
expect(find.byType(CheckboxListTile), findsNothing);
|
||||
expect(find.text('Mesures à suivre'), findsNothing);
|
||||
|
||||
await tester.enterText(find.byType(TextFormField).first, '5');
|
||||
await tester.pump();
|
||||
|
||||
expect(program.exercises.single.setsCountOverride, 5);
|
||||
expect(find.text('5 séries · Temps + Répétitions'), findsOneWidget);
|
||||
},
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user