Skip to content

Commit fe2e893

Browse files
authored
Merge pull request #554 from daohoangson/refactor/mocktail
Switch to use mocktail
2 parents d4b09da + 4f72e43 commit fe2e893

File tree

3 files changed

+70
-54
lines changed

3 files changed

+70
-54
lines changed

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dependencies:
1313
dev_dependencies:
1414
flutter_test:
1515
sdk: flutter
16-
mockito: ^4.1.1
16+
mocktail: ^0.0.1-0
1717
pedantic: ^1.9.0
1818
file: ^5.2.1
1919

test/fake_cache_manager.dart

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,19 @@ import 'dart:typed_data';
66

77
import 'package:file/memory.dart';
88
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
9-
import 'package:mockito/mockito.dart';
9+
import 'package:mocktail/mocktail.dart';
1010
import 'dart:async';
1111

1212
class FakeCacheManager extends Mock implements CacheManager {
1313
void throwsNotFound(String url) {
14-
when(getFileStream(
15-
url,
16-
withProgress: anyNamed('withProgress'),
17-
headers: anyNamed('headers'),
18-
key: anyNamed('key'),
19-
)).thenThrow(HttpExceptionWithStatus(404, 'Invalid statusCode: 404',
14+
when(this).calls(#getFileStream).withArgs(
15+
positional: [url],
16+
named: {
17+
#key: any,
18+
#headers: any,
19+
#withProgress: any,
20+
},
21+
).thenThrow(HttpExceptionWithStatus(404, 'Invalid statusCode: 404',
2022
uri: Uri.parse(url)));
2123
}
2224

@@ -31,12 +33,14 @@ class FakeCacheManager extends Mock implements CacheManager {
3133
Uint8List.fromList(imageData.skip(offset).take(chunkSize).toList()),
3234
];
3335

34-
when(getFileStream(
35-
url,
36-
withProgress: anyNamed('withProgress'),
37-
headers: anyNamed('headers'),
38-
key: anyNamed('key'),
39-
)).thenAnswer((realInvocation) => _createResultStream(
36+
when(this).calls(#getFileStream).withArgs(
37+
positional: [url],
38+
named: {
39+
#key: any,
40+
#headers: any,
41+
#withProgress: any,
42+
},
43+
).thenAnswer((_) => _createResultStream(
4044
url,
4145
chunks,
4246
imageData,
@@ -74,27 +78,31 @@ class FakeCacheManager extends Mock implements CacheManager {
7478

7579
class FakeImageCacheManager extends Mock implements ImageCacheManager {
7680
ExpectedData returns(
77-
String url,
78-
List<int> imageData, {
79-
Duration delayBetweenChunks,
80-
}) {
81+
String url,
82+
List<int> imageData, {
83+
Duration delayBetweenChunks,
84+
}) {
8185
const chunkSize = 8;
8286
final chunks = <Uint8List>[
8387
for (int offset = 0; offset < imageData.length; offset += chunkSize)
8488
Uint8List.fromList(imageData.skip(offset).take(chunkSize).toList()),
8589
];
8690

87-
when(getImageFile(
88-
url,
89-
withProgress: anyNamed('withProgress'),
90-
headers: anyNamed('headers'),
91-
key: anyNamed('key'),
92-
)).thenAnswer((realInvocation) => _createResultStream(
93-
url,
94-
chunks,
95-
imageData,
96-
delayBetweenChunks,
97-
));
91+
when(this).calls(#getImageFile).withArgs(
92+
positional: [url],
93+
named: {
94+
#key: any,
95+
#headers: any,
96+
#withProgress: any,
97+
#maxHeight: any,
98+
#maxWidth: any,
99+
},
100+
).thenAnswer((_) => _createResultStream(
101+
url,
102+
chunks,
103+
imageData,
104+
delayBetweenChunks,
105+
));
98106

99107
return ExpectedData(
100108
chunks: chunks.length,
@@ -104,11 +112,11 @@ class FakeImageCacheManager extends Mock implements ImageCacheManager {
104112
}
105113

106114
Stream<FileResponse> _createResultStream(
107-
String url,
108-
List<Uint8List> chunks,
109-
List<int> imageData,
110-
Duration delayBetweenChunks,
111-
) async* {
115+
String url,
116+
List<Uint8List> chunks,
117+
List<int> imageData,
118+
Duration delayBetweenChunks,
119+
) async* {
112120
var totalSize = imageData.length;
113121
var downloaded = 0;
114122
for (var chunk in chunks) {

test/image_cache_manager_test.dart

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import 'package:flutter/foundation.dart';
1111
import 'package:flutter/painting.dart';
1212
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
1313
import 'package:flutter_test/flutter_test.dart';
14+
import 'package:mocktail/mocktail.dart';
1415

1516
import 'fake_cache_manager.dart';
1617
import 'image_data.dart';
1718
import 'rendering_tester.dart';
18-
import 'package:mockito/mockito.dart';
1919

2020
void main() {
2121
TestRenderingFlutterBinding();
@@ -45,19 +45,25 @@ void main() {
4545
));
4646
await imageAvailable.future;
4747

48-
verify(cacheManager.getImageFile(
49-
url,
50-
withProgress: anyNamed('withProgress'),
51-
headers: anyNamed('headers'),
52-
key: anyNamed('key'),
53-
)).called(1);
54-
55-
verifyNever(cacheManager.getFileStream(
56-
url,
57-
withProgress: anyNamed('withProgress'),
58-
headers: anyNamed('headers'),
59-
key: anyNamed('key'),
60-
));
48+
verify(cacheManager).called(#getImageFile).withArgs(
49+
positional: [url],
50+
named: {
51+
#key: any,
52+
#headers: any,
53+
#withProgress: any,
54+
#maxHeight: any,
55+
#maxWidth: any,
56+
},
57+
).times(1);
58+
59+
verify(cacheManager).called(#getFileStream).withArgs(
60+
positional: [url],
61+
named: {
62+
#key: any,
63+
#headers: any,
64+
#withProgress: any,
65+
},
66+
).never();
6167
}, skip: isBrowser);
6268

6369
test('Supplying an CacheManager should call getFileStream', () async {
@@ -78,12 +84,14 @@ void main() {
7884
));
7985
await imageAvailable.future;
8086

81-
verify(cacheManager.getFileStream(
82-
url,
83-
withProgress: anyNamed('withProgress'),
84-
headers: anyNamed('headers'),
85-
key: anyNamed('key'),
86-
)).called(1);
87+
verify(cacheManager).called(#getFileStream).withArgs(
88+
positional: [url],
89+
named: {
90+
#key: any,
91+
#headers: any,
92+
#withProgress: any,
93+
},
94+
).times(1);
8795
}, skip: isBrowser);
8896

8997
test('Supplying an CacheManager with maxHeight throws assertion', () async {

0 commit comments

Comments
 (0)