Skip to content

Commit

Permalink
Provide tests for ConfirmNavigation exception scenarios
Browse files Browse the repository at this point in the history
  • Loading branch information
akamud authored and Mahmoud Ali committed Oct 1, 2019
1 parent 6a49e0e commit 0c0b5b2
Showing 1 changed file with 63 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,69 @@ public async void Navigate_ToContentPage_ViewModelHasIConfirmNavigation_False()
Assert.True(viewModel.OnConfirmNavigationCalled);
Assert.True(rootPage.Navigation.ModalStack.Count == 0);
}

[Fact]
public async void GoBack_ViewModelWithIConfirmNavigationFalse_ResultException()
{
var navigationService = new PageNavigationServiceMock(_container, _applicationProvider, _loggerFacade);
var rootPage = new ContentPage() {BindingContext = new ContentPageMockViewModel()};
((IPageAware) navigationService).Page = rootPage;

var viewModel = rootPage.BindingContext as ContentPageMockViewModel;

var navParams = new NavigationParameters();
navParams.Add("canNavigate", false);

var navigationResult = await navigationService.GoBackAsync(navParams);

Assert.True(viewModel.OnConfirmNavigationCalled);
Assert.NotNull(navigationResult.Exception);
Assert.IsType<NavigationException>(navigationResult.Exception);
Assert.False(navigationResult.Success);
Assert.Equal(NavigationException.IConfirmNavigationReturnedFalse, navigationResult.Exception.Message);
}

[Fact]
public async void GoBackToRoot_ViewModelWithIConfirmNavigationFalse_ResultException()
{
var navigationService = new PageNavigationServiceMock(_container, _applicationProvider, _loggerFacade);
var rootPage = new ContentPage() {BindingContext = new ContentPageMockViewModel()};
((IPageAware) navigationService).Page = rootPage;

var viewModel = rootPage.BindingContext as ContentPageMockViewModel;

var navParams = new NavigationParameters();
navParams.Add("canNavigate", false);

var navigationResult = await navigationService.GoBackToRootAsync(navParams);

Assert.True(viewModel.OnConfirmNavigationCalled);
Assert.NotNull(navigationResult.Exception);
Assert.IsType<NavigationException>(navigationResult.Exception);
Assert.False(navigationResult.Success);
Assert.Equal(NavigationException.IConfirmNavigationReturnedFalse, navigationResult.Exception.Message);
}

[Fact]
public async void NavigateAsync_ViewModelWithIConfirmNavigationFalse_ResultException()
{
var navigationService = new PageNavigationServiceMock(_container, _applicationProvider, _loggerFacade);
var rootPage = new ContentPage() {BindingContext = new ContentPageMockViewModel()};
((IPageAware) navigationService).Page = rootPage;

var viewModel = rootPage.BindingContext as ContentPageMockViewModel;

var navParams = new NavigationParameters();
navParams.Add("canNavigate", false);

var navigationResult = await navigationService.NavigateAsync("ContentPage", navParams);

Assert.True(viewModel.OnConfirmNavigationCalled);
Assert.NotNull(navigationResult.Exception);
Assert.IsType<NavigationException>(navigationResult.Exception);
Assert.False(navigationResult.Success);
Assert.Equal(NavigationException.IConfirmNavigationReturnedFalse, navigationResult.Exception.Message);
}

[Fact]
public async void Navigate_ToNavigatonPage_ViewModelHasINavigationAware()
Expand Down

0 comments on commit 0c0b5b2

Please sign in to comment.