public void ShouldSwitchSettingsChangedWhenCollectionIsUpdated() { var vm = new SettingsViewViewModel(); vm.Launchers.Add(new LauncherViewModel()); vm.Repositories.Add(new RepositoryViewModel()); // Editing a repo should switch vm.SettingsChanged = false; vm.Repositories[0].Path = "Leia, you were soooo pretty"; Assert.That(vm.SettingsChanged, Is.True); // Adding a repo should switch vm.SettingsChanged = false; vm.Repositories.Add(new RepositoryViewModel()); Assert.That(vm.SettingsChanged, Is.True); // Removing a repo should switch vm.SettingsChanged = false; vm.Repositories.RemoveAt(0); Assert.That(vm.SettingsChanged, Is.True); // Excluding a launcher should switch vm.SettingsChanged = false; vm.Launchers[0].Active = !vm.Launchers[0].Active; Assert.That(vm.SettingsChanged, Is.True); }
public void ConfigIsSavedOnSave() { var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, _openFileDialog.Object); //simulate Update button click vm.UpdateSettingsCommand.Execute(null); _configService.Verify(s => s.Save(_config)); }
public void ViewIsPopulatedOnRefresh() { var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, _openFileDialog.Object); vm.RefreshView(); Assert.AreEqual(Name, vm.UserName, "Name"); Assert.AreEqual(Email, vm.EmailAddress, "Email"); Assert.AreEqual(RepoLocation, vm.DefaultRepositoryLocation, "Default Repo Location"); Assert.AreEqual(CommandPromptLocation, vm.CommandPromptLocation, "Command Prompt Location"); }
public void ShouldInitializeRepositoriesWhenLoaded() { var context = new OneLaunchContextMock().WithUserSettings(new UserSettings() { Repositories = new Dictionary <string, List <Repository> >() { { "REPO1", new List <Repository>() { new Repository() { Path = "Path1", Name = "Name1" }, new Repository() { Path = "Path2", Name = "Name2" } } }, { "REPO2", new List <Repository>() { new Repository() { Path = "Path3", Name = "Name3" }, } } } }); var vm = new SettingsViewViewModel() { Context = context }; Assert.That(vm.Repositories, Has.Count.EqualTo(0)); Assert.That(vm.SettingsChanged, Is.False); vm.LoadedCommand.Execute(null); WaitUtils.WaitFor(() => vm.Repositories.Count == 3, 10); // The repository dico should have been flatten Assert.That(vm.Repositories, Has.Count.EqualTo(3)); AssertRepositoryViewModel(vm.Repositories[0], "REPO1", "Name1", "Path1"); AssertRepositoryViewModel(vm.Repositories[1], "REPO1", "Name2", "Path2"); AssertRepositoryViewModel(vm.Repositories[2], "REPO2", "Name3", "Path3"); Assert.That(vm.SettingsChanged, Is.False); }
public void ConfigIsSavedOnSave() { //arrange var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object); //act //simulate Update button click vm.UpdateSettingsCommand.Execute(null); //assert _configService.Verify(s => s.SaveConfiguration(_config)); }
public void ViewIsPopulatedOnRefresh() { //arrange var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object); //act vm.RefreshView(); //assert Assert.AreEqual(Name, vm.UserName, "Name"); Assert.AreEqual(Email, vm.EmailAddress, "Email"); Assert.AreEqual(RepoLocation, vm.DefaultRepositoryLocation, "Default Repo Location"); }
public void ShouldInitializeLaunchersWhenLoaded() { var context = new OneLaunchContextMock().WithUserSettings(new UserSettings() { ExcludedLauncherFilePaths = new List <string>() { "Path1", "OldPath" // This one does not exist any more (it's not part of the discovered launchers) } }); var loader = new Mock <IConfigurationLoader>(MockBehavior.Strict); loader.Setup(mock => mock.DiscoverFiles(Environment.CurrentDirectory)) .Returns(new[] { new DiscoveredLauncher() { FilePath = "Path1" }, // Is in the exclusion list, so will be excluded new DiscoveredLauncher() { FilePath = "Path2" } // Is not in the list, so will be active }) .Verifiable(); var vm = new SettingsViewViewModel() { Context = context, Loader = loader.Object }; Assert.That(vm.Repositories, Has.Count.EqualTo(0)); Assert.That(vm.SettingsChanged, Is.False); vm.LoadedCommand.Execute(null); WaitUtils.WaitFor(() => vm.Launchers.Count == 2, 10); // This file was excluded, according to the settings Assert.That(vm.Launchers[0].Path, Is.EqualTo("Path1")); Assert.That(vm.Launchers[0].Active, Is.False); // It was not in the user settings, so we'll suppose it's active Assert.That(vm.Launchers[1].Path, Is.EqualTo("Path2")); Assert.That(vm.Launchers[1].Active, Is.True); loader.VerifyAll(); }
public void OnBrowseCommandPromptLocation_WhenUserConfirms_ViewMatchesSelectedPath() { var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, _openFileDialog.Object) { CommandPromptLocation = CommandPromptLocation }; _openFileDialog.Setup(o => o.FileName).Returns(OtherCommandPromptLocation); _openFileDialog.Setup(o => o.ShowDialog()).Returns(DialogResult.OK); vm.ShowCommandPromptExePickerCommand.Execute(null); Assert.AreEqual(_openFileDialog.Object.FileName, vm.CommandPromptLocation); }
public void OnBrowseCommandPromptLocation_WhenUserCancels_ViewRemainsUnchanged() { var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, _openFileDialog.Object) { CommandPromptLocation = CommandPromptLocation }; _openFileDialog.Setup(o => o.FileName).Returns(OtherCommandPromptLocation); _openFileDialog.Setup(o => o.ShowDialog()).Returns(DialogResult.Cancel); vm.ShowDefaultRepoFolderPickerCommand.Execute(null); Assert.AreEqual(CommandPromptLocation, vm.CommandPromptLocation); }
public void OnBrowseDefaultRepoLocation_WhenUserCancels_ViewRemainsUnchanged() { var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, _openFileDialog.Object) { DefaultRepositoryLocation = RepoLocation }; _folderBrowser.Object.SelectedPath = OtherRepoLocation; _folderBrowser.Setup(f => f.ShowDialog()).Returns(DialogResult.Cancel); vm.ShowDefaultRepoFolderPickerCommand.Execute(null); Assert.AreEqual(RepoLocation, vm.DefaultRepositoryLocation); }
public void InitializeMocks() { _window = Mocks.MockFactory.CreateWindowMock(); _windows = new MockWindowsCollection(new List <Window> { _window.Object }); _vbe = Mocks.MockFactory.CreateVbeMock(_windows); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); _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>(), false)).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 <VBProject>())) .Returns(_provider.Object); _providerFactory.Setup(f => f.CreateProvider(It.IsAny <VBProject>(), It.IsAny <IRepository>(), It.IsAny <ICodePaneWrapperFactory>())) .Returns(_provider.Object); _providerFactory.Setup(f => f.CreateProvider(It.IsAny <VBProject>(), It.IsAny <IRepository>(), It.IsAny <SecureCredentials>(), It.IsAny <ICodePaneWrapperFactory>())) .Returns(_provider.Object); _changesVM = new ChangesViewViewModel(); _branchesVM = new BranchesViewViewModel(); _unsyncedVM = new UnsyncedCommitsViewViewModel(); _settingsVM = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, new Rubberduck.UI.OpenFileDialog()); }
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 ChangesViewViewModel(); _branchesVM = new BranchesViewViewModel(); _unsyncedVM = new UnsyncedCommitsViewViewModel(); _settingsVM = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, new Rubberduck.UI.OpenFileDialog()); }
public void ShouldExtractLauncherPathsWhenSavingSettings() { var settings = new UserSettings() { Repositories = null }; var context = new Mock <IOneLauncherContext>(MockBehavior.Strict); context.SetupGet(mock => mock.UserSettings) .Returns(settings) .Verifiable(); context.Setup(mock => mock.SaveUserSettings()) .Verifiable(); var vm = new SettingsViewViewModel { Context = context.Object, Launchers = new TrulyObservableCollection <LauncherViewModel>() { new LauncherViewModel() { Active = true, // It's active, so we will not persist it in the settings InnerDiscoveredLauncher = new DiscoveredLauncher() { FilePath = "Path1" } }, new LauncherViewModel() { Active = false, // The user specified that it should be excluded, so we will store it in the settings InnerDiscoveredLauncher = new DiscoveredLauncher() { FilePath = "Path2" } } } }; vm.SaveSettingsCommand.Execute(null); var actual = settings.ExcludedLauncherFilePaths; Assert.That(actual, Is.Not.Null); Assert.That(actual, Is.EquivalentTo(new[] { "Path2" })); context.VerifyAll(); }
public void OnBrowseDefaultRepoLocation_WhenUserConfirms_ViewMatchesSelectedPath() { //arrange var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, _openFileDialog.Object) { DefaultRepositoryLocation = RepoLocation }; _folderBrowser.Object.SelectedPath = OtherRepoLocation; _folderBrowser.Setup(f => f.ShowDialog()).Returns(DialogResult.OK); //act vm.ShowDefaultRepoFolderPickerCommand.Execute(null); //assert Assert.AreEqual(_folderBrowser.Object.SelectedPath, vm.DefaultRepositoryLocation); }
public void ConfigIsPopulatedFromViewOnSave() { //arrange var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object); //simulate user input vm.UserName = OtherName; vm.EmailAddress = OtherEmail; vm.DefaultRepositoryLocation = OtherRepoLocation; //simulate Update button click vm.UpdateSettingsCommand.Execute(null); //assert Assert.AreEqual(OtherName, _config.UserName, "Name"); Assert.AreEqual(OtherEmail, _config.EmailAddress, "Email"); Assert.AreEqual(OtherRepoLocation, _config.DefaultRepositoryLocation, "Default Repo Location"); }
public void ChangesToViewAreRevertedOnCancel() { var vm = new SettingsViewViewModel(_configService.Object, _folderBrowserFactory.Object, _openFileDialog.Object); //simulate user input vm.UserName = OtherName; vm.EmailAddress = OtherEmail; vm.DefaultRepositoryLocation = OtherRepoLocation; vm.DefaultRepositoryLocation = OtherCommandPromptLocation; //simulate Cancel button click vm.CancelSettingsChangesCommand.Execute(null); Assert.AreEqual(Name, vm.UserName, "Name"); Assert.AreEqual(Email, vm.EmailAddress, "Email"); Assert.AreEqual(RepoLocation, vm.DefaultRepositoryLocation, "Default Repo Location"); Assert.AreEqual(CommandPromptLocation, vm.CommandPromptLocation, "Command Prompt Location"); }
public void ShouldBuildProperDictionaryWhenSavingSettings() { var settings = new UserSettings() { Repositories = null }; var context = new Mock <IOneLauncherContext>(MockBehavior.Strict); context.SetupGet(mock => mock.UserSettings) .Returns(settings) .Verifiable(); context.Setup(mock => mock.SaveUserSettings()) .Verifiable(); var vm = new SettingsViewViewModel { Context = context.Object, Repositories = new TrulyObservableCollection <RepositoryViewModel>() { new RepositoryViewModel() { Type = "REPO1", Name = "Name1", Path = "Path1" }, new RepositoryViewModel() { Type = "REPO2", Name = "Name2", Path = "Path2" }, // New repo, should be on its own in the dico new RepositoryViewModel() { Type = "REPO1", Name = "Name3", Path = "Path3" } // Should be grouped with first row } }; vm.SaveSettingsCommand.Execute(null); var actual = settings.Repositories; Assert.That(actual, Is.Not.Null); Assert.That(actual, Has.Count.EqualTo(2)); Assert.That(actual.ContainsKey("REPO1"), Is.True); var repo1 = actual["REPO1"]; Assert.That(repo1, Is.Not.Null); Assert.That(repo1, Has.Count.EqualTo(2)); Assert.That(repo1[0].Name, Is.EqualTo("Name1")); Assert.That(repo1[0].Path, Is.EqualTo("Path1")); Assert.That(repo1[1].Name, Is.EqualTo("Name3")); Assert.That(repo1[1].Path, Is.EqualTo("Path3")); var repo2 = actual["REPO2"]; Assert.That(repo2, Is.Not.Null); Assert.That(repo2, Has.Count.EqualTo(1)); Assert.That(repo2[0].Name, Is.EqualTo("Name2")); Assert.That(repo2[0].Path, Is.EqualTo("Path2")); context.VerifyAll(); }