Showing
1 changed file
with
69 additions
and
36 deletions
| @@ -20,9 +20,9 @@ void main() { | @@ -20,9 +20,9 @@ void main() { | ||
| 20 | testWidgets("Get.toNamed navigates to provided named route", (tester) async { | 20 | testWidgets("Get.toNamed navigates to provided named route", (tester) async { |
| 21 | await tester.pumpWidget( | 21 | await tester.pumpWidget( |
| 22 | GetMaterialApp( | 22 | GetMaterialApp( |
| 23 | - initialRoute: '/', | 23 | + initialRoute: '/first', |
| 24 | getPages: [ | 24 | getPages: [ |
| 25 | - GetPage(page: () => FirstScreen(), name: '/'), | 25 | + GetPage(page: () => FirstScreen(), name: '/first'), |
| 26 | GetPage(page: () => SecondScreen(), name: '/second'), | 26 | GetPage(page: () => SecondScreen(), name: '/second'), |
| 27 | GetPage(page: () => ThirdScreen(), name: '/third') | 27 | GetPage(page: () => ThirdScreen(), name: '/third') |
| 28 | ], | 28 | ], |
| @@ -38,10 +38,9 @@ void main() { | @@ -38,10 +38,9 @@ void main() { | ||
| 38 | 38 | ||
| 39 | testWidgets("Get.off navigates to provided route", (tester) async { | 39 | testWidgets("Get.off navigates to provided route", (tester) async { |
| 40 | await tester.pumpWidget( | 40 | await tester.pumpWidget( |
| 41 | - Wrapper(child: Container()), | 41 | + Wrapper(child: FirstScreen()), |
| 42 | ); | 42 | ); |
| 43 | 43 | ||
| 44 | - Get.to(FirstScreen()); | ||
| 45 | Get.off(SecondScreen()); | 44 | Get.off(SecondScreen()); |
| 46 | 45 | ||
| 47 | await tester.pumpAndSettle(); | 46 | await tester.pumpAndSettle(); |
| @@ -51,10 +50,9 @@ void main() { | @@ -51,10 +50,9 @@ void main() { | ||
| 51 | 50 | ||
| 52 | testWidgets("Get.off removes current route", (tester) async { | 51 | testWidgets("Get.off removes current route", (tester) async { |
| 53 | await tester.pumpWidget( | 52 | await tester.pumpWidget( |
| 54 | - Wrapper(child: Container()), | 53 | + Wrapper(child: FirstScreen()), |
| 55 | ); | 54 | ); |
| 56 | 55 | ||
| 57 | - Get.to(FirstScreen()); | ||
| 58 | Get.off(SecondScreen()); | 56 | Get.off(SecondScreen()); |
| 59 | Get.back(); | 57 | Get.back(); |
| 60 | 58 | ||
| @@ -66,9 +64,8 @@ void main() { | @@ -66,9 +64,8 @@ void main() { | ||
| 66 | testWidgets("Get.offNamed navigates to provided named route", (tester) async { | 64 | testWidgets("Get.offNamed navigates to provided named route", (tester) async { |
| 67 | await tester.pumpWidget( | 65 | await tester.pumpWidget( |
| 68 | GetMaterialApp( | 66 | GetMaterialApp( |
| 69 | - initialRoute: '/', | 67 | + initialRoute: '/first', |
| 70 | getPages: [ | 68 | getPages: [ |
| 71 | - GetPage(name: '/', page: () => Container()), | ||
| 72 | GetPage(name: '/first', page: () => FirstScreen()), | 69 | GetPage(name: '/first', page: () => FirstScreen()), |
| 73 | GetPage(name: '/second', page: () => SecondScreen()), | 70 | GetPage(name: '/second', page: () => SecondScreen()), |
| 74 | GetPage(name: '/third', page: () => ThirdScreen()), | 71 | GetPage(name: '/third', page: () => ThirdScreen()), |
| @@ -76,19 +73,18 @@ void main() { | @@ -76,19 +73,18 @@ void main() { | ||
| 76 | ), | 73 | ), |
| 77 | ); | 74 | ); |
| 78 | 75 | ||
| 79 | - Get.offNamed('/first'); | 76 | + Get.offNamed('/second'); |
| 80 | 77 | ||
| 81 | await tester.pumpAndSettle(); | 78 | await tester.pumpAndSettle(); |
| 82 | 79 | ||
| 83 | - expect(find.byType(FirstScreen), findsOneWidget); | 80 | + expect(find.byType(SecondScreen), findsOneWidget); |
| 84 | }); | 81 | }); |
| 85 | 82 | ||
| 86 | testWidgets("Get.offNamed removes current route", (tester) async { | 83 | testWidgets("Get.offNamed removes current route", (tester) async { |
| 87 | await tester.pumpWidget( | 84 | await tester.pumpWidget( |
| 88 | GetMaterialApp( | 85 | GetMaterialApp( |
| 89 | - initialRoute: '/', | 86 | + initialRoute: '/first', |
| 90 | getPages: [ | 87 | getPages: [ |
| 91 | - GetPage(name: '/', page: () => Container()), | ||
| 92 | GetPage(name: '/first', page: () => FirstScreen()), | 88 | GetPage(name: '/first', page: () => FirstScreen()), |
| 93 | GetPage(name: '/second', page: () => SecondScreen()), | 89 | GetPage(name: '/second', page: () => SecondScreen()), |
| 94 | GetPage(name: '/third', page: () => ThirdScreen()), | 90 | GetPage(name: '/third', page: () => ThirdScreen()), |
| @@ -96,7 +92,6 @@ void main() { | @@ -96,7 +92,6 @@ void main() { | ||
| 96 | ), | 92 | ), |
| 97 | ); | 93 | ); |
| 98 | 94 | ||
| 99 | - Get.toNamed('/first'); | ||
| 100 | Get.offNamed('/second'); | 95 | Get.offNamed('/second'); |
| 101 | Get.back(); | 96 | Get.back(); |
| 102 | 97 | ||
| @@ -108,9 +103,8 @@ void main() { | @@ -108,9 +103,8 @@ void main() { | ||
| 108 | testWidgets("Get.offNamed removes only current route", (tester) async { | 103 | testWidgets("Get.offNamed removes only current route", (tester) async { |
| 109 | await tester.pumpWidget( | 104 | await tester.pumpWidget( |
| 110 | GetMaterialApp( | 105 | GetMaterialApp( |
| 111 | - initialRoute: '/', | 106 | + initialRoute: '/first', |
| 112 | getPages: [ | 107 | getPages: [ |
| 113 | - GetPage(name: '/', page: () => Container()), | ||
| 114 | GetPage(name: '/first', page: () => FirstScreen()), | 108 | GetPage(name: '/first', page: () => FirstScreen()), |
| 115 | GetPage(name: '/second', page: () => SecondScreen()), | 109 | GetPage(name: '/second', page: () => SecondScreen()), |
| 116 | GetPage(name: '/third', page: () => ThirdScreen()), | 110 | GetPage(name: '/third', page: () => ThirdScreen()), |
| @@ -118,33 +112,32 @@ void main() { | @@ -118,33 +112,32 @@ void main() { | ||
| 118 | ), | 112 | ), |
| 119 | ); | 113 | ); |
| 120 | 114 | ||
| 121 | - Get.toNamed('/first'); | ||
| 122 | - Get.offNamed('/second'); | 115 | + Get.toNamed('/second'); |
| 116 | + Get.offNamed('/third'); | ||
| 123 | Get.back(); | 117 | Get.back(); |
| 124 | 118 | ||
| 125 | await tester.pumpAndSettle(); | 119 | await tester.pumpAndSettle(); |
| 126 | 120 | ||
| 127 | - expect(find.byType(Container), findsOneWidget); | 121 | + expect(find.byType(FirstScreen), findsOneWidget); |
| 128 | }); | 122 | }); |
| 129 | 123 | ||
| 130 | testWidgets("Get.offAll navigates to provided route", (tester) async { | 124 | testWidgets("Get.offAll navigates to provided route", (tester) async { |
| 131 | await tester.pumpWidget( | 125 | await tester.pumpWidget( |
| 132 | - Wrapper(child: Container()), | 126 | + Wrapper(child: FirstScreen()), |
| 133 | ); | 127 | ); |
| 134 | 128 | ||
| 135 | - Get.offAll(FirstScreen()); | 129 | + Get.offAll(SecondScreen()); |
| 136 | 130 | ||
| 137 | await tester.pumpAndSettle(); | 131 | await tester.pumpAndSettle(); |
| 138 | 132 | ||
| 139 | - expect(find.byType(FirstScreen), findsOneWidget); | 133 | + expect(find.byType(SecondScreen), findsOneWidget); |
| 140 | }); | 134 | }); |
| 141 | 135 | ||
| 142 | testWidgets("Get.offAll removes all previous routes", (tester) async { | 136 | testWidgets("Get.offAll removes all previous routes", (tester) async { |
| 143 | await tester.pumpWidget( | 137 | await tester.pumpWidget( |
| 144 | - Wrapper(child: Container()), | 138 | + Wrapper(child: FirstScreen()), |
| 145 | ); | 139 | ); |
| 146 | 140 | ||
| 147 | - Get.to(FirstScreen()); | ||
| 148 | Get.to(SecondScreen()); | 141 | Get.to(SecondScreen()); |
| 149 | Get.offAll(ThirdScreen()); | 142 | Get.offAll(ThirdScreen()); |
| 150 | Get.back(); | 143 | Get.back(); |
| @@ -207,53 +200,93 @@ void main() { | @@ -207,53 +200,93 @@ void main() { | ||
| 207 | expect(find.byType(FirstScreen), findsNothing); | 200 | expect(find.byType(FirstScreen), findsNothing); |
| 208 | }); | 201 | }); |
| 209 | 202 | ||
| 210 | - testWidgets("Get.offAndToNamed smoke test", (tester) async { | 203 | + testWidgets("Get.offAndToNamed navigates to provided route", (tester) async { |
| 211 | await tester.pumpWidget( | 204 | await tester.pumpWidget( |
| 212 | WrapperNamed( | 205 | WrapperNamed( |
| 213 | - initialRoute: '/', | 206 | + initialRoute: '/first', |
| 214 | namedRoutes: [ | 207 | namedRoutes: [ |
| 215 | - GetPage(page: () => Container(), name: '/'), | ||
| 216 | GetPage(page: () => FirstScreen(), name: '/first'), | 208 | GetPage(page: () => FirstScreen(), name: '/first'), |
| 217 | GetPage(page: () => SecondScreen(), name: '/second'), | 209 | GetPage(page: () => SecondScreen(), name: '/second'), |
| 218 | - GetPage(page: () => ThirdScreen(), name: '/third'), | 210 | + GetPage(page: () => ThirdScreen(), name: '/third') |
| 219 | ], | 211 | ], |
| 220 | ), | 212 | ), |
| 221 | ); | 213 | ); |
| 222 | 214 | ||
| 223 | - Get.toNamed('/first'); | 215 | + Get.offAndToNamed('/second'); |
| 224 | 216 | ||
| 225 | await tester.pumpAndSettle(); | 217 | await tester.pumpAndSettle(); |
| 226 | 218 | ||
| 227 | - expect(find.byType(FirstScreen), findsOneWidget); | 219 | + expect(find.byType(SecondScreen), findsOneWidget); |
| 220 | + }); | ||
| 221 | + | ||
| 222 | + testWidgets("Get.offAndToNamed removes previous route", (tester) async { | ||
| 223 | + await tester.pumpWidget( | ||
| 224 | + WrapperNamed( | ||
| 225 | + initialRoute: '/first', | ||
| 226 | + namedRoutes: [ | ||
| 227 | + GetPage(page: () => FirstScreen(), name: '/first'), | ||
| 228 | + GetPage(page: () => SecondScreen(), name: '/second'), | ||
| 229 | + GetPage(page: () => ThirdScreen(), name: '/third') | ||
| 230 | + ], | ||
| 231 | + ), | ||
| 232 | + ); | ||
| 228 | 233 | ||
| 229 | Get.offAndToNamed('/second'); | 234 | Get.offAndToNamed('/second'); |
| 235 | + Get.back(); | ||
| 230 | 236 | ||
| 231 | await tester.pumpAndSettle(); | 237 | await tester.pumpAndSettle(); |
| 232 | 238 | ||
| 233 | - expect(find.byType(SecondScreen), findsOneWidget); | 239 | + expect(find.byType(FirstScreen), findsNothing); |
| 234 | }); | 240 | }); |
| 235 | 241 | ||
| 236 | - testWidgets("Get.offUntil smoke test", (tester) async { | 242 | + testWidgets("Get.offUntil navigates to provided route", (tester) async { |
| 237 | await tester.pumpWidget( | 243 | await tester.pumpWidget( |
| 238 | Wrapper( | 244 | Wrapper( |
| 239 | - child: Container(), | 245 | + child: FirstScreen(), |
| 240 | ), | 246 | ), |
| 241 | ); | 247 | ); |
| 242 | 248 | ||
| 243 | - Get.to(FirstScreen()); | 249 | + Get.offUntil(GetPageRoute(page: () => ThirdScreen()), |
| 250 | + (route) => (route as GetPageRoute).routeName == '/FirstScreen'); | ||
| 244 | 251 | ||
| 245 | await tester.pumpAndSettle(); | 252 | await tester.pumpAndSettle(); |
| 246 | 253 | ||
| 247 | - Get.to(SecondScreen()); | 254 | + expect(find.byType(ThirdScreen), findsOneWidget); |
| 255 | + }); | ||
| 248 | 256 | ||
| 249 | - await tester.pumpAndSettle(); | 257 | + testWidgets( |
| 258 | + "Get.offUntil removes previous routes if they don't match predicate", | ||
| 259 | + (tester) async { | ||
| 260 | + await tester.pumpWidget( | ||
| 261 | + Wrapper( | ||
| 262 | + child: Container(), | ||
| 263 | + ), | ||
| 264 | + ); | ||
| 250 | 265 | ||
| 266 | + Get.to(FirstScreen()); | ||
| 267 | + Get.to(SecondScreen()); | ||
| 251 | Get.offUntil(GetPageRoute(page: () => ThirdScreen()), | 268 | Get.offUntil(GetPageRoute(page: () => ThirdScreen()), |
| 252 | (route) => (route as GetPageRoute).routeName == '/FirstScreen'); | 269 | (route) => (route as GetPageRoute).routeName == '/FirstScreen'); |
| 270 | + Get.back(); | ||
| 253 | 271 | ||
| 254 | await tester.pumpAndSettle(); | 272 | await tester.pumpAndSettle(); |
| 255 | 273 | ||
| 256 | - expect(find.byType(ThirdScreen), findsOneWidget); | 274 | + expect(find.byType(SecondScreen), findsNothing); |
| 275 | + }); | ||
| 276 | + | ||
| 277 | + testWidgets( | ||
| 278 | + "Get.offUntil leaves previous routes that match provided predicate", | ||
| 279 | + (tester) async { | ||
| 280 | + await tester.pumpWidget( | ||
| 281 | + Wrapper( | ||
| 282 | + child: Container(), | ||
| 283 | + ), | ||
| 284 | + ); | ||
| 285 | + | ||
| 286 | + Get.to(FirstScreen()); | ||
| 287 | + Get.to(SecondScreen()); | ||
| 288 | + Get.offUntil(GetPageRoute(page: () => ThirdScreen()), | ||
| 289 | + (route) => (route as GetPageRoute).routeName == '/FirstScreen'); | ||
| 257 | Get.back(); | 290 | Get.back(); |
| 258 | 291 | ||
| 259 | await tester.pumpAndSettle(); | 292 | await tester.pumpAndSettle(); |
-
Please register or login to post a comment