Skip to content

Commit 67cce3b

Browse files
authored
Merge pull request #12 from CodandoTV/feature/unit-tests-for-search-book
Unit tests for search books
2 parents e35d959 + 6e90918 commit 67cce3b

2 files changed

Lines changed: 70 additions & 0 deletions

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
import 'package:mibook/layers/domain/models/book_list_domain.dart';
3+
4+
import 'fake_book_domain.dart';
5+
6+
final fakeBookListDomain = BookListDomain(
7+
totalItems: 1,
8+
books: [fakeBookDomain],
9+
);
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import 'package:flutter_test/flutter_test.dart';
2+
import 'package:mibook/layers/domain/repository/search_repository.dart';
3+
import 'package:mibook/layers/domain/usecases/search_books.dart';
4+
import 'package:mockito/annotations.dart';
5+
import 'package:mockito/mockito.dart';
6+
7+
import 'fakes/fake_book_list_domain.dart';
8+
9+
@GenerateNiceMocks([MockSpec<ISearchRepository>()])
10+
import 'search_books_test.mocks.dart';
11+
12+
void main() {
13+
late MockISearchRepository mockSearchRepository;
14+
late SearchBooks searchBooks;
15+
16+
setUp(() {
17+
mockSearchRepository = MockISearchRepository();
18+
searchBooks = SearchBooks(
19+
mockSearchRepository,
20+
);
21+
});
22+
23+
group('SearchBooks', () {
24+
test('call returns BookListDomain on success', () async {
25+
when(
26+
mockSearchRepository.searchByTitle(
27+
initTitle: 'initTitle',
28+
startIndex: 0,
29+
),
30+
).thenAnswer((_) async => Future.value(fakeBookListDomain));
31+
32+
final result = await searchBooks.call(
33+
initTitle: 'initTitle',
34+
startIndex: 0,
35+
);
36+
expect(result, fakeBookListDomain);
37+
});
38+
39+
test('call returns BookListDomain on failure', () async {
40+
when(
41+
mockSearchRepository.searchByTitle(
42+
initTitle: 'initTitle',
43+
startIndex: 0,
44+
),
45+
).thenThrow(Exception('Something went wrong'));
46+
47+
var error = false;
48+
try {
49+
await searchBooks.call(
50+
initTitle: 'initTitle',
51+
startIndex: 0,
52+
);
53+
error = false;
54+
} catch (e) {
55+
error = true;
56+
}
57+
58+
expect(error, isTrue);
59+
});
60+
});
61+
}

0 commit comments

Comments
 (0)