forked from eatvio/eatvio_app
chore(version): update app version to 1.3.5+85 and improve test coverage reporting in CI
This commit is contained in:
@@ -7,65 +7,36 @@ import 'package:mockito/mockito.dart';
|
||||
|
||||
import 'views_repository_test.mocks.dart';
|
||||
|
||||
@GenerateNiceMocks([MockSpec<ViewsService>()])
|
||||
@GenerateMocks([ViewsService])
|
||||
void main() {
|
||||
group('ViewsRepository', () {
|
||||
late ViewsRepository viewsRepository;
|
||||
late MockViewsService mockViewsService;
|
||||
late ViewsRepository repository;
|
||||
|
||||
setUp(() {
|
||||
mockViewsService = MockViewsService();
|
||||
viewsRepository = ViewsRepository(viewsService: mockViewsService);
|
||||
repository = ViewsRepository(viewsService: mockViewsService);
|
||||
});
|
||||
|
||||
test('viewContent - успешная отправка просмотров', () async {
|
||||
final viewModel = ViewModel(
|
||||
type: 'blog_posts',
|
||||
ids: [1, 2, 3],
|
||||
);
|
||||
test('viewContent calls viewsService.viewContent', () async {
|
||||
final viewModel = ViewModel(type: 'posts', ids: [1, 2, 3]);
|
||||
|
||||
when(mockViewsService.viewContent(viewModel: viewModel))
|
||||
.thenAnswer((_) async => Future.value());
|
||||
|
||||
await viewsRepository.viewContent(viewModel: viewModel);
|
||||
await repository.viewContent(viewModel: viewModel);
|
||||
|
||||
verify(mockViewsService.viewContent(viewModel: viewModel)).called(1);
|
||||
});
|
||||
|
||||
test('viewContent - пробрасывает исключение', () async {
|
||||
final viewModel = ViewModel(
|
||||
type: 'blog_posts',
|
||||
ids: [1, 2, 3],
|
||||
);
|
||||
test('viewContent rethrows exception when service throws', () async {
|
||||
final viewModel = ViewModel(type: 'posts', ids: [1, 2, 3]);
|
||||
final exception = Exception('Test error');
|
||||
|
||||
when(mockViewsService.viewContent(viewModel: viewModel))
|
||||
.thenThrow(Exception('Ошибка отправки'));
|
||||
.thenThrow(exception);
|
||||
|
||||
expect(
|
||||
() => viewsRepository.viewContent(viewModel: viewModel),
|
||||
throwsException,
|
||||
);
|
||||
});
|
||||
|
||||
test('viewContent - работает с разными типами контента', () async {
|
||||
final postsModel = ViewModel(type: 'blog_posts', ids: [1]);
|
||||
final plansModel = ViewModel(type: 'plans', ids: [2]);
|
||||
final dietsModel = ViewModel(type: 'diets', ids: [3]);
|
||||
final recipesModel = ViewModel(type: 'recipes', ids: [4]);
|
||||
|
||||
when(mockViewsService.viewContent(viewModel: anyNamed('viewModel')))
|
||||
.thenAnswer((_) async => Future.value());
|
||||
|
||||
await viewsRepository.viewContent(viewModel: postsModel);
|
||||
await viewsRepository.viewContent(viewModel: plansModel);
|
||||
await viewsRepository.viewContent(viewModel: dietsModel);
|
||||
await viewsRepository.viewContent(viewModel: recipesModel);
|
||||
|
||||
verify(mockViewsService.viewContent(viewModel: postsModel)).called(1);
|
||||
verify(mockViewsService.viewContent(viewModel: plansModel)).called(1);
|
||||
verify(mockViewsService.viewContent(viewModel: dietsModel)).called(1);
|
||||
verify(mockViewsService.viewContent(viewModel: recipesModel)).called(1);
|
||||
expect(() => repository.viewContent(viewModel: viewModel), throwsException);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user