Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit cc0caa6

Browse files
authored
Fix additional scenarios with nested defined routes (#13648)
* Fix additional scenarios with nested defined routes * - pick better starting point for uri matching * - fix merge * - formating changes and more accurate test fix
1 parent 053ede6 commit cc0caa6

File tree

2 files changed

+264
-110
lines changed

2 files changed

+264
-110
lines changed

Xamarin.Forms.Core.UnitTests/ShellNavigatingTests.cs

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,6 @@ public async Task GoBackFromRouteWithMultiplePaths()
916916
await shell.Navigation.PopAsync();
917917
}
918918

919-
920919
[Test]
921920
public async Task GoBackFromRouteWithMultiplePathsHierarchical()
922921
{
@@ -933,6 +932,70 @@ public async Task GoBackFromRouteWithMultiplePathsHierarchical()
933932
await shell.Navigation.PopAsync();
934933
}
935934

935+
[Test]
936+
public async Task HierarchicalNavigation()
937+
{
938+
Routing.RegisterRoute("page1/page2", typeof(ShellTestPage));
939+
var shell = new TestShell(
940+
CreateShellItem(shellSectionRoute: "page1")
941+
);
942+
943+
await shell.GoToAsync($"page1/page2?{nameof(ShellTestPage.SomeQueryParameter)}=1");
944+
945+
Assert.AreEqual("1", ((ShellTestPage)shell.CurrentPage).SomeQueryParameter);
946+
}
947+
948+
[Test]
949+
public async Task HierarchicalNavigationMultipleRoutes()
950+
{
951+
Routing.RegisterRoute("page1/page2", typeof(ShellTestPage));
952+
Routing.RegisterRoute("page1/page2/page3", typeof(TestPage1));
953+
var shell = new TestShell(
954+
CreateShellItem(shellSectionRoute: "page1")
955+
);
956+
957+
await shell.GoToAsync($"page1/page2?{nameof(ShellTestPage.SomeQueryParameter)}=1");
958+
959+
Assert.AreEqual("1", ((ShellTestPage)shell.CurrentPage).SomeQueryParameter);
960+
await shell.GoToAsync($"page1/page2/page3");
961+
962+
Assert.IsTrue(shell.CurrentPage is TestPage1);
963+
Assert.IsTrue(shell.Navigation.NavigationStack[1] is ShellTestPage);
964+
}
965+
966+
[Test]
967+
public async Task HierarchicalNavigationMultipleRoutesVariation1()
968+
{
969+
Routing.RegisterRoute("page1/page2", typeof(ShellTestPage));
970+
Routing.RegisterRoute("page1/page2/page3", typeof(TestPage1));
971+
var shell = new TestShell(
972+
CreateShellItem(shellSectionRoute: "page1")
973+
);
974+
975+
await shell.GoToAsync($"page1/page2/page3");
976+
977+
Assert.IsTrue(shell.CurrentPage is TestPage1);
978+
Assert.IsTrue(shell.Navigation.NavigationStack[1] is ShellTestPage);
979+
}
980+
981+
[Test]
982+
public async Task HierarchicalNavigationWithBackNavigation()
983+
{
984+
Routing.RegisterRoute("page1/page2", typeof(ShellTestPage));
985+
Routing.RegisterRoute("page1/page2/page3", typeof(TestPage1));
986+
var shell = new TestShell(
987+
CreateShellItem(shellSectionRoute: "page1")
988+
);
989+
990+
await shell.GoToAsync($"page1/page2");
991+
await shell.GoToAsync($"page1/page2/page3");
992+
Assert.IsTrue(shell.CurrentPage is TestPage1);
993+
await shell.GoToAsync($"..");
994+
Assert.IsTrue(shell.CurrentPage is ShellTestPage);
995+
await shell.GoToAsync($"..");
996+
Assert.IsTrue(shell.CurrentPage is ContentPage);
997+
}
998+
936999
public class NavigationMonitoringTab : Tab
9371000
{
9381001
public List<string> NavigationsFired = new List<string>();

0 commit comments

Comments
 (0)