Volodymyr Buberenko

Refactor tests for Get.to, Get.toNamed, Get.off, Get.offNamed, Get.offAll, Get.offAllNamed

@@ -4,53 +4,27 @@ import 'package:get/get.dart'; @@ -4,53 +4,27 @@ import 'package:get/get.dart';
4 4
5 import 'utils/wrapper.dart'; 5 import 'utils/wrapper.dart';
6 6
7 -class SizeTransitions extends CustomTransition {  
8 - @override  
9 - Widget buildTransition(  
10 - BuildContext context,  
11 - Curve curve,  
12 - Alignment alignment,  
13 - Animation<double> animation,  
14 - Animation<double> secondaryAnimation,  
15 - Widget child) {  
16 - return Align(  
17 - alignment: Alignment.center,  
18 - child: SizeTransition(  
19 - sizeFactor: CurvedAnimation(  
20 - parent: animation,  
21 - curve: curve,  
22 - ),  
23 - child: child,  
24 - ),  
25 - );  
26 - }  
27 -}  
28 -  
29 void main() { 7 void main() {
30 - testWidgets("Get.to smoke test", (tester) async { 8 + testWidgets("Get.to navigates to provided route", (tester) async {
31 await tester.pumpWidget( 9 await tester.pumpWidget(
32 Wrapper(child: Container()), 10 Wrapper(child: Container()),
33 ); 11 );
34 12
35 - Get.to(SecondScreen());  
36 -  
37 - await tester.pump(Duration.zero); 13 + Get.to(FirstScreen());
38 14
39 await tester.pumpAndSettle(); 15 await tester.pumpAndSettle();
40 16
41 - expect(find.byType(SecondScreen), findsOneWidget); 17 + expect(find.byType(FirstScreen), findsOneWidget);
42 }); 18 });
43 - testWidgets("Get.toNamed smoke test", (tester) async { 19 +
  20 + testWidgets("Get.toNamed navigates to provided named route", (tester) async {
44 await tester.pumpWidget( 21 await tester.pumpWidget(
45 GetMaterialApp( 22 GetMaterialApp(
46 initialRoute: '/', 23 initialRoute: '/',
47 getPages: [ 24 getPages: [
48 - GetPage(  
49 - page: () => FirstScreen(),  
50 - name: '/',  
51 - customTransition: SizeTransitions()), 25 + GetPage(page: () => FirstScreen(), name: '/'),
52 GetPage(page: () => SecondScreen(), name: '/second'), 26 GetPage(page: () => SecondScreen(), name: '/second'),
53 - GetPage(page: () => ThirdScreen(), name: '/third'), 27 + GetPage(page: () => ThirdScreen(), name: '/third')
54 ], 28 ],
55 ), 29 ),
56 ); 30 );
@@ -62,25 +36,34 @@ void main() { @@ -62,25 +36,34 @@ void main() {
62 expect(find.byType(SecondScreen), findsOneWidget); 36 expect(find.byType(SecondScreen), findsOneWidget);
63 }); 37 });
64 38
65 - testWidgets("Get.off smoke test", (tester) async { 39 + testWidgets("Get.off navigates to provided route", (tester) async {
66 await tester.pumpWidget( 40 await tester.pumpWidget(
67 Wrapper(child: Container()), 41 Wrapper(child: Container()),
68 ); 42 );
69 43
70 Get.to(FirstScreen()); 44 Get.to(FirstScreen());
  45 + Get.off(SecondScreen());
71 46
72 await tester.pumpAndSettle(); 47 await tester.pumpAndSettle();
73 48
74 - expect(find.byType(FirstScreen), findsOneWidget); 49 + expect(find.byType(SecondScreen), findsOneWidget);
  50 + });
  51 +
  52 + testWidgets("Get.off removes current route", (tester) async {
  53 + await tester.pumpWidget(
  54 + Wrapper(child: Container()),
  55 + );
75 56
  57 + Get.to(FirstScreen());
76 Get.off(SecondScreen()); 58 Get.off(SecondScreen());
  59 + Get.back();
77 60
78 await tester.pumpAndSettle(); 61 await tester.pumpAndSettle();
79 62
80 - expect(find.byType(SecondScreen), findsOneWidget); 63 + expect(find.byType(FirstScreen), findsNothing);
81 }); 64 });
82 65
83 - testWidgets("Get.offNamed smoke test", (tester) async { 66 + testWidgets("Get.offNamed navigates to provided named route", (tester) async {
84 await tester.pumpWidget( 67 await tester.pumpWidget(
85 GetMaterialApp( 68 GetMaterialApp(
86 initialRoute: '/', 69 initialRoute: '/',
@@ -93,73 +76,135 @@ void main() { @@ -93,73 +76,135 @@ void main() {
93 ), 76 ),
94 ); 77 );
95 78
96 - Get.toNamed('/first'); 79 + Get.offNamed('/first');
97 80
98 await tester.pumpAndSettle(); 81 await tester.pumpAndSettle();
99 82
100 expect(find.byType(FirstScreen), findsOneWidget); 83 expect(find.byType(FirstScreen), findsOneWidget);
  84 + });
101 85
  86 + testWidgets("Get.offNamed removes current route", (tester) async {
  87 + await tester.pumpWidget(
  88 + GetMaterialApp(
  89 + initialRoute: '/',
  90 + getPages: [
  91 + GetPage(name: '/', page: () => Container()),
  92 + GetPage(name: '/first', page: () => FirstScreen()),
  93 + GetPage(name: '/second', page: () => SecondScreen()),
  94 + GetPage(name: '/third', page: () => ThirdScreen()),
  95 + ],
  96 + ),
  97 + );
  98 +
  99 + Get.toNamed('/first');
102 Get.offNamed('/second'); 100 Get.offNamed('/second');
  101 + Get.back();
103 102
104 await tester.pumpAndSettle(); 103 await tester.pumpAndSettle();
105 104
106 - expect(find.byType(SecondScreen), findsOneWidget); 105 + expect(find.byType(FirstScreen), findsNothing);
107 }); 106 });
108 107
109 - testWidgets("Get.offAll smoke test", (tester) async { 108 + testWidgets("Get.offNamed removes only current route", (tester) async {
  109 + await tester.pumpWidget(
  110 + GetMaterialApp(
  111 + initialRoute: '/',
  112 + getPages: [
  113 + GetPage(name: '/', page: () => Container()),
  114 + GetPage(name: '/first', page: () => FirstScreen()),
  115 + GetPage(name: '/second', page: () => SecondScreen()),
  116 + GetPage(name: '/third', page: () => ThirdScreen()),
  117 + ],
  118 + ),
  119 + );
  120 +
  121 + Get.toNamed('/first');
  122 + Get.offNamed('/second');
  123 + Get.back();
  124 +
  125 + await tester.pumpAndSettle();
  126 +
  127 + expect(find.byType(Container), findsOneWidget);
  128 + });
  129 +
  130 + testWidgets("Get.offAll navigates to provided route", (tester) async {
110 await tester.pumpWidget( 131 await tester.pumpWidget(
111 Wrapper(child: Container()), 132 Wrapper(child: Container()),
112 ); 133 );
113 134
114 - Get.to(FirstScreen()); 135 + Get.offAll(FirstScreen());
115 136
116 await tester.pumpAndSettle(); 137 await tester.pumpAndSettle();
117 138
118 expect(find.byType(FirstScreen), findsOneWidget); 139 expect(find.byType(FirstScreen), findsOneWidget);
  140 + });
  141 +
  142 + testWidgets("Get.offAll removes all previous routes", (tester) async {
  143 + await tester.pumpWidget(
  144 + Wrapper(child: Container()),
  145 + );
119 146
  147 + Get.to(FirstScreen());
120 Get.to(SecondScreen()); 148 Get.to(SecondScreen());
  149 + Get.offAll(ThirdScreen());
  150 + Get.back();
121 151
122 await tester.pumpAndSettle(); 152 await tester.pumpAndSettle();
123 153
124 - expect(find.byType(SecondScreen), findsOneWidget); 154 + expect(find.byType(SecondScreen), findsNothing);
125 155
126 - Get.offAll(ThirdScreen()); 156 + Get.back();
127 157
128 await tester.pumpAndSettle(); 158 await tester.pumpAndSettle();
129 159
130 - expect(find.byType(ThirdScreen), findsOneWidget); 160 + expect(find.byType(FirstScreen), findsNothing);
131 }); 161 });
132 162
133 - testWidgets("Get.offAllNamed smoke test", (tester) async { 163 + testWidgets("Get.offAllNamed navigates to provided named route",
  164 + (tester) async {
134 await tester.pumpWidget( 165 await tester.pumpWidget(
135 WrapperNamed( 166 WrapperNamed(
136 - initialRoute: '/', 167 + initialRoute: '/first',
137 namedRoutes: [ 168 namedRoutes: [
138 - GetPage(page: () => Container(), name: '/'),  
139 GetPage(page: () => FirstScreen(), name: '/first'), 169 GetPage(page: () => FirstScreen(), name: '/first'),
140 GetPage(page: () => SecondScreen(), name: '/second'), 170 GetPage(page: () => SecondScreen(), name: '/second'),
141 - GetPage(page: () => ThirdScreen(), name: '/third'), 171 + GetPage(page: () => ThirdScreen(), name: '/third')
142 ], 172 ],
143 ), 173 ),
144 ); 174 );
145 175
146 - Get.toNamed('/first'); 176 + Get.toNamed('/second');
147 177
148 await tester.pumpAndSettle(); 178 await tester.pumpAndSettle();
149 179
150 - expect(find.byType(FirstScreen), findsOneWidget); 180 + expect(find.byType(SecondScreen), findsOneWidget);
  181 + });
  182 +
  183 + testWidgets("Get.offAllNamed removes all previous routes", (tester) async {
  184 + await tester.pumpWidget(
  185 + WrapperNamed(
  186 + initialRoute: '/first',
  187 + namedRoutes: [
  188 + GetPage(page: () => FirstScreen(), name: '/first'),
  189 + GetPage(page: () => SecondScreen(), name: '/second'),
  190 + GetPage(page: () => ThirdScreen(), name: '/third')
  191 + ],
  192 + ),
  193 + );
151 194
152 Get.toNamed('/second'); 195 Get.toNamed('/second');
  196 + Get.offAllNamed('/third');
  197 + Get.back();
153 198
154 await tester.pumpAndSettle(); 199 await tester.pumpAndSettle();
155 200
156 - expect(find.byType(SecondScreen), findsOneWidget); 201 + expect(find.byType(SecondScreen), findsNothing);
157 202
158 - Get.offAllNamed('/third'); 203 + Get.back();
159 204
160 await tester.pumpAndSettle(); 205 await tester.pumpAndSettle();
161 206
162 - expect(find.byType(ThirdScreen), findsOneWidget); 207 + expect(find.byType(FirstScreen), findsNothing);
163 }); 208 });
164 209
165 testWidgets("Get.offAndToNamed smoke test", (tester) async { 210 testWidgets("Get.offAndToNamed smoke test", (tester) async {