fix: align diary diet row and hide terminal cancel

- show only the personal diet name in the diary and keep the plan day chip
- hide consultation cancellation for terminal and non-cancellable states
- enable the refund form only for paid, started and in-progress plans
- cover diary rows and order info cancel visibility with tests
This commit is contained in:
2026-11-06 13:33:44 +03:00
parent 57536aba06
commit 0241265b3c
7 changed files with 105 additions and 29 deletions

View File

@@ -243,12 +243,12 @@ void main() {
expect(find.byType(InfoByOrderScreen), findsOneWidget);
});
ChosenPlanModel donePlan() {
ChosenPlanModel donePlan({ChosenPlanStateEnum state = ChosenPlanStateEnum.stateDone}) {
return ChosenPlanModel(
id: 1,
optionType: 'options1',
startDate: DateTime(2024, 1, 1),
chosenPlanState: ChosenPlanStateEnum.stateDone,
chosenPlanState: state,
chatId: 'chat-1',
consultantId: 1,
plan: const PlanModel(
@@ -320,6 +320,7 @@ void main() {
expect(find.byType(CollectChargeBanner), findsOneWidget);
expect(find.text('Получить выплату'), findsOneWidget);
expect(find.text('Отменить консультацию'), findsNothing);
},
);
@@ -337,6 +338,22 @@ void main() {
expect(find.byType(CollectChargeBanner), findsNothing);
expect(find.text('Получить выплату'), findsNothing);
expect(find.text('Отменить консультацию'), findsNothing);
});
testWidgets('shows cancel action for cancellable post-paid plan', (
WidgetTester tester,
) async {
when(
mockChatRepository.getChosenPlan(id: anyNamed('id')),
).thenAnswer((_) async => donePlan(state: ChosenPlanStateEnum.stateStarted));
await mockNetworkImagesFor(() async {
await tester.pumpWidget(createTestWidget(planId: 1));
await tester.pumpAndSettle();
});
expect(find.text('Отменить консультацию'), findsOneWidget);
});
});
}