Beispiel #1
0
        public void TestCompleteRun_2Steps()
        {
            var tour = new Tour();

            tour.Steps = new[]
            {
                new Step("1", "Header1", "Content1"),
                new Step("2", "Header2", "Content2"),
            };

            var manager        = new VisualElementManagerMock(tour.Steps);
            var windowManager  = new WindowManagerMock();
            var popupNavigator = new PopupNavigatorMock();
            var tourRun        = new TourRun(tour, manager, windowManager, popupNavigator);

            tourRun.Start();

            Assert.AreEqual(tour.Steps[0], tourRun.CurrentStep);
            Assert.AreEqual(1, tourRun.CurrentStepNo);

            Assert.IsTrue(tourRun.CanNextStep());
            Assert.IsTrue(tourRun.NextStep());
            Assert.AreEqual(tour.Steps[1], tourRun.CurrentStep);
            Assert.AreEqual(2, tourRun.CurrentStepNo);

            Assert.IsFalse(tourRun.CanNextStep());
            Assert.IsFalse(tourRun.NextStep());
            tourRun.Close();

            AssertManagerIsClean(popupNavigator, windowManager);
        }
        public void TestStepCount()
        {
            var tour = new Tour();

            tour.Steps = new[]
            {
                new Step("1", "Header1", "Content1", "ID1"),
                new Step("2", "Header2", "Content2", "ID2"),
                new Step("3", "Header2", "Content2", "ID2"),
            };

            var manager = new VisualElementManagerMock(tour.Steps);
            var tourRun = new TourRun(tour, manager, new WindowManagerMock(), new PopupNavigatorMock());

            FeatureTour.SetTourRun(tourRun);
            tourRun.Start();

            var vm = tourRun.GetPrivateField <TourViewModel>("myTourViewModel");

            Assert.AreEqual(false, vm.HasTourFinished);
            Assert.AreEqual(3, vm.TotalStepsCount);
            Assert.AreEqual(1, vm.CurrentStepNo);

            tourRun.NextStep();

            Assert.AreEqual(false, vm.HasTourFinished);
            Assert.AreEqual(3, vm.TotalStepsCount);
            Assert.AreEqual(2, vm.CurrentStepNo);

            tourRun.NextStep();

            Assert.AreEqual(true, vm.HasTourFinished);
            Assert.AreEqual(3, vm.TotalStepsCount);
            Assert.AreEqual(3, vm.CurrentStepNo);

            tourRun.NextStep();

            Assert.AreEqual(true, vm.HasTourFinished);
            Assert.AreEqual(3, vm.TotalStepsCount);
            Assert.AreEqual(3, vm.CurrentStepNo);

            tourRun.PreviousStep();

            Assert.AreEqual(false, vm.HasTourFinished);
            Assert.AreEqual(3, vm.TotalStepsCount);
            Assert.AreEqual(2, vm.CurrentStepNo);

            FeatureTour.SetCurrentRunNull();
        }
Beispiel #3
0
        public void TestStepsContainsElementIdWithNull()
        {
            var tour = new Tour();

            tour.Steps = new[] { new Step(null, "Header", "Content") };
            try
            {
                var tourRun = new TourRun(tour, new VisualElementManagerMock(), new WindowManagerMock(), new PopupNavigatorMock());
                Assert.Fail();
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(ex, typeof(ArgumentException));
            }
        }
Beispiel #4
0
        public void TestStepsEmpty()
        {
            var tour = new Tour();

            tour.Steps = new Step[0];
            try
            {
                var tourRun = new TourRun(tour, new VisualElementManagerMock(), new WindowManagerMock(), new PopupNavigatorMock());
                Assert.Fail();
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(ex, typeof(ArgumentException));
            }
        }
        public void OnStepDoable()
        {
            var d         = new Doable();
            var navigator = FeatureTour.GetNavigator();

            navigator.ForStep("ID1").AttachDoable(s => d.do1++);
            navigator.ForStep("ID2").AttachDoable(s => d.do2++, s => true);
            navigator.ForStep("ID3").AttachDoable(s => d.do3++, s => false);

            var tour = new Tour();

            tour.Steps = new[]
            {
                new Step("1", "Header1", "Content1", "ID1"),
                new Step("2", "Header2", "Content2", "ID2"),
                new Step("3", "Header3", "Content3", "ID3"),
                new Step("4", "Header4", "Content4", "ID4"),
            };

            var manager = new VisualElementManagerMock(tour.Steps);
            var tourRun = new TourRun(tour, manager, new WindowManagerMock(), new PopupNavigatorMock());

            tourRun.Start();

            AssertIsDoable(d, 0, 0, 0);
            Assert.IsTrue(tourRun.ShowDoIt());
            Assert.IsTrue(tourRun.CanDoIt());
            tourRun.DoIt();
            AssertIsDoable(d, 1, 0, 0);

            tourRun.NextStep();
            Assert.IsTrue(tourRun.ShowDoIt());
            Assert.IsTrue(tourRun.CanDoIt());
            tourRun.DoIt();
            AssertIsDoable(d, 1, 1, 0);

            tourRun.NextStep();
            Assert.IsTrue(tourRun.ShowDoIt());
            Assert.IsFalse(tourRun.CanDoIt());
            tourRun.DoIt();
            AssertIsDoable(d, 1, 1, 1);

            tourRun.NextStep();
            Assert.IsFalse(tourRun.ShowDoIt());
            Assert.IsFalse(tourRun.CanDoIt());
            tourRun.DoIt();
            AssertIsDoable(d, 1, 1, 1);
        }
