Skip to content

Commit 6c51b3e

Browse files
committed
feat: add network error tests
1 parent f4a141d commit 6c51b3e

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// ignore_for_file: prefer_const_constructors
2+
3+
import 'package:flutter/material.dart';
4+
import 'package:flutter_news_example/network_error/network_error.dart';
5+
import 'package:flutter_test/flutter_test.dart';
6+
import 'package:go_router/go_router.dart';
7+
import 'package:mocktail/mocktail.dart';
8+
9+
import '../helpers/helpers.dart';
10+
11+
class MockGoRouter extends Mock implements GoRouter {}
12+
13+
void main() {
14+
const tapMeText = 'Tap Me';
15+
late GoRouter goRouter;
16+
17+
setUpAll(() {
18+
goRouter = MockGoRouter();
19+
when(() => goRouter.goNamed(NetworkErrorPage.routePath)).thenAnswer((_) {});
20+
});
21+
22+
group('NetworkError', () {
23+
testWidgets('renders correctly', (tester) async {
24+
await tester.pumpApp(NetworkError());
25+
26+
expect(find.byType(NetworkError), findsOneWidget);
27+
});
28+
29+
testWidgets('navigates to network error page routePath', (tester) async {
30+
await tester.pumpApp(
31+
InheritedGoRouter(
32+
goRouter: goRouter,
33+
child: Scaffold(
34+
body: Builder(
35+
builder: (context) {
36+
return ElevatedButton(
37+
onPressed: () {
38+
context.goNamed(NetworkErrorPage.routePath);
39+
},
40+
child: const Text(tapMeText),
41+
);
42+
},
43+
),
44+
),
45+
),
46+
);
47+
48+
await tester.tap(find.text(tapMeText));
49+
50+
verify(() => goRouter.goNamed(NetworkErrorPage.routePath)).called(1);
51+
});
52+
});
53+
54+
testWidgets('calls onRetry function when button pressed', (tester) async {
55+
var retryPressed = false;
56+
await tester.pumpApp(
57+
NetworkError(
58+
onRetry: () {
59+
retryPressed = true;
60+
},
61+
),
62+
);
63+
64+
await tester.tap(find.byType(ElevatedButton));
65+
66+
expect(retryPressed, isTrue);
67+
});
68+
}

0 commit comments

Comments
 (0)