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