Files
eatvio_app/test/features/consultations/presentation/cubit/consultations_cubit_test.dart

52 lines
1.8 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/presentation/cubit/consultations_state.dart';
import 'package:eatvio_app/features/consultations/repositories/consultations_repository.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
class MockConsultationsRepository extends Mock implements ConsultationsRepository {}
void main() {
group('ConsultationsCubit', () {
late ConsultationsCubit cubit;
late MockConsultationsRepository mockRepository;
setUp(() {
mockRepository = MockConsultationsRepository();
cubit = ConsultationsCubit(consultationsRepository: mockRepository);
});
tearDown(() {
cubit.close();
});
test('начальное состояние - ComplaintsState', () {
expect(cubit.state, isA<ConsultationsState>());
});
test('loadConsultations - успешная загрузка', () async {
final mockConsultations = <ConsultationModel>[];
when(() => mockRepository.getConsultations())
.thenAnswer((_) async => mockConsultations);
await cubit.loadConsultations();
expect(cubit.state.state, BaseState.success);
expect(cubit.state.consultations, mockConsultations);
verify(() => mockRepository.getConsultations()).called(1);
});
test('loadConsultations - обработка ошибки', () async {
when(() => mockRepository.getConsultations())
.thenThrow(Exception('Error'));
await cubit.loadConsultations();
expect(cubit.state.state, BaseState.error);
});
});
}