Example #1
0
        public void GoForwardMultipleTimesNavigatesForward()
        {
            // Prepare
            RegionNavigationJournal target = new RegionNavigationJournal();

            Mock <INavigateAsync> mockNavigationTarget = new Mock <INavigateAsync>();

            target.NavigationTarget = mockNavigationTarget.Object;

            Uri uri1 = new Uri("Uri1", UriKind.Relative);
            RegionNavigationJournalEntry entry1 = new RegionNavigationJournalEntry()
            {
                Uri = uri1
            };

            Uri uri2 = new Uri("Uri2", UriKind.Relative);
            RegionNavigationJournalEntry entry2 = new RegionNavigationJournalEntry()
            {
                Uri = uri2
            };

            Uri uri3 = new Uri("Uri3", UriKind.Relative);
            RegionNavigationJournalEntry entry3 = new RegionNavigationJournalEntry()
            {
                Uri = uri3
            };

            target.RecordNavigation(entry1, true);
            target.RecordNavigation(entry2, true);
            target.RecordNavigation(entry3, true);

            mockNavigationTarget
            .Setup(x => x.RequestNavigate(uri1, It.IsAny <Action <NavigationResult> >(), null))
            .Callback <Uri, Action <NavigationResult>, NavigationParameters>((u, c, n) => c(new NavigationResult(null, true)));
            mockNavigationTarget
            .Setup(x => x.RequestNavigate(uri2, It.IsAny <Action <NavigationResult> >(), null))
            .Callback <Uri, Action <NavigationResult>, NavigationParameters>((u, c, n) => c(new NavigationResult(null, true)));
            mockNavigationTarget
            .Setup(x => x.RequestNavigate(uri3, It.IsAny <Action <NavigationResult> >(), null))
            .Callback <Uri, Action <NavigationResult>, NavigationParameters>((u, c, n) => c(new NavigationResult(null, true)));

            target.GoBack();
            target.GoBack();

            // Act
            target.GoForward();
            target.GoForward();

            // Verify
            Assert.True(target.CanGoBack);
            Assert.False(target.CanGoForward);
            Assert.Same(entry3, target.CurrentEntry);

            mockNavigationTarget.Verify(x => x.RequestNavigate(uri1, It.IsAny <Action <NavigationResult> >(), null), Times.Once());
            mockNavigationTarget.Verify(x => x.RequestNavigate(uri2, It.IsAny <Action <NavigationResult> >(), null), Times.Exactly(2));
            mockNavigationTarget.Verify(x => x.RequestNavigate(uri3, It.IsAny <Action <NavigationResult> >(), null), Times.Once());
        }
Example #2
0
        public void GoForwardDoesNotChangeStateWhenNavigationFails()
        {
            // Prepare
            var target = new RegionNavigationJournal();

            var mockNavigationTarget = new Mock <INavigateAsync>();

            target.NavigationTarget = mockNavigationTarget.Object;

            var uri1   = new Uri("Uri1", UriKind.Relative);
            var entry1 = new RegionNavigationJournalEntry()
            {
                Uri = uri1
            };

            var uri2   = new Uri("Uri2", UriKind.Relative);
            var entry2 = new RegionNavigationJournalEntry()
            {
                Uri = uri2
            };

            var uri3   = new Uri("Uri3", UriKind.Relative);
            var entry3 = new RegionNavigationJournalEntry()
            {
                Uri = uri3
            };

            target.RecordNavigation(entry1, true);
            target.RecordNavigation(entry2, true);
            target.RecordNavigation(entry3, true);

            mockNavigationTarget
            .Setup(x => x.RequestNavigate(uri1, It.IsAny <Action <IRegionNavigationResult> >(), null))
            .Callback <Uri, Action <IRegionNavigationResult>, INavigationParameters>((u, c, n) => c(new RegionNavigationResult(null, true)));
            mockNavigationTarget
            .Setup(x => x.RequestNavigate(uri2, It.IsAny <Action <IRegionNavigationResult> >(), null))
            .Callback <Uri, Action <IRegionNavigationResult>, INavigationParameters>((u, c, n) => c(new RegionNavigationResult(null, true)));
            mockNavigationTarget
            .Setup(x => x.RequestNavigate(uri3, It.IsAny <Action <IRegionNavigationResult> >(), null))
            .Callback <Uri, Action <IRegionNavigationResult>, INavigationParameters>((u, c, n) => c(new RegionNavigationResult(null, false)));

            target.GoBack();

            // Act
            target.GoForward();

            // Verify
            Assert.True(target.CanGoBack);
            Assert.True(target.CanGoForward);
            Assert.Same(entry2, target.CurrentEntry);

            mockNavigationTarget.Verify(x => x.RequestNavigate(uri1, It.IsAny <Action <IRegionNavigationResult> >(), null), Times.Never());
            mockNavigationTarget.Verify(x => x.RequestNavigate(uri2, It.IsAny <Action <IRegionNavigationResult> >(), null), Times.Once());
            mockNavigationTarget.Verify(x => x.RequestNavigate(uri3, It.IsAny <Action <IRegionNavigationResult> >(), null), Times.Once());
        }