From 1136e2025f235e9a3af250cf388c9ece6d4e40e1 Mon Sep 17 00:00:00 2001 From: Axemasta <33064621+Axemasta@users.noreply.github.com> Date: Fri, 8 Sep 2023 16:05:27 +0100 Subject: [PATCH 1/2] Added test cases for relative / absolute navigation I havent mapped these yet so the absolute navigation tests so fail! --- .../Samples/SampleBuilderViewModel.cs | 16 ++++++++ .../SetupBuilderViewModelTests.cs | 40 +++++++++++++++++++ .../VerifyBuilderViewModelTests.cs | 34 ++++++++++++++++ 3 files changed, 90 insertions(+) diff --git a/tests/Moq.INavigationService.Tests/Samples/SampleBuilderViewModel.cs b/tests/Moq.INavigationService.Tests/Samples/SampleBuilderViewModel.cs index 33a19ad..1ffc73a 100644 --- a/tests/Moq.INavigationService.Tests/Samples/SampleBuilderViewModel.cs +++ b/tests/Moq.INavigationService.Tests/Samples/SampleBuilderViewModel.cs @@ -38,6 +38,22 @@ public async Task NavigateToNavigationHomePage() .NavigateAsync(); } + public async Task NavigateToHomePageUsingRelativeNavigation() + { + return await navigationService.CreateBuilder() + .UseRelativeNavigation() + .AddSegment() + .NavigateAsync(); + } + + public async Task NavigateToHomePageUsingAbsoluteNavigation() + { + return await navigationService.CreateBuilder() + .UseAbsoluteNavigation() + .AddSegment() + .NavigateAsync(); + } + public async Task NavigateToModalHomePageViaSegment() { return await navigationService.CreateBuilder() diff --git a/tests/Moq.INavigationService.Tests/SetupBuilderViewModelTests.cs b/tests/Moq.INavigationService.Tests/SetupBuilderViewModelTests.cs index 6d14bcd..2200708 100644 --- a/tests/Moq.INavigationService.Tests/SetupBuilderViewModelTests.cs +++ b/tests/Moq.INavigationService.Tests/SetupBuilderViewModelTests.cs @@ -339,5 +339,45 @@ public async Task NavigateToModalHomePageViaParameter_WhenSetupIsNotMatched_Shou Assert.Null(result); } + [Fact] + public async Task NavigateToHomePageUsingRelativeNavigation_WhenSetupIsMatched_ShouldReturnResult() + { + // Arrange + var expectedNavigationResult = new NavigationResult(); + + navigationService.SetupNavigation(nav => nav.CreateBuilder() + .UseRelativeNavigation() + .AddSegment() + .NavigateAsync()) + .ReturnsAsync(expectedNavigationResult); + + // Act + var result = await Sut.NavigateToHomePageUsingRelativeNavigation(); + + // Assert + Assert.Equal(expectedNavigationResult, result); + navigationService.Verify(); + } + + [Fact] + public async Task NavigateToHomePageUsingAbsoluteNavigation_WhenSetupIsMatched_ShouldReturnResult() + { + // Arrange + var expectedNavigationResult = new NavigationResult(); + + navigationService.SetupNavigation(nav => nav.CreateBuilder() + .UseAbsoluteNavigation() + .AddSegment() + .NavigateAsync()) + .ReturnsAsync(expectedNavigationResult); + + // Act + var result = await Sut.NavigateToHomePageUsingAbsoluteNavigation(); + + // Assert + Assert.Equal(expectedNavigationResult, result); + navigationService.Verify(); + } + #endregion Tests } diff --git a/tests/Moq.INavigationService.Tests/VerifyBuilderViewModelTests.cs b/tests/Moq.INavigationService.Tests/VerifyBuilderViewModelTests.cs index 3d45b55..7cc1ed3 100644 --- a/tests/Moq.INavigationService.Tests/VerifyBuilderViewModelTests.cs +++ b/tests/Moq.INavigationService.Tests/VerifyBuilderViewModelTests.cs @@ -303,5 +303,39 @@ public async Task Verify_WhenVerificationDoesntMatchSetup_ShouldThrow() Assert.IsType(ex); } + [Fact] + public async Task NavigateToHomePageUsingRelativeNavigation_WhenCalled_ShouldVerify() + { + // Arrange + + // Act + await Sut.NavigateToHomePageUsingRelativeNavigation(); + + // Assert + navigationService.VerifyNavigation( + nav => nav.CreateBuilder() + .UseRelativeNavigation() + .AddSegment() + .NavigateAsync(), + Times.Once()); + } + + [Fact] + public async Task NavigateToHomePageUsingAbsoluteNavigation_WhenCalled_ShouldVerify() + { + // Arrange + + // Act + await Sut.NavigateToHomePageUsingAbsoluteNavigation(); + + // Assert + navigationService.VerifyNavigation( + nav => nav.CreateBuilder() + .UseAbsoluteNavigation() + .AddSegment() + .NavigateAsync(), + Times.Once()); + } + #endregion Tests } From b2ce7f6fc34296ebadffa015d0fa23c576b833c6 Mon Sep 17 00:00:00 2001 From: Axemasta <33064621+Axemasta@users.noreply.github.com> Date: Fri, 8 Sep 2023 16:08:33 +0100 Subject: [PATCH 2/2] Implement Relative Absolute verification These api's are now accounted for! --- .../NavigationExpressionArgs.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Moq.INavigationService/NavigationExpressionArgs.cs b/src/Moq.INavigationService/NavigationExpressionArgs.cs index 2704ff1..4d10b1c 100644 --- a/src/Moq.INavigationService/NavigationExpressionArgs.cs +++ b/src/Moq.INavigationService/NavigationExpressionArgs.cs @@ -201,6 +201,18 @@ private static (Uri Uri, INavigationParameters? NavigationParameters) ParseUriBu break; } + case nameof(INavigationBuilder.UseAbsoluteNavigation): + { + builder.UseAbsoluteNavigation(); + break; + } + + case nameof(INavigationBuilder.UseRelativeNavigation): + { + builder.UseRelativeNavigation(); + break; + } + case nameof(INavigationBuilder.AddTabbedSegment): { throw new NotSupportedException("This api has not been mapped and is not supported");