Files
eatvio_app/test/features/calendar/presentation/bloc/calendar_cubit_test.dart

54 lines
1.8 KiB
Dart

import 'package:eatvio_app/features/calendar/models/calendar_model.dart';
import 'package:eatvio_app/features/calendar/presentation/bloc/calendar_cubit.dart';
import 'package:eatvio_app/features/calendar/presentation/bloc/calendar_state.dart';
import 'package:eatvio_app/features/calendar/repositories/calendar_repository.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
class MockCalendarRepository extends Mock implements CalendarRepository {}
void main() {
group('CalendarCubit', () {
late CalendarCubit cubit;
late MockCalendarRepository mockRepository;
setUp(() {
mockRepository = MockCalendarRepository();
cubit = CalendarCubit(calendarRepository: mockRepository);
});
tearDown(() {
cubit.close();
});
test('начальное состояние - loading', () {
expect(cubit.state, isA<CalendarStateLoading>());
});
test('loadCalendarList - успешная загрузка', () async {
final mockCalendarList = <CalendarModel>[];
when(() => mockRepository.getCalendar())
.thenAnswer((_) async => mockCalendarList);
await cubit.loadCalendarList();
expect(cubit.state, isA<CalendarStateLoaded>());
final loadedState = cubit.state as CalendarStateLoaded;
expect(loadedState.calendarList, mockCalendarList);
verify(() => mockRepository.getCalendar()).called(1);
});
test('loadCalendarList - обработка ошибки', () async {
when(() => mockRepository.getCalendar())
.thenThrow(Exception('Error'));
await cubit.loadCalendarList();
expect(cubit.state, isA<CalendarStateError>());
final errorState = cubit.state as CalendarStateError;
expect(errorState.errorMessage, isNotEmpty);
});
});
}