forked from eatvio/eatvio_app
52 lines
1.8 KiB
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);
|
|
});
|
|
});
|
|
}
|