diff --git a/lib/src/store/store_routes.dart b/lib/src/store/store_routes.dart index 0be1f6a4d..3632770ae 100644 --- a/lib/src/store/store_routes.dart +++ b/lib/src/store/store_routes.dart @@ -9,6 +9,7 @@ abstract class StoreRoutes { static bool isSnap(RouteSettings route) => routeOf(route) == snap; static bool isSearch(RouteSettings route) => routeOf(route) == search; + static bool isDeb(RouteSettings route) => routeOf(route) == deb; static String routeOf(RouteSettings route) => Uri.parse(route.name ?? '').path; diff --git a/test/store_navigator_test.dart b/test/store_navigator_test.dart index e6be6f995..c889250a4 100644 --- a/test/store_navigator_test.dart +++ b/test/store_navigator_test.dart @@ -64,5 +64,12 @@ void main() { ..add(StoreRoutes.namedSearchSnap( name: 'foo', query: 'bar', category: 'baz')), ); + + unawaited(StoreNavigator.pushDeb(context, id: 'qux')); + await tester.pump(); + expect( + generatedRoutes, + expectedRoutes..add(StoreRoutes.namedDeb(id: 'qux')), + ); }); } diff --git a/test/store_routes_test.dart b/test/store_routes_test.dart index 6a4acfdc9..4833d9544 100644 --- a/test/store_routes_test.dart +++ b/test/store_routes_test.dart @@ -10,6 +10,9 @@ void main() { expect(StoreRoutes.snapOf(root), isNull); expect(StoreRoutes.isSearch(root), isFalse); expect(StoreRoutes.queryOf(root), isNull); + expect(StoreRoutes.categoryOf(root), isNull); + expect(StoreRoutes.isDeb(root), isFalse); + expect(StoreRoutes.debOf(root), isNull); const snap = RouteSettings(name: '/snap?snap=foo'); expect(StoreRoutes.routeOf(snap), equals('/snap')); @@ -17,13 +20,19 @@ void main() { expect(StoreRoutes.snapOf(snap), equals('foo')); expect(StoreRoutes.isSearch(snap), isFalse); expect(StoreRoutes.queryOf(snap), isNull); + expect(StoreRoutes.categoryOf(snap), isNull); + expect(StoreRoutes.isDeb(snap), isFalse); + expect(StoreRoutes.debOf(snap), isNull); - const search = RouteSettings(name: '/search?query=bar'); + const search = RouteSettings(name: '/search?query=bar&category=qux'); expect(StoreRoutes.routeOf(search), equals('/search')); expect(StoreRoutes.isSnap(search), isFalse); expect(StoreRoutes.snapOf(search), isNull); expect(StoreRoutes.isSearch(search), isTrue); expect(StoreRoutes.queryOf(search), equals('bar')); + expect(StoreRoutes.categoryOf(search), equals('qux')); + expect(StoreRoutes.isDeb(search), isFalse); + expect(StoreRoutes.debOf(search), isNull); const searchSnap = RouteSettings(name: '/snap?query=bar&snap=foo'); expect(StoreRoutes.routeOf(searchSnap), equals('/snap')); @@ -31,6 +40,19 @@ void main() { expect(StoreRoutes.snapOf(searchSnap), equals('foo')); expect(StoreRoutes.isSearch(searchSnap), isFalse); expect(StoreRoutes.queryOf(searchSnap), equals('bar')); + expect(StoreRoutes.categoryOf(searchSnap), isNull); + expect(StoreRoutes.isDeb(searchSnap), isFalse); + expect(StoreRoutes.debOf(searchSnap), isNull); + + const deb = RouteSettings(name: '/deb?deb=baz'); + expect(StoreRoutes.routeOf(deb), equals('/deb')); + expect(StoreRoutes.isSnap(deb), isFalse); + expect(StoreRoutes.snapOf(deb), isNull); + expect(StoreRoutes.isSearch(deb), isFalse); + expect(StoreRoutes.queryOf(deb), isNull); + expect(StoreRoutes.categoryOf(deb), isNull); + expect(StoreRoutes.isDeb(deb), isTrue); + expect(StoreRoutes.debOf(deb), equals('baz')); }); test('named route', () { @@ -40,8 +62,10 @@ void main() { StoreRoutes.namedRoute('/foo', {'bar': 'baz'}), equals('/foo?bar=baz')); expect(StoreRoutes.namedSnap(name: 'foo'), equals('/snap?snap=foo')); - expect(StoreRoutes.namedSearch(query: 'bar'), equals('/search?query=bar')); + expect(StoreRoutes.namedSearch(query: 'bar', category: 'qux'), + equals('/search?query=bar&category=qux')); expect(StoreRoutes.namedSearchSnap(query: 'bar', name: 'foo'), equals('/snap?snap=foo&query=bar')); + expect(StoreRoutes.namedDeb(id: 'baz'), equals('/deb?deb=baz')); }); }