Beispiel #6
0
        public void TestCompleteRun_2Steps_UsingNavigator()
        {
            var navigator = FeatureTour.GetNavigator();
            var tour      = new Tour();

            tour.Steps = new[]
            {
                new Step("1", "Header1", "Content1"),
                new Step("2", "Header2", "Content2"),
            };

            var manager        = new VisualElementManagerMock(tour.Steps);
            var windowManager  = new WindowManagerMock();
            var popupNavigator = new PopupNavigatorMock();
            var tourRun        = new TourRun(tour, manager, windowManager, popupNavigator);

            FeatureTour.SetTourRun(tourRun);
            tourRun.Start();

            Assert.AreEqual(tour.Steps[0], FeatureTour.CurrentStep);

            Assert.IsTrue(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoNext());
            Assert.AreEqual(tour.Steps[1], FeatureTour.CurrentStep);

            Assert.IsFalse(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoNext());
            Assert.AreEqual(tour.Steps[1], FeatureTour.CurrentStep);

            Assert.IsTrue(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoPrevious());
            Assert.AreEqual(tour.Steps[0], FeatureTour.CurrentStep);

            Assert.IsFalse(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoPrevious());
            Assert.AreEqual(tour.Steps[0], FeatureTour.CurrentStep);

            Assert.IsTrue(navigator.Close());
            Assert.AreEqual(null, FeatureTour.CurrentStep);

            AssertManagerIsClean(popupNavigator, windowManager);

            FeatureTour.SetCurrentRunNull();
        }
Beispiel #7
0
        /// <summary>
        /// Starts the tour.
        /// </summary>
        public void Start()
        {
            Log.Debug("Starting tour: " + (Name ?? "<null>"));
            var run = new TourRun(this,
                                  TourHelper.VisualElementManager,
                                  TourHelper.WindowManager,
                                  TourHelper.PopupNavigator);

            try
            {
                FeatureTour.SetTourRun(run);
                run.Start();
            }
            catch (LicenseException licEx)
            {
                MessageBox.Show("Your copy of FeatureTour is not licensed: " + licEx.Message, "FeatureTour not licensed", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            catch (Exception ex)
            {
                Log.Error("Tour.Start: Unhandled Exception.", ex);
            }
        }
Beispiel #8
0
        public void TestCompleteRun_2Steps_WithPreviouse()
        {
            var tour = new Tour();

            tour.Steps = new[]
            {
                new Step("1", "Header1", "Content1"),
                new Step("2", "Header2", "Content2"),
            };

            var manager        = new VisualElementManagerMock(tour.Steps);
            var windowManager  = new WindowManagerMock();
            var popupNavigator = new PopupNavigatorMock();
            var tourRun        = new TourRun(tour, manager, windowManager, popupNavigator);

            Assert.IsNull(popupNavigator.ViewModel);

            tourRun.Start();
            Assert.IsNotNull(popupNavigator.ViewModel);

            AssertStep(tour, 0, tourRun, popupNavigator);

            Assert.IsTrue(tourRun.CanNextStep());
            Assert.IsTrue(tourRun.NextStep());
            AssertStep(tour, 1, tourRun, popupNavigator);

            Assert.IsTrue(tourRun.CanPreviousStep());
            Assert.IsTrue(tourRun.PreviousStep());
            AssertStep(tour, 0, tourRun, popupNavigator);

            Assert.IsFalse(tourRun.PreviousStep());
            Assert.IsFalse(tourRun.PreviousStep());
            tourRun.Close();

            AssertManagerIsClean(popupNavigator, windowManager);
        }
        public void OnStepEnteredLeavedClosed()
        {
            var c         = new Counter();
            var navigator = FeatureTour.GetNavigator();

            navigator.OnStepEntered("ID1").Execute(s => c.entered1++);
            navigator.OnStepEntered("ID2").Execute(s => c.entered2++);
            navigator.OnStepLeft("ID1").Execute(s => c.leaved1++);
            navigator.OnStepLeft("ID2").Execute(s => c.leaved2++);
            navigator.OnClosed().Execute(s => c.closed++);

            var tour = new Tour();

            tour.Steps = new[]
            {
                new Step("1", "Header1", "Content1", "ID1"),
                new Step("2", "Header2", "Content2", "ID2"),
            };

            var manager = new VisualElementManagerMock(tour.Steps);
            var tourRun = new TourRun(tour, manager, new WindowManagerMock(), new PopupNavigatorMock());

            AssertIsCounter(c, 0, 0, 0, 0, 0);
            FeatureTour.SetTourRun(tourRun);
            AssertIsCounter(c, 0, 0, 0, 0, 0);
            tourRun.Start();
            AssertIsCounter(c, 1, 0, 0, 0, 0);
            tourRun.NextStep();
            AssertIsCounter(c, 1, 1, 1, 0, 0);
            tourRun.PreviousStep();
            AssertIsCounter(c, 2, 1, 1, 1, 0);
            tourRun.Close();
            AssertIsCounter(c, 2, 2, 1, 1, 1);

            FeatureTour.SetCurrentRunNull();
        }
Beispiel #10
0
 private void AssertStep(Tour tour, int index, TourRun tourRun, PopupNavigatorMock popupNavigator)
 {
     Assert.AreEqual(tour.Steps[index], tourRun.CurrentStep);
     Assert.AreEqual(index + 1, tourRun.CurrentStepNo);
     AssertViewModelIsInitialized(tour.Steps[index], popupNavigator.ViewModel);
 }