diff --git a/pubspec.yaml b/pubspec.yaml index 3f16769f..c4c84ade 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -82,6 +82,7 @@ dependencies: material_symbols_icons: ^4.2874.0 rxdart: ^0.27.7 gpassword: ^1.0.0 + dev_dependencies: build_runner: ^2.7.0 freezed: ^3.2.0 diff --git a/test/features/my_diets/repositories/my_diets_repository_test.dart b/test/features/my_diets/repositories/my_diets_repository_test.dart index 5dca4771..51ebcde9 100644 --- a/test/features/my_diets/repositories/my_diets_repository_test.dart +++ b/test/features/my_diets/repositories/my_diets_repository_test.dart @@ -8,83 +8,6 @@ import 'package:mockito/mockito.dart'; import 'my_diets_repository_test.mocks.dart'; -@GenerateNiceMocks([MockSpec()]) -void main() { - group('MyDietsRepository', () { - late MyDietsRepository repository; - late MockMyDietsService mockService; - - setUp(() { - mockService = MockMyDietsService(); - repository = MyDietsRepository(myDietsService: mockService); - }); - - test('deleteDiet - успешное удаление диеты', () async { - const dietId = 1; - - when(mockService.deleteDiet(dietId: dietId)) - .thenAnswer((_) async => Future.value()); - - await repository.deleteDiet(dietId); - - verify(mockService.deleteDiet(dietId: dietId)).called(1); - }); - - test('getDiets - успешное получение диет', () async { - const pagination = DietsPagination( - data: [], - links: Links( - first: 'https://example.com?page=1', - last: 'https://example.com?page=1', - prev: null, - next: null, - ), - meta: Meta( - currentPage: 1, - from: 1, - lastPage: 1, - links: [], - perPage: 10, - to: 1, - total: 0, - ), - ); - - when(mockService.getDiets( - page: 1, - query: null, - types: null, - duration: null, - sorting: null, - state: null, - )).thenAnswer((_) async => pagination); - - final result = await repository.getDiets(); - - expect(result, equals(pagination)); - verify(mockService.getDiets( - page: 1, - query: null, - types: null, - duration: null, - sorting: null, - state: null, - )).called(1); - }); - }); -} - - -import 'package:eatvio_app/core/models/pagination_model.dart'; -import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; -import 'package:eatvio_app/features/my_diets/repositories/my_diets_repository.dart'; -import 'package:eatvio_app/features/my_diets/services/my_diets_service.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mockito/annotations.dart'; -import 'package:mockito/mockito.dart'; - -import 'my_diets_repository_test.mocks.dart'; - @GenerateNiceMocks([MockSpec()]) void main() { group('MyDietsRepository', () { @@ -287,4 +210,3 @@ void main() { }); }); } - diff --git a/test/features/my_plans/presentation/cubit/my_plans_cubit_test.dart b/test/features/my_plans/presentation/cubit/my_plans_cubit_test.dart index da4e7bea..3ce18d69 100644 --- a/test/features/my_plans/presentation/cubit/my_plans_cubit_test.dart +++ b/test/features/my_plans/presentation/cubit/my_plans_cubit_test.dart @@ -1,131 +1,3 @@ -import 'package:eatvio_app/core/models/pagination_model.dart'; -import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; -import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart'; -import 'package:eatvio_app/features/my_plans/presentation/cubit/my_plans_cubit.dart'; -import 'package:eatvio_app/features/my_plans/repositories/my_diets_repository.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mockito/annotations.dart'; -import 'package:mockito/mockito.dart'; - -import 'my_plans_cubit_test.mocks.dart'; - -@GenerateNiceMocks([MockSpec()]) -void main() { - group('MyPlansCubit', () { - MyPlansCubit? myPlansCubit; - late MockMyPlansRepository mockMyPlansRepository; - - setUp(() { - mockMyPlansRepository = MockMyPlansRepository(); - }); - - tearDown(() async { - if (myPlansCubit != null && !myPlansCubit!.isClosed) { - await myPlansCubit!.close(); - myPlansCubit = null; - } - }); - - test('начальное состояние - пустое', () { - myPlansCubit = MyPlansCubit(myPlansRepository: mockMyPlansRepository); - - expect(myPlansCubit!.state.activePlans, isEmpty); - expect(myPlansCubit!.state.draftPlans, isEmpty); - expect(myPlansCubit!.state.isLoading, isFalse); - }); - - test('changePriceFilter - изменяет фильтр цены для активных планов', () { - myPlansCubit = MyPlansCubit(myPlansRepository: mockMyPlansRepository); - - myPlansCubit!.changePriceFilter(100, 500); - - expect(myPlansCubit!.state.activeFilterState.priceFilter, (100, 500)); - }); - - test('changeTypeFilter - изменяет тип фильтра', () { - myPlansCubit = MyPlansCubit(myPlansRepository: mockMyPlansRepository); - - myPlansCubit!.changeTypeFilter(1); - - expect(myPlansCubit!.state.activeFilterState.typeIndex, 1); - }); - - test('changeDurationFilter - изменяет фильтр продолжительности', () { - myPlansCubit = MyPlansCubit(myPlansRepository: mockMyPlansRepository); - - myPlansCubit!.changeDurationFilter(1); - - expect(myPlansCubit!.state.activeFilterState.durationIndex, 1); - }); - - test('loadActivePlans - успешная загрузка активных планов', () async { - myPlansCubit = MyPlansCubit(myPlansRepository: mockMyPlansRepository); - - const testPlan = PlanModel( - id: 1, - slug: 'test-plan', - name: 'Test Plan', - image: 'https://example.com/image.jpg', - duration: 7, - state: 'active', - type: PlanType(fit: true, slim: false, behavior: false, wellness: false), - details: 'Test description', - packetsCount: 3, - minPriceOfOptions: 1000.0, - maxPriceOfOptions: 2000.0, - author: Author( - authorSlug: 'author', - authorName: 'Author Name', - authorProfileIcon: 'https://example.com/icon.jpg', - authorIsMe: false, - isEntitySubscribedByMe: null, - authorPlaceInRating: null, - ), - totalLikes: 10, - totalViews: 100, - totalComments: 5, - wasLikedByMe: false, - isFavorite: false, - ); - - const plansPagination = PlanPaginationModel( - data: [testPlan], - links: Links( - first: 'https://example.com?page=1', - last: 'https://example.com?page=1', - prev: null, - next: null, - ), - meta: Meta( - currentPage: 1, - from: 1, - lastPage: 1, - links: [], - perPage: 10, - to: 1, - total: 1, - ), - ); - - when(mockMyPlansRepository.getPlans( - query: anyNamed('query'), - types: anyNamed('types'), - duration: anyNamed('duration'), - minPrice: anyNamed('minPrice'), - maxPrice: anyNamed('maxPrice'), - page: anyNamed('page'), - )).thenAnswer((_) async => plansPagination); - - await myPlansCubit!.loadAllPlans(); - - await Future.delayed(const Duration(milliseconds: 200)); - expect(myPlansCubit!.state.activePlans.length, 1); - expect(myPlansCubit!.state.error, isNull); - }); - }); -} - - import 'package:eatvio_app/core/models/pagination_model.dart'; import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart'; @@ -381,4 +253,3 @@ void main() { }); }); } -