public void OnClickCreateStashButtonFiresCreateStashButtonCommandEvents()
        {
            var page    = new Mock <ITeamExplorerBase>();
            var wrapper = new Mock <IGitStashWrapper>();
            var results = new Mock <IGitStashResults>();

            results.Setup(r => r.Success).Returns(true);
            wrapper.Setup(w => w.SaveStash(It.IsAny <IGitStashSaveOptions>()))
            .Returns(results.Object)
            .Verifiable();
            RecommendedActionsViewModel vm = new RecommendedActionsViewModel(wrapper.Object, page.Object);
            ICommand command = vm.CreateStashButtonCommand;

            AutoResetEvent waitHandle = new AutoResetEvent(false);
            bool           clickeventWasDispatched = false;

            vm.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "CreateStashButtonCommand")
                {
                    clickeventWasDispatched = true;
                }
                if (clickeventWasDispatched)
                {
                    waitHandle.Set();
                }
            };
            command.Execute(null);
            waitHandle.WaitOne(5000);
            Assert.IsTrue(clickeventWasDispatched);
        }
        public void StashAllSetsProperties()
        {
            var page    = new Mock <ITeamExplorerBase>();
            var wrapper = new Mock <IGitStashWrapper>();
            IList <IGitStash> gitStashes = new List <IGitStash>();
            var gitStash = new Mock <IGitStash>();

            gitStash.Setup(s => s.Index).Returns(0);
            gitStash.Setup(s => s.Message).Returns("test");
            gitStashes.Add(gitStash.Object);
            wrapper.Setup(w => w.Stashes).Returns(gitStashes);

            RecommendedActionsViewModel vm = new RecommendedActionsViewModel(wrapper.Object, page.Object);

            vm.StashAll = true;
            Assert.IsFalse(vm.StashKeepIndex);
            Assert.IsFalse(vm.StashUntracked);
        }
        public void OnClickCreateStashButtonCallsSave()
        {
            var page    = new Mock <ITeamExplorerBase>();
            var wrapper = new Mock <IGitStashWrapper>();
            var results = new Mock <IGitStashResults>();

            results.Setup(r => r.Success).Returns(true);
            AutoResetEvent waitHandle = new AutoResetEvent(false);

            wrapper.Setup(w => w.SaveStash(It.IsAny <IGitStashSaveOptions>()))
            .Returns(results.Object)
            .Callback(() => waitHandle.Set())
            .Verifiable();
            RecommendedActionsViewModel vm = new RecommendedActionsViewModel(wrapper.Object, page.Object);

            vm.CreateStashButtonCommand.Execute(null);
            waitHandle.WaitOne(5000);

            wrapper.Verify(w => w.SaveStash(It.IsAny <IGitStashSaveOptions>()));
        }
        private void TestVmFiresEvent(Action <IGitStashWrapper> eventExpression, EventArgs args, string PropertyName)
        {
            var wrapper = new Mock <IGitStashWrapper>();
            var page    = new Mock <ITeamExplorerBase>();
            RecommendedActionsViewModel vm    = new RecommendedActionsViewModel(wrapper.Object, page.Object);
            AutoResetEvent waitHandle         = new AutoResetEvent(false);
            bool           eventWasDispatched = false;

            vm.PropertyChanged += (s, a) =>
            {
                if (a.PropertyName == PropertyName)
                {
                    eventWasDispatched = true;
                }
                if (eventWasDispatched)
                {
                    waitHandle.Set();
                }
            };
            wrapper.Raise(eventExpression, args);
            waitHandle.WaitOne(5000);
            Assert.IsTrue(eventWasDispatched);
        }
        public void StashAllFiresStashUntrackedEvent()
        {
            var page    = new Mock <ITeamExplorerBase>();
            var wrapper = new Mock <IGitStashWrapper>();
            RecommendedActionsViewModel vm = new RecommendedActionsViewModel(wrapper.Object, page.Object);

            AutoResetEvent waitHandle = new AutoResetEvent(false);
            bool           clickeventWasDispatched = false;

            vm.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "StashUntracked")
                {
                    clickeventWasDispatched = true;
                }
                if (clickeventWasDispatched)
                {
                    waitHandle.Set();
                }
            };
            vm.StashAll = true;
            waitHandle.WaitOne(5000);
            Assert.IsTrue(clickeventWasDispatched);
        }
 public RecommendedActionsControl(RecommendedActionsViewModel recommendedActionsViewModel)
 {
     this.DataContext = recommendedActionsViewModel;
     InitializeComponent();
 }