Skip to content

Commit 73546b3

Browse files
Add test for image.loading_builder.0.dart (flutter#158248)
Contributes to flutter#130459 It adds a test for - `examples/api/lib/widgets/image/image.loading_builder.0.dart`
1 parent 3a83e43 commit 73546b3

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

dev/bots/check_code_samples.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,5 +311,4 @@ class SampleChecker {
311311
final Set<String> _knownMissingTests = <String>{
312312
'examples/api/test/material/color_scheme/dynamic_content_color.0_test.dart',
313313
'examples/api/test/widgets/image/image.frame_builder.0_test.dart',
314-
'examples/api/test/widgets/image/image.loading_builder.0_test.dart',
315314
};
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Copyright 2014 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'dart:io';
6+
7+
import 'package:flutter/material.dart';
8+
import 'package:flutter_api_samples/widgets/image/image.loading_builder.0.dart'
9+
as example;
10+
import 'package:flutter_test/flutter_test.dart';
11+
12+
void main() {
13+
// The app being tested loads images via HTTP which the test
14+
// framework defeats by default.
15+
setUpAll(() {
16+
HttpOverrides.global = null;
17+
});
18+
19+
testWidgets('The loading builder returns the child when there is no loading progress', (WidgetTester tester) async {
20+
await tester.pumpWidget(
21+
const example.LoadingBuilderExampleApp(),
22+
);
23+
await tester.pumpAndSettle();
24+
25+
final Image image = tester.widget<Image>(find.byType(Image));
26+
final ImageLoadingBuilder loadingBuilder = image.loadingBuilder!;
27+
final BuildContext context = tester.element(find.byType(Image));
28+
29+
const SizedBox child = SizedBox(key: Key('child'));
30+
31+
await tester.pumpWidget(loadingBuilder(context, child, null));
32+
33+
expect(find.byWidget(child), findsOne);
34+
expect(find.byType(CircularProgressIndicator), findsNothing);
35+
});
36+
37+
testWidgets('The loading builder returns a circular progress indicator when loading', (WidgetTester tester) async {
38+
await tester.pumpWidget(
39+
const example.LoadingBuilderExampleApp(),
40+
);
41+
await tester.pumpAndSettle();
42+
43+
final Image image = tester.widget<Image>(find.byType(Image));
44+
final ImageLoadingBuilder loadingBuilder = image.loadingBuilder!;
45+
final BuildContext context = tester.element(find.byType(Image));
46+
47+
const SizedBox child = SizedBox(key: Key('child'));
48+
49+
await tester.pumpWidget(
50+
MaterialApp(
51+
home: loadingBuilder(
52+
context,
53+
child,
54+
const ImageChunkEvent(
55+
cumulativeBytesLoaded: 1,
56+
expectedTotalBytes: 10,
57+
),
58+
),
59+
),
60+
);
61+
62+
expect(find.byWidget(child), findsNothing);
63+
expect(find.byType(CircularProgressIndicator), findsOne);
64+
});
65+
}

0 commit comments

Comments
 (0)