-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy patharticle_detail_screen_should.dart
79 lines (68 loc) · 3.01 KB
/
article_detail_screen_should.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:nyt_flutter/article_detail/presentation/screen/article_detail.dart';
import 'package:nyt_flutter/articles_list/data/model/article.dart';
import 'package:nyt_flutter/common/constant.dart';
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('show title', (WidgetTester tester) async {
await tester.pumpWidget(getArticleDetailWidget(mockArticle));
await tester.pumpAndSettle();
expect(find.text('Article title'), findsOneWidget);
});
testWidgets('show description', (WidgetTester tester) async {
await tester.pumpWidget(getArticleDetailWidget(mockArticle));
await tester.pumpAndSettle();
expect(find.text('abstract'), findsOneWidget);
});
testWidgets('show image', (WidgetTester tester) async {
await tester.pumpWidget(getArticleDetailWidget(mockArticle));
await tester.pumpAndSettle();
final CachedNetworkImage articleImageWidget = tester
.widget<CachedNetworkImage>(find.byKey(const Key('articleImage')));
expect(articleImageWidget.imageUrl, mockImageUrl);
});
testWidgets(
'show default image when 3rd image in model object does not exist',
(WidgetTester tester) async {
await tester
.pumpWidget(getArticleDetailWidget(mockArticleWithMissingImage));
await tester.pumpAndSettle();
final CachedNetworkImage articleImageWidget = tester
.widget<CachedNetworkImage>(find.byKey(const Key('articleImage')));
expect(articleImageWidget.imageUrl, defaultImage);
});
testWidgets('show default image when no metadata',
(WidgetTester tester) async {
await tester.pumpWidget(getArticleDetailWidget(mockArticleWithMetaData));
await tester.pumpAndSettle();
final CachedNetworkImage articleImageWidget = tester
.widget<CachedNetworkImage>(find.byKey(const Key('articleImage')));
expect(articleImageWidget.imageUrl, defaultImage);
});
}
const String mockImageUrl =
'https://media.istockphoto.com/photos/eagle-hunter-in-traditional-costume-riding-horse-with-golden-eagle-in-picture-id1343808526';
Article mockArticle =
Article('Article title', 'abstract', 123, 'url', 'publishedData', <Media>[
Media('caption', <MediaMetaData>[
MediaMetaData('url', 'format'),
MediaMetaData('url', 'format'),
MediaMetaData(mockImageUrl, 'format'),
])
]);
Article mockArticleWithMissingImage =
Article('Article title', 'abstract', 123, 'url', 'publishedData', <Media>[
Media('caption', <MediaMetaData>[
MediaMetaData('url', 'format'),
MediaMetaData(mockImageUrl, 'format'),
])
]);
Article mockArticleWithMetaData = Article('Article title', 'abstract', 123,
'url', 'publishedData', <Media>[Media('caption', <MediaMetaData>[])]);
MaterialApp getArticleDetailWidget(Article article) => MaterialApp(
theme: ThemeData(),
home: ArticleDetail(article),
);