Esempio n. 1
0
        public void IncludeChanges_IncludesExcludedFile()
        {
            var fileStatusEntries = new List <FileStatusEntry>
            {
                new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\class.cls", FileStatus.Unaltered),
                new FileStatusEntry(@"C:\path\to\added.bas", FileStatus.Added | FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\addedUnmodified.bas", FileStatus.Added),
                new FileStatusEntry(@"C:\path\to\untracked.frx", FileStatus.Untracked)
            };

            _provider.Setup(git => git.Status()).Returns(fileStatusEntries);
            var vm = new ChangesPanelViewModel
            {
                Provider     = _provider.Object,
                CommitAction = CommitAction.CommitAndSync
            };

            vm.ExcludeChangesToolbarButtonCommand.Execute(fileStatusEntries.First());
            Assert.AreEqual(1, vm.ExcludedChanges.Count);

            vm.IncludeChangesToolbarButtonCommand.Execute(fileStatusEntries.First());
            Assert.AreEqual(3, vm.IncludedChanges.Count);
            Assert.AreEqual(0, vm.ExcludedChanges.Count);
        }
Esempio n. 2
0
        public void Undo_UndoesChanges()
        {
            var fileStatusEntries = new List <FileStatusEntry>
            {
                new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\class.cls", FileStatus.Unaltered),
                new FileStatusEntry(@"C:\path\to\added.bas", FileStatus.Added | FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\addedUnmodified.bas", FileStatus.Added),
                new FileStatusEntry(@"C:\path\to\untracked.frx", FileStatus.Untracked)
            };

            var vm = new ChangesPanelViewModel
            {
                Provider = _provider.Object
            };

            var localLocation = @"C:\users\desktop\git\";

            _provider.Setup(git => git.Status()).Returns(fileStatusEntries);
            _provider.SetupGet(git => git.CurrentRepository).Returns(new Repository {
                LocalLocation = localLocation
            });

            vm.UndoChangesToolbarButtonCommand.Execute(fileStatusEntries[0]);

            _provider.Verify(git => git.Undo(@"C:\users\desktop\git\module.bas"));
        }
Esempio n. 3
0
        public void ChangesPresenter_WhenCommitFails_ActionFailedEventIsRaised()
        {
            var vm = new ChangesPanelViewModel
            {
                Provider        = _provider.Object,
                CommitMessage   = "Test Message",
                CommitAction    = CommitAction.Commit,
                IncludedChanges =
                    new ObservableCollection <IFileStatusEntry>
                {
                    new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Untracked)
                }
            };

            _provider.Setup(p => p.Commit(It.IsAny <string>()))
            .Throws(
                new SourceControlException("A source control exception was thrown.",
                                           new LibGit2Sharp.LibGit2SharpException("With an inner libgit2sharp exception"))
                );

            var wasRaised = false;

            vm.ErrorThrown += (e, sender) => wasRaised = true;

            vm.CommitCommand.Execute(null);

            Assert.IsTrue(wasRaised, "ActionFailedEvent was not raised.");
        }
Esempio n. 4
0
        public void InitializeMocks()
        {
            _vbe = new MockVbeBuilder()
                   .ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
                   .AddComponent("Module1", ComponentType.StandardModule, string.Empty)
                   .MockVbeBuilder()
                   .Build();



            _configService = new Mock <IConfigProvider <SourceControlSettings> >();
            _configService.Setup(c => c.Create()).Returns(GetDummyConfig());

            _folderBrowser        = new Mock <IFolderBrowser>();
            _folderBrowserFactory = new Mock <IFolderBrowserFactory>();
            _folderBrowserFactory.Setup(f => f.CreateFolderBrowser(It.IsAny <string>())).Returns(_folderBrowser.Object);
            _folderBrowserFactory.Setup(f => f.CreateFolderBrowser(It.IsAny <string>(), It.IsAny <bool>())).Returns(_folderBrowser.Object);
            _folderBrowserFactory.Setup(f => f.CreateFolderBrowser(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <string>())).Returns(_folderBrowser.Object);


            var masterRemote = new Mock <LibGit2Sharp.Branch>();

            masterRemote.SetupGet(git => git.Tip).Returns(new Mock <LibGit2Sharp.Commit>().Object);
            masterRemote.SetupGet(git => git.FriendlyName).Returns("master");

            var initialBranch = new Branch("master", "refs/Heads/master", false, true, masterRemote.Object);

            _provider = new Mock <ISourceControlProvider>();
            _provider.SetupGet(git => git.CurrentBranch).Returns(initialBranch);
            _provider.SetupGet(git => git.UnsyncedLocalCommits).Returns(new List <ICommit>());
            _provider.SetupGet(git => git.UnsyncedRemoteCommits).Returns(new List <ICommit>());
            _provider.Setup(git => git.InitVBAProject(It.IsAny <string>())).Returns(GetDummyRepo());
            _provider.Setup(git => git.Clone(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <SecureCredentials>())).Returns(GetDummyRepo());
            _provider.Setup(git => git.CurrentRepository).Returns(GetDummyRepo());

            _providerFactory = new Mock <ISourceControlProviderFactory>();
            _providerFactory.Setup(f => f.CreateProvider(It.IsAny <IVBProject>()))
            .Returns(_provider.Object);
            _providerFactory.Setup(f => f.CreateProvider(It.IsAny <IVBProject>(), It.IsAny <IRepository>()))
            .Returns(_provider.Object);
            _providerFactory.Setup(f => f.CreateProvider(It.IsAny <IVBProject>(), It.IsAny <IRepository>(), It.IsAny <SecureCredentials>()))
            .Returns(_provider.Object);

            _changesVM  = new ChangesPanelViewModel();
            _branchesVM = new BranchesPanelViewModel();
            _unsyncedVM = new UnsyncedCommitsPanelViewModel();
            _settingsVM = new SettingsPanelViewModel(_configService.Object, _folderBrowserFactory.Object, new Rubberduck.UI.OpenFileDialog());
        }
Esempio n. 5
0
        public void ProviderCommitIsCalledOnCommit()
        {
            var vm = new ChangesPanelViewModel
            {
                Provider        = _provider.Object,
                IncludedChanges =
                    new ObservableCollection <IFileStatusEntry>
                {
                    new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified)
                }
            };

            vm.CommitCommand.Execute(null);

            _provider.Verify(git => git.Commit(It.IsAny <string>()));
        }
Esempio n. 6
0
        public void CommitEnabledAfterActionSelectedAndMessageEntered()
        {
            var vm = new ChangesPanelViewModel
            {
                Provider        = _provider.Object,
                CommitMessage   = "Test Message",
                CommitAction    = CommitAction.Commit,
                IncludedChanges =
                    new ObservableCollection <IFileStatusEntry>
                {
                    new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified)
                }
            };

            Assert.IsTrue(vm.CommitCommand.CanExecute(null));
        }
Esempio n. 7
0
        public void ExcludedIsNotClearedAfterRefresh()
        {
            var vm = new ChangesPanelViewModel
            {
                Provider        = _provider.Object,
                CommitMessage   = "Test Message",
                CommitAction    = CommitAction.Commit,
                ExcludedChanges =
                    new ObservableCollection <IFileStatusEntry>
                {
                    new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified)
                }
            };

            Assert.IsTrue(vm.ExcludedChanges.Any());

            vm.RefreshView();

            Assert.IsTrue(vm.ExcludedChanges.Any());
        }
Esempio n. 8
0
        public void RefreshChangesAfterCommit()
        {
            var vm = new ChangesPanelViewModel
            {
                Provider        = _provider.Object,
                CommitMessage   = "Test Message",
                CommitAction    = CommitAction.Commit,
                IncludedChanges =
                    new ObservableCollection <IFileStatusEntry>
                {
                    new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified)
                }
            };

            Assert.IsTrue(vm.IncludedChanges.Any());

            vm.CommitCommand.Execute(null);
            _provider.Setup(git => git.Status()).Returns(new List <FileStatusEntry>());

            Assert.IsFalse(vm.IncludedChanges.Any());
        }
Esempio n. 9
0
        public void IncludeChanges_AddsUntrackedFile()
        {
            var fileStatusEntries = new List <FileStatusEntry>
            {
                new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\class.cls", FileStatus.Unaltered),
                new FileStatusEntry(@"C:\path\to\added.bas", FileStatus.Added | FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\addedUnmodified.bas", FileStatus.Added),
                new FileStatusEntry(@"C:\path\to\untracked.frx", FileStatus.Untracked)
            };

            _provider.Setup(git => git.Status()).Returns(fileStatusEntries);

            var vm = new ChangesPanelViewModel
            {
                Provider = _provider.Object
            };

            vm.IncludeChangesToolbarButtonCommand.Execute(fileStatusEntries.Last());

            _provider.Verify(git => git.AddFile(fileStatusEntries.Last().FilePath));
        }
Esempio n. 10
0
        public void ProviderCommits_NotificationOnSuccess()
        {
            var vm = new ChangesPanelViewModel
            {
                Provider        = _provider.Object,
                CommitAction    = CommitAction.Commit,
                IncludedChanges =
                    new ObservableCollection <IFileStatusEntry>
                {
                    new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified)
                }
            };

            var errorThrown = bool.FalseString; // need a reference type

            vm.ErrorThrown += (sender, e) =>
            {
                lock (_locker)
                {
                    MultiAssert.Aggregate(
                        () => Assert.AreEqual(e.Title, Rubberduck.UI.RubberduckUI.SourceControl_CommitStatus),
                        () =>
                        Assert.AreEqual(e.InnerMessage,
                                        Rubberduck.UI.RubberduckUI.SourceControl_CommitStatus_CommitSuccess),
                        () => Assert.AreEqual(e.NotificationType, NotificationType.Info));

                    errorThrown = bool.TrueString;
                }
            };

            vm.CommitCommand.Execute(null);

            lock (_locker)
            {
                Assert.IsTrue(bool.Parse(errorThrown));
            }
        }
Esempio n. 11
0
        public void UndoFails_ActionFailedEventIsRaised()
        {
            var wasRaised         = false;
            var fileStatusEntries = new List <FileStatusEntry>
            {
                new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\class.cls", FileStatus.Unaltered),
                new FileStatusEntry(@"C:\path\to\added.bas", FileStatus.Added | FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\addedUnmodified.bas", FileStatus.Added),
                new FileStatusEntry(@"C:\path\to\untracked.frx", FileStatus.Untracked)
            };

            var vm = new ChangesPanelViewModel
            {
                Provider = _provider.Object
            };

            var localLocation = "C:\\users\\desktop\\git\\";

            _provider.Setup(git => git.Status()).Returns(fileStatusEntries);
            _provider.SetupGet(git => git.CurrentRepository).Returns(new Repository {
                LocalLocation = localLocation
            });

            _provider.Setup(p => p.Undo(It.IsAny <string>()))
            .Throws(
                new SourceControlException("A source control exception was thrown.",
                                           new LibGit2Sharp.LibGit2SharpException("With an inner libgit2sharp exception"))
                );

            vm.ErrorThrown += (sender, error) => wasRaised = true;

            vm.UndoChangesToolbarButtonCommand.Execute(fileStatusEntries[0]);

            Assert.IsTrue(wasRaised, "ActionFailedEvent was not raised.");
        }
Esempio n. 12
0
        public void RefreshDisplaysChangedFiles()
        {
            var fileStatusEntries = new List <FileStatusEntry>
            {
                new FileStatusEntry(@"C:\path\to\module.bas", FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\class.cls", FileStatus.Unaltered),
                new FileStatusEntry(@"C:\path\to\added.bas", FileStatus.Added | FileStatus.Modified),
                new FileStatusEntry(@"C:\path\to\addedUnmodified.bas", FileStatus.Added),
                new FileStatusEntry(@"C:\path\to\untracked.frx", FileStatus.Untracked)
            };

            var vm = new ChangesPanelViewModel
            {
                Provider     = _provider.Object,
                CommitAction = CommitAction.CommitAndSync
            };

            _provider.Setup(git => git.Status()).Returns(fileStatusEntries);

            vm.RefreshView();

            Assert.AreEqual(3, vm.IncludedChanges.Count, "Incorrect Included Changes");
            Assert.AreEqual(@"C:\path\to\untracked.frx", vm.UntrackedFiles[0].FilePath);
        }