@@ -4,6 +4,7 @@ import 'package:on_time_front/domain/repositories/preparation_repository.dart';
44import 'package:on_time_front/domain/repositories/user_repository.dart' ;
55import 'package:on_time_front/domain/use-cases/onboard_use_case.dart' ;
66import 'package:on_time_front/presentation/onboarding/cubit/onboarding_cubit.dart' ;
7+ import 'package:on_time_front/presentation/onboarding/preparation_order/cubit/preparation_order_cubit.dart' ;
78
89void main () {
910 test (
@@ -86,6 +87,57 @@ void main() {
8687 );
8788 },
8889 );
90+
91+ test (
92+ 'PreparationOrderCubit reorders immutable steps without losing durations' ,
93+ () {
94+ final onboardingCubit = OnboardingCubit (_FakeOnboardUseCase ());
95+ addTearDown (onboardingCubit.close);
96+ onboardingCubit.onboardingFormChanged (
97+ preparationStepList: const [
98+ OnboardingPreparationStepState (
99+ id: 'step-1' ,
100+ preparationName: 'Shower' ,
101+ preparationTime: Duration (minutes: 10 ),
102+ nextPreparationId: 'step-2' ,
103+ ),
104+ OnboardingPreparationStepState (
105+ id: 'step-2' ,
106+ preparationName: 'Pack' ,
107+ preparationTime: Duration (minutes: 5 ),
108+ ),
109+ ],
110+ );
111+ final orderCubit = PreparationOrderCubit (
112+ onboardingCubit: onboardingCubit,
113+ );
114+ addTearDown (orderCubit.close);
115+
116+ orderCubit.preparationOrderChanged (0 , 2 );
117+ orderCubit.preparationOrderSaved ();
118+
119+ expect (
120+ onboardingCubit.state.preparationStepList
121+ .map ((step) => step.id)
122+ .toList (),
123+ ['step-2' , 'step-1' ],
124+ );
125+ expect (
126+ onboardingCubit.state.preparationStepList
127+ .map ((step) => step.preparationTime)
128+ .toList (),
129+ const [Duration (minutes: 5 ), Duration (minutes: 10 )],
130+ );
131+ expect (
132+ onboardingCubit.state.preparationStepList.first.nextPreparationId,
133+ 'step-1' ,
134+ );
135+ expect (
136+ onboardingCubit.state.preparationStepList.last.nextPreparationId,
137+ isNull,
138+ );
139+ },
140+ );
89141}
90142
91143class _OnboardingSubmission {
0 commit comments