public async Task GoBack_When_CanGoBack() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); bool resultFirstNavigation = navigationService.Navigate("MockPage", 1); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); Assert.IsFalse(navigationService.CanGoBack()); bool resultSecondNavigation = navigationService.Navigate("Mock", 2); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(2, ((MockPage)frame.Content).PageParameter); Assert.IsTrue(navigationService.CanGoBack()); navigationService.GoBack(); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); Assert.IsFalse(navigationService.CanGoBack()); }); }
public async Task Navigate_To_Subsequent_Page_Back_Button_Visible() { await DispatcherHelper.ExecuteOnUIThread(() => { var eventAggregator = new EventAggregator(); var frame = new FrameFacadeAdapter(new Frame(), eventAggregator); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); var deviceGestureService = new DeviceGestureService(eventAggregator); deviceGestureService.UseTitleBarBackButton = true; var navigationManager = SystemNavigationManager.GetForCurrentView(); // Reset back button visibility before running, can't do this in TestInitialize because CoreWindow sometimes isn't ready SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.Navigate("Mock", 1); Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.Navigate("Mock", 2); Assert.AreEqual(AppViewBackButtonVisibility.Visible, navigationManager.AppViewBackButtonVisibility); }); }
public async Task Navigate_To_Subsequent_Page_Back_Button_Visible() { await DispatcherHelper.ExecuteOnUIThread(() => { var eventAggregator = new EventAggregator(); var frame = new FrameFacadeAdapter(new Frame(), eventAggregator); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); var deviceGestureService = new DeviceGestureService(eventAggregator); deviceGestureService.UseTitleBarBackButton = true; var navigationManager = SystemNavigationManager.GetForCurrentView(); // Reset back button visibility before running, can't do this in TestInitialize because CoreWindow sometimes isn't ready SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.Navigate("Mock", 1); Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.Navigate("Mock", 2); Assert.AreEqual(AppViewBackButtonVisibility.Visible, navigationManager.AppViewBackButtonVisibility); }); }
public async Task RestoreSavedNavigation_ClearsOldForwardNavigation() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); var frameSessionState = new Dictionary <string, object>(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => frameSessionState; var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPageWithViewModel), sessionStateService); navigationService.Navigate("Page1", 1); Assert.AreEqual(1, frameSessionState.Count, "VM 1 state only"); navigationService.Navigate("Page2", 2); Assert.AreEqual(2, frameSessionState.Count, "VM 1 and 2"); navigationService.Navigate("Page3", 3); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 3"); navigationService.GoBack(); Assert.AreEqual(2, ((Dictionary <string, object>)frameSessionState["ViewModel-2"]).Count); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 3"); navigationService.Navigate("Page4", 4); Assert.AreEqual(0, ((Dictionary <string, object>)frameSessionState["ViewModel-2"]).Count); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 4"); }); }
public async Task NavigateFromCurrentViewModel_Calls_VieModel_OnNavigatedFrom() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); bool viewModelNavigatedFromCalled = false; var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (frameState, suspending) => { Assert.IsFalse(suspending); viewModelNavigatedFromCalled = true; }; var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); // Initial navigatio navigationService.Navigate("page0", 0); // Set up the frame's content with a Page var view = new MockPage(); view.DataContext = viewModel; frame.Content = view; // Navigate to fire the NavigatedToCurrentViewModel navigationService.Navigate("page1", 1); Assert.IsTrue(viewModelNavigatedFromCalled); }); }
public async Task Navigate_Raises_NavigationStateChangedEvent() { var tcs = new TaskCompletionSource <bool>(); var eventAggregator = new EventAggregator(); eventAggregator.GetEvent <NavigationStateChangedEvent>().Subscribe((args) => tcs.SetResult(args.StateChange == StateChangeType.Forward)); await DispatcherHelper.ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame(), eventAggregator); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); navigationService.Navigate("Mock", 1); }); await Task.WhenAny(tcs.Task, Task.Delay(200)); if (tcs.Task.IsCompleted) { Assert.IsTrue(tcs.Task.Result); } else { Assert.Fail("NavigationStateChangedEvent event wasn't raised within 200 ms."); } }
public async Task NavigateToCurrentViewModel_Calls_VieModel_OnNavigatedTo() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); bool viewModelNavigatedToCalled = false; var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (a, b) => Assert.IsTrue(true); viewModel.OnNavigatedToCommand = (parameter, navigationMode, frameState) => { Assert.AreEqual(NavigationMode.New, navigationMode); viewModelNavigatedToCalled = true; }; // Set up the viewModel to the Page we navigated frame.Navigated += (sender, e) => { var view = frame.Content as FrameworkElement; view.DataContext = viewModel; }; var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); navigationService.Navigate("Mock", 1); Assert.IsTrue(viewModelNavigatedToCalled); }); }
public async Task ViewModelOnNavigatedFromCalled_WithItsOwnStateDictionary() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); var frameSessionState = new Dictionary <string, object>(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => frameSessionState; var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPageWithViewModel), sessionStateService); navigationService.Navigate("Page1", 1); Assert.AreEqual(1, frameSessionState.Count, "VM 1 state only"); navigationService.Navigate("Page2", 2); Assert.AreEqual(2, frameSessionState.Count, "VM 1 and 2"); navigationService.Navigate("Page1", 1); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 1 again."); navigationService.Navigate("Page3", 3); Assert.AreEqual(4, frameSessionState.Count, "VM 1, 2, 1, and 3"); }); }
public async Task Navigate_To_Invalid_Page() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(string), sessionStateService); bool result = navigationService.Navigate("Mock", 1); Assert.IsFalse(result); Assert.IsNull(frame.Content); }); }
public async Task Navigate_To_Invalid_Page() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(string), sessionStateService); bool result = navigationService.Navigate("Mock", 1); Assert.IsFalse(result); Assert.IsNull(frame.Content); }); }
public async Task Navigate_To_Valid_Page() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); bool result = navigationService.Navigate("Mock", 1); Assert.IsTrue(result); Assert.IsNotNull(frame.Content); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); }); }
public async Task PageTokenThatCannotBeResolved_ThrowsMeaningfulException() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); var frameSessionState = new Dictionary <string, object>(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => frameSessionState; Func <string, Type> unresolvablePageTokenReturnsNull = pageToken => null; var navigationService = new FrameNavigationService(frame, unresolvablePageTokenReturnsNull, sessionStateService); Assert.ThrowsException <ArgumentException>( () => navigationService.Navigate("anything", 1) ); }); }
public async Task Navigate_To_Valid_Page() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); bool result = navigationService.Navigate("Mock", 1); Assert.IsTrue(result); Assert.IsNotNull(frame.Content); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); }); }
public async Task Navigate_To_Page_With_Null_Aggregator_Still_Works() { await DispatcherHelper.ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); var navigationManager = SystemNavigationManager.GetForCurrentView(); // Reset back button visibility before running, can't do this in TestInitialize because CoreWindow sometimes isn't ready SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; bool result = navigationService.Navigate("Mock", 1); Assert.IsTrue(result); }); }
public async Task Resuming_Calls_ViewModel_OnNavigatedTo() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); navigationService.Navigate("Mock", 1); var viewModel = new MockPageViewModel(); viewModel.OnNavigatedToCommand = (navigationParameter, navigationMode, frameState) => { Assert.AreEqual(NavigationMode.Refresh, navigationMode); }; var page = (MockPage)frame.Content; page.DataContext = viewModel; navigationService.RestoreSavedNavigation(); }); }
public async Task Suspending_Calls_VieModel_OnNavigatedFrom() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary <string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); navigationService.Navigate("Mock", 1); var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (frameState, suspending) => { Assert.IsTrue(suspending); }; var page = (MockPage)frame.Content; page.DataContext = viewModel; navigationService.Suspending(); }); }
public async Task Navigate_To_Page_With_UseTitleBarBackButton_False_Does_Not_Change_Back_Button_Visibility() { await DispatcherHelper.ExecuteOnUIThread(() => { var eventAggregator = new EventAggregator(); var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); var deviceGestureService = new DeviceGestureService(); deviceGestureService.EnableTitleBarBackButton(eventAggregator); var navigationManager = SystemNavigationManager.GetForCurrentView(); // Reset back button visibility before running, can't do this in TestInitialize because CoreWindow sometimes isn't ready SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; // If it's collapsed and we navigate, it stays collapsed Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.Navigate("Mock", 1); Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); // If it's visible and our back stack is emptied, it stays visible navigationManager.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; navigationService.ClearHistory(); Assert.AreEqual(AppViewBackButtonVisibility.Visible, navigationManager.AppViewBackButtonVisibility); }); }
public async Task Navigate_To_Page_With_Null_Aggregator_Still_Works() { await DispatcherHelper.ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); var navigationManager = SystemNavigationManager.GetForCurrentView(); // Reset back button visibility before running, can't do this in TestInitialize because CoreWindow sometimes isn't ready SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; bool result = navigationService.Navigate("Mock", 1); Assert.IsTrue(result); }); }
public async Task GoBack_When_CanGoBack() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); bool resultFirstNavigation = navigationService.Navigate("MockPage", 1); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); Assert.IsFalse(navigationService.CanGoBack()); bool resultSecondNavigation = navigationService.Navigate("Mock", 2); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(2, ((MockPage)frame.Content).PageParameter); Assert.IsTrue(navigationService.CanGoBack()); navigationService.GoBack(); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); Assert.IsFalse(navigationService.CanGoBack()); }); }
public async Task NavigateToCurrentViewModel_Calls_VieModel_OnNavigatedTo() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); bool viewModelNavigatedToCalled = false; var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (a, b) => Assert.IsTrue(true); viewModel.OnNavigatedToCommand = (parameter, navigationMode, frameState) => { Assert.AreEqual(NavigationMode.New, navigationMode); viewModelNavigatedToCalled = true; }; // Set up the viewModel to the Page we navigated frame.NavigatedTo += (sender, e) => { var view = frame.Content as FrameworkElement; view.DataContext = viewModel; }; var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); navigationService.Navigate("Mock", 1); Assert.IsTrue(viewModelNavigatedToCalled); }); }
public async Task Suspending_Calls_VieModel_OnNavigatedFrom() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var frameSessionState = new MockFrameSessionState(); frameSessionState.GetSessionStateForFrameDelegate = (currentFrame) => { var toReturn = new Dictionary<string, object>(); toReturn.Add("someValue", 1); return toReturn; }; var restorableStateService = new MockSuspensionManagerState(); var navigationService = new FrameNavigationService(frame, frameSessionState, (pageToken) => typeof(MockPage), restorableStateService); navigationService.Navigate("Mock", 1); var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (frameState, suspending) => { Assert.IsTrue(suspending); Assert.AreEqual(1, frameState["someValue"]); }; var page = (MockPage)frame.Content; page.DataContext = viewModel; navigationService.Suspending(); }); }
public async Task Suspending_Calls_VieModel_OnNavigatedFrom() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); navigationService.Navigate("Mock", 1); var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (frameState, suspending) => { Assert.IsTrue(suspending); }; var page = (MockPage)frame.Content; page.DataContext = viewModel; navigationService.Suspending(); }); }
public async Task RestoreSavedNavigation_ClearsOldForwardNavigation() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); var frameSessionState = new Dictionary<string, object>(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => frameSessionState; var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPageWithViewModel), sessionStateService); navigationService.Navigate("Page1", 1); Assert.AreEqual(1, frameSessionState.Count, "VM 1 state only"); navigationService.Navigate("Page2", 2); Assert.AreEqual(2, frameSessionState.Count, "VM 1 and 2"); navigationService.Navigate("Page3", 3); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 3"); navigationService.GoBack(); Assert.AreEqual(2, ((Dictionary<string, object>)frameSessionState["ViewModel-2"]).Count); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 3"); navigationService.Navigate("Page4", 4); Assert.AreEqual(0, ((Dictionary<string,object>)frameSessionState["ViewModel-2"]).Count); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 4"); }); }
public async Task ViewModelOnNavigatedFromCalled_WithItsOwnStateDictionary() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); var frameSessionState = new Dictionary<string, object>(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => frameSessionState; var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPageWithViewModel), sessionStateService); navigationService.Navigate("Page1", 1); Assert.AreEqual(1, frameSessionState.Count, "VM 1 state only"); navigationService.Navigate("Page2", 2); Assert.AreEqual(2, frameSessionState.Count, "VM 1 and 2"); navigationService.Navigate("Page1", 1); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 1 again."); navigationService.Navigate("Page3", 3); Assert.AreEqual(4, frameSessionState.Count, "VM 1, 2, 1, and 3"); }); }
public async Task NavigateFromCurrentViewModel_Calls_VieModel_OnNavigatedFrom() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); bool viewModelNavigatedFromCalled = false; var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (frameState, suspending) => { Assert.IsFalse(suspending); viewModelNavigatedFromCalled = true; }; var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); // Initial navigatio navigationService.Navigate("page0", 0); // Set up the frame's content with a Page var view = new MockPage(); view.DataContext = viewModel; frame.Content = view; // Navigate to fire the NavigatedToCurrentViewModel navigationService.Navigate("page1", 1); Assert.IsTrue(viewModelNavigatedFromCalled); }); }
public async Task Resuming_Calls_ViewModel_OnNavigatedTo() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); navigationService.Navigate("Mock", 1); var viewModel = new MockPageViewModel(); viewModel.OnNavigatedToCommand = (navigationParameter, navigationMode, frameState) => { Assert.AreEqual(NavigationMode.Refresh, navigationMode); }; var page = (MockPage)frame.Content; page.DataContext = viewModel; navigationService.RestoreSavedNavigation(); }); }
public async Task PageTokenThatCannotBeResolved_ThrowsMeaningfulException() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); var frameSessionState = new Dictionary<string, object>(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => frameSessionState; Func<string, Type> unresolvablePageTokenReturnsNull = pageToken => null; var navigationService = new FrameNavigationService(frame, unresolvablePageTokenReturnsNull, sessionStateService); Assert.ThrowsException<ArgumentException>( () => navigationService.Navigate("anything", 1) ); }); }
public async Task NavigateFromCurrentViewModel_Calls_VieModel_OnNavigatedFrom() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); bool viewModelNavigatedFromCalled = false; var viewModel = new MockPageViewModel(); viewModel.OnNavigatedFromCommand = (frameState, suspending) => { Assert.IsFalse(suspending); Assert.AreEqual(1, frameState["someValue"]); viewModelNavigatedFromCalled = true; }; var frameSessionState = new MockFrameSessionState(); frameSessionState.GetSessionStateForFrameDelegate = (currentFrame) => { var toReturn = new Dictionary<string, object>(); toReturn.Add("someValue", 1); return toReturn; }; var navigationService = new FrameNavigationService(frame, frameSessionState, (pageToken) => typeof(MockPage), null); // Set up the frame's content with a Page var view = new MockPage(); view.DataContext = viewModel; frame.Content = view; // Navigate to fire the NavigatedToCurrentViewModel navigationService.Navigate("Mock", 1); Assert.IsTrue(viewModelNavigatedFromCalled); }); }