forked from eatvio/eatvio_app
81 lines
2.6 KiB
Dart
81 lines
2.6 KiB
Dart
import 'package:eatvio_app/core/enums/base_state.dart';
|
|
import 'package:eatvio_app/features/consultations/models/consultation_model.dart';
|
|
import 'package:eatvio_app/features/consultations/presentation/cubit/consultations_cubit.dart';
|
|
import 'package:eatvio_app/features/consultations/repositories/consultations_repository.dart';
|
|
import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:mockito/annotations.dart';
|
|
import 'package:mockito/mockito.dart';
|
|
|
|
import 'consultations_cubit_test.mocks.dart';
|
|
|
|
@GenerateNiceMocks([MockSpec<ConsultationsRepository>()])
|
|
void main() {
|
|
group('ConsultationsCubit', () {
|
|
ConsultationsCubit? cubit;
|
|
late MockConsultationsRepository mockRepository;
|
|
|
|
setUp(() {
|
|
mockRepository = MockConsultationsRepository();
|
|
});
|
|
|
|
tearDown(() async {
|
|
if (cubit != null && !cubit!.isClosed) {
|
|
await cubit!.close();
|
|
cubit = null;
|
|
}
|
|
});
|
|
|
|
test('начальное состояние - initial', () {
|
|
cubit = ConsultationsCubit(consultationsRepository: mockRepository);
|
|
|
|
expect(cubit!.state.state, BaseState.initial);
|
|
expect(cubit!.state.consultations, isEmpty);
|
|
});
|
|
|
|
test('loadConsultations - успешная загрузка консультаций', () async {
|
|
cubit = ConsultationsCubit(consultationsRepository: mockRepository);
|
|
|
|
final testConsultations = [
|
|
ConsultationModel(
|
|
id: 1,
|
|
chosenPlanState: ChosenPlanStateEnum.stateInProgress,
|
|
planTitle: 'Test Plan',
|
|
userName: 'Test User',
|
|
userSlug: 'test-user',
|
|
consultantPayment: 1000.0,
|
|
duration: 30,
|
|
currentDiaryDay: 1,
|
|
userProfilePhotoUrl: 'https://example.com/photo.jpg',
|
|
consultationOptionPrice: 5000,
|
|
startDate: DateTime(2024, 1, 1),
|
|
endDate: DateTime(2024, 1, 31),
|
|
consultantId: 1,
|
|
diaries: [],
|
|
personalDietId: null,
|
|
),
|
|
];
|
|
|
|
when(mockRepository.getConsultations())
|
|
.thenAnswer((_) async => testConsultations);
|
|
|
|
await cubit!.loadConsultations();
|
|
|
|
expect(cubit!.state.state, BaseState.success);
|
|
expect(cubit!.state.consultations.length, 1);
|
|
});
|
|
|
|
test('loadConsultations - обработка ошибки', () async {
|
|
cubit = ConsultationsCubit(consultationsRepository: mockRepository);
|
|
|
|
when(mockRepository.getConsultations())
|
|
.thenThrow(Exception('Ошибка загрузки'));
|
|
|
|
await cubit!.loadConsultations();
|
|
|
|
expect(cubit!.state.state, BaseState.error);
|
|
});
|
|
});
|
|
}
|
|
|