chore(version): update app version to 1.3.5+85 and improve test coverage reporting in CI

This commit is contained in:
mso7nueh
2025-12-08 11:19:08 +03:00
parent abe4985f0e
commit c2a506cdbf
148 changed files with 12395 additions and 1889 deletions

View File

@@ -1,80 +1,51 @@
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: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 'package:mocktail/mocktail.dart';
import 'consultations_cubit_test.mocks.dart';
class MockConsultationsRepository extends Mock implements ConsultationsRepository {}
@GenerateNiceMocks([MockSpec<ConsultationsRepository>()])
void main() {
group('ConsultationsCubit', () {
ConsultationsCubit? cubit;
late 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);
tearDown(() {
cubit.close();
});
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,
),
];
test('начальное состояние - ComplaintsState', () {
expect(cubit.state, isA<ConsultationsState>());
});
when(mockRepository.getConsultations())
.thenAnswer((_) async => testConsultations);
test('loadConsultations - успешная загрузка', () async {
final mockConsultations = <ConsultationModel>[];
await cubit!.loadConsultations();
when(() => mockRepository.getConsultations())
.thenAnswer((_) async => mockConsultations);
expect(cubit!.state.state, BaseState.success);
expect(cubit!.state.consultations.length, 1);
await cubit.loadConsultations();
expect(cubit.state.state, BaseState.success);
expect(cubit.state.consultations, mockConsultations);
verify(() => mockRepository.getConsultations()).called(1);
});
test('loadConsultations - обработка ошибки', () async {
cubit = ConsultationsCubit(consultationsRepository: mockRepository);
when(() => mockRepository.getConsultations())
.thenThrow(Exception('Error'));
when(mockRepository.getConsultations())
.thenThrow(Exception('Ошибка загрузки'));
await cubit.loadConsultations();
await cubit!.loadConsultations();
expect(cubit!.state.state, BaseState.error);
expect(cubit.state.state, BaseState.error);
});
});
}