public async void Navigate_ToContentPage_ByAbsoluteUri() { // Set up top page. var recorder = new PageNavigationEventRecorder();; var rootPage = new ContentPageMock(recorder); var rootPageViewModel = (ViewModelBase)rootPage.BindingContext; var applicationProvider = new ApplicationProviderMock(rootPage); var navigationService = new PageNavigationServiceMock(_container, applicationProvider, _loggerFacade, recorder); await navigationService.NavigateAsync(new Uri("http://localhost/ContentPage", UriKind.Absolute)); var navigatedPage = applicationProvider.MainPage; Assert.IsType(typeof(ContentPageMock), navigatedPage); Assert.NotEqual(rootPage, _applicationProvider.MainPage); var record = recorder.TakeFirst(); Assert.Equal(navigatedPage, record.Sender); Assert.Equal(PageNavigationEvent.OnNavigatingTo, record.Event); record = recorder.TakeFirst(); Assert.Equal(navigatedPage.BindingContext, record.Sender); Assert.Equal(PageNavigationEvent.OnNavigatingTo, record.Event); record = recorder.TakeFirst(); Assert.Equal(rootPage, record.Sender); Assert.Equal(PageNavigationEvent.OnNavigatedFrom, record.Event); record = recorder.TakeFirst(); Assert.Equal(rootPageViewModel, record.Sender); Assert.Equal(PageNavigationEvent.OnNavigatedFrom, record.Event); record = recorder.TakeFirst(); Assert.Equal(navigatedPage, record.Sender); Assert.Equal(PageNavigationEvent.OnNavigatedTo, record.Event); record = recorder.TakeFirst(); Assert.Equal(navigatedPage.BindingContext, record.Sender); Assert.Equal(PageNavigationEvent.OnNavigatedTo, record.Event); record = recorder.TakeFirst(); Assert.Equal(rootPage, record.Sender); Assert.Equal(PageNavigationEvent.Destroy, record.Event); record = recorder.TakeFirst(); Assert.Equal(rootPageViewModel, record.Sender); Assert.Equal(PageNavigationEvent.Destroy, record.Event); Assert.True(recorder.IsEmpty); }
public async void DeepNavigate_ToEmptyMasterDetailPage_ToNavigationPage_ToContentPage() { var applicationProvider = new ApplicationProviderMock(null); var navigationService = new PageNavigationServiceMock(_container, applicationProvider, _loggerFacade); await navigationService.NavigateAsync("MasterDetailPage-Empty/NavigationPage/PageMock"); var masterDetail = applicationProvider.MainPage as MasterDetailPageEmptyMock; Assert.NotNull(masterDetail); Assert.NotNull(masterDetail.Detail); Assert.IsType <NavigationPageMock>(masterDetail.Detail); Assert.Equal(0, masterDetail.Navigation.ModalStack.Count); Assert.Equal(0, masterDetail.Navigation.NavigationStack.Count); Assert.Equal(0, masterDetail.Detail.Navigation.ModalStack.Count); Assert.Equal(1, masterDetail.Detail.Navigation.NavigationStack.Count); Assert.IsType <PageMock>(masterDetail.Detail.Navigation.NavigationStack.Last()); }