public ProviderServices( IUserNotifierServices userNotifierServices, IProgressWindowOpener progressWindow, IProviderSettings selectedProviderSettings, IUpdateAllUIService updateAllUIService, IScriptExecutor scriptExecutor, IOutputConsoleProvider outputConsoleProvider, IVsCommonOperations vsCommonOperations) { UserNotifierServices = userNotifierServices; ProgressWindow = progressWindow; ScriptExecutor = scriptExecutor; OutputConsoleProvider = outputConsoleProvider; ProviderSettings = selectedProviderSettings; VsCommonOperations = vsCommonOperations; UpdateAllUIService = updateAllUIService; }
private void InsertUpdateAllButton(IUpdateAllUIService updateAllUIService) { Grid grid = LogicalTreeHelper.FindLogicalNode(explorer, "resGrid") as Grid; if (grid != null && grid.Children.Count > 0) { ListView listView = grid.FindDescendant <ListView>(); if (listView != null) { Grid firstGrid = (Grid)listView.Parent; firstGrid.Children.Remove(listView); var newGrid = new Grid { Margin = listView.Margin }; newGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); newGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); var updateAllContainer = updateAllUIService.CreateUIElement(); updateAllContainer.Margin = new Thickness(5, 2, 0, 5); updateAllContainer.UpdateInvoked += OnUpdateButtonClick; newGrid.Children.Add(updateAllContainer); listView.Margin = new Thickness(); Grid.SetRow(listView, 1); newGrid.Children.Add(listView); firstGrid.Children.Insert(0, newGrid); } } }
public UpdatesProvider( Project project, IPackageRepository localRepository, ResourceDictionary resources, IPackageRepositoryFactory packageRepositoryFactory, IPackageSourceProvider packageSourceProvider, IVsPackageManagerFactory packageManagerFactory, ProviderServices providerServices, IProgressProvider progressProvider, ISolutionManager solutionManager) : base( project, localRepository, resources, packageRepositoryFactory, packageSourceProvider, packageManagerFactory, providerServices, progressProvider, solutionManager) { _project = project; _updateAllUIService = providerServices.UpdateAllUIService; }
private PackageManagerWindow(Project project, DTE dte, IVsPackageManagerFactory packageManagerFactory, IPackageRepositoryFactory repositoryFactory, IPackageSourceProvider packageSourceProvider, IHttpClientEvents httpClientEvents, IProductUpdateService productUpdateService, IPackageRestoreManager packageRestoreManager, ISolutionManager solutionManager, IOptionsPageActivator optionPageActivator, IDeleteOnRestartManager deleteOnRestartManager, IVsShell4 vsRestarter, string dialogParameters) : base(F1Keyword) { InitializeComponent(); #if !VS10 // set unique search guid for VS11 explorer.SearchCategory = new Guid("{85566D5F-E585-411F-B299-5BF006E9F11E}"); #endif _httpClientEvents = httpClientEvents; if (_httpClientEvents != null) { _httpClientEvents.SendingRequest += OnSendingRequest; } _productUpdateService = productUpdateService; _optionsPageActivator = optionPageActivator; _activeProject = project; // replace the ConsoleOutputProvider with SmartOutputConsoleProvider so that we can clear // the console the first time an entry is written to it var providerServices = new ProviderServices(); _smartOutputConsoleProvider = new SmartOutputConsoleProvider(providerServices.OutputConsoleProvider); providerServices.OutputConsoleProvider = _smartOutputConsoleProvider; _providerSettings = providerServices.ProviderSettings; _updateAllUIService = providerServices.UpdateAllUIService; AddUpdateBar(productUpdateService); AddRestoreBar(packageRestoreManager); var restartRequestBar = AddRestartRequestBar(deleteOnRestartManager, vsRestarter); InsertDisclaimerElement(); AdjustSortComboBoxWidth(); PreparePrereleaseComboBox(); InsertUpdateAllButton(providerServices.UpdateAllUIService); SetupProviders( project, dte, packageManagerFactory, repositoryFactory, packageSourceProvider, providerServices, httpClientEvents, solutionManager, packageRestoreManager, restartRequestBar); ProcessDialogParameters(dialogParameters); }
private PackageManagerWindow(Project project, DTE dte, IVsPackageManagerFactory packageManagerFactory, IPackageRepositoryFactory repositoryFactory, IPackageSourceProvider packageSourceProvider, IHttpClientEvents httpClientEvents, IProductUpdateService productUpdateService, IPackageRestoreManager packageRestoreManager, ISolutionManager solutionManager, IOptionsPageActivator optionPageActivator, IDeleteOnRestartManager deleteOnRestartManager, IVsShell4 vsRestarter, string dialogParameters) : base(F1Keyword) { InitializeComponent(); #if !VS10 // set unique search guid for VS11 explorer.SearchCategory = new Guid("{85566D5F-E585-411F-B299-5BF006E9F11E}"); #endif _httpClientEvents = httpClientEvents; if (_httpClientEvents != null) { _httpClientEvents.SendingRequest += OnSendingRequest; } _productUpdateService = productUpdateService; _optionsPageActivator = optionPageActivator; _activeProject = project; // replace the ConsoleOutputProvider with SmartOutputConsoleProvider so that we can clear // the console the first time an entry is written to it var providerServices = new ProviderServices(); _smartOutputConsoleProvider = new SmartOutputConsoleProvider(providerServices.OutputConsoleProvider); providerServices.OutputConsoleProvider = _smartOutputConsoleProvider; _providerSettings = providerServices.ProviderSettings; _updateAllUIService = providerServices.UpdateAllUIService; providerServices.ProgressWindow.UpgradeNuGetRequested += (_, __) => { Close(); productUpdateService.Update(); }; AddUpdateBar(productUpdateService); AddRestoreBar(packageRestoreManager); var restartRequestBar = AddRestartRequestBar(deleteOnRestartManager, vsRestarter); InsertDisclaimerElement(); AdjustSortComboBoxWidth(); PreparePrereleaseComboBox(); InsertUpdateAllButton(providerServices.UpdateAllUIService); SetupProviders( project, dte, packageManagerFactory, repositoryFactory, packageSourceProvider, providerServices, httpClientEvents, solutionManager, packageRestoreManager, restartRequestBar); ProcessDialogParameters(dialogParameters); }
private void InsertUpdateAllButton(IUpdateAllUIService updateAllUIService) { Grid grid = LogicalTreeHelper.FindLogicalNode(explorer, "resGrid") as Grid; if (grid != null && grid.Children.Count > 0) { ListView listView = grid.FindDescendant<ListView>(); if (listView != null) { Grid firstGrid = (Grid)listView.Parent; firstGrid.Children.Remove(listView); var newGrid = new Grid { Margin = listView.Margin }; newGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); newGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); var updateAllContainer = updateAllUIService.CreateUIElement(); updateAllContainer.Margin = new Thickness(5, 2, 0, 5); updateAllContainer.UpdateInvoked += OnUpdateButtonClick; newGrid.Children.Add(updateAllContainer); listView.Margin = new Thickness(); Grid.SetRow(listView, 1); newGrid.Children.Add(listView); firstGrid.Children.Insert(0, newGrid); } } }
/* !!! [Theory] [InlineData(true)] [InlineData(false)] public void ExecuteMethodCallsUpdatePackageMethodOnPackageManager(bool includePrerelease) { // Local repository contains Package A 1.0 and Package B // Source repository contains Package A 2.0 and Package C var packageA1 = PackageUtility.CreatePackage("A", "1.0"); var packageA2 = PackageUtility.CreatePackage("A", "2.0"); var packageB = PackageUtility.CreatePackage("B", "2.0"); var packageC = PackageUtility.CreatePackage("C", "3.0"); // Arrange var localRepository = new MockPackageRepository(); localRepository.AddPackage(packageA1); localRepository.AddPackage(packageB); var sourceRepository = new MockPackageRepository(); sourceRepository.AddPackage(packageA2); sourceRepository.AddPackage(packageC); var project = new Mock<Project>(); var projectManager = new Mock<IProjectManager>(); projectManager.Setup(p => p.LocalRepository).Returns(localRepository); var packageManager = new Mock<IVsPackageManager>(); packageManager.Setup(p => p.SourceRepository).Returns(sourceRepository); packageManager.Setup(p => p.GetProjectManager(It.Is<Project>(s => s == project.Object))).Returns(projectManager.Object); var solutionManager = new Mock<ISolutionManager>(); solutionManager.Setup(s => s.GetProject(It.IsAny<string>())).Returns(project.Object); var mockWindowServices = new Mock<IUserNotifierServices>(); var provider = CreateUpdatesProvider(packageManager.Object, localRepository, project: project.Object, userNotifierServices: mockWindowServices.Object, solutionManager: solutionManager.Object); provider.IncludePrerelease = includePrerelease; var extensionA = new PackageItem(provider, packageA2); var extensionC = new PackageItem(provider, packageC); provider.SelectedNode = (UpdatesTreeNode)provider.ExtensionsTree.Nodes[0]; var manualEvent = new ManualResetEvent(false); provider.ExecuteCompletedCallback = delegate { // Assert Assert.Equal(RepositoryOperationNames.Update, sourceRepository.LastOperation); mockWindowServices.Verify(p => p.ShowLicenseWindow(It.IsAny<IEnumerable<IPackage>>()), Times.Never()); packageManager.Verify(p => p.UpdatePackages(projectManager.Object, new [] { packageA2 }, It.IsAny<IEnumerable<PackageOperation>>(), true, includePrerelease, provider), Times.Once()); manualEvent.Set(); }; // Act provider.Execute(extensionA); // do not allow the method to return manualEvent.WaitOne(); } */ /* !!! [Theory] [InlineData(true)] [InlineData(false)] public void ExecuteAllMethodCallsUpdatePackagesMethodOnPackageManager(bool includePrerelease) { // Local repository contains Package A 1.0 and Package B // Source repository contains Package A 2.0 and Package C var packageA1 = PackageUtility.CreatePackage("A", "1.0"); var packageA2 = PackageUtility.CreatePackage("A", "2.0"); var packageB = PackageUtility.CreatePackage("B", "2.0"); var packageC = PackageUtility.CreatePackage("C", "3.0"); // Arrange var localRepository = new MockPackageRepository(); localRepository.AddPackage(packageA1); localRepository.AddPackage(packageB); var sourceRepository = new MockPackageRepository(); sourceRepository.AddPackage(packageA2); sourceRepository.AddPackage(packageC); var project = new Mock<Project>(); var projectManager = new Mock<IProjectManager>(); projectManager.Setup(p => p.LocalRepository).Returns(localRepository); var packageManager = new Mock<IVsPackageManager>(); packageManager.Setup(p => p.SourceRepository).Returns(sourceRepository); packageManager.Setup(p => p.GetProjectManager(It.Is<Project>(s => s == project.Object))).Returns(projectManager.Object); var solutionManager = new Mock<ISolutionManager>(); solutionManager.Setup(s => s.GetProject(It.IsAny<string>())).Returns(project.Object); var mockWindowServices = new Mock<IUserNotifierServices>(); var provider = CreateUpdatesProvider(packageManager.Object, localRepository, project: project.Object, userNotifierServices: mockWindowServices.Object, solutionManager: solutionManager.Object); provider.IncludePrerelease = includePrerelease; var extensionA = new PackageItem(provider, packageA2); var extensionC = new PackageItem(provider, packageC); provider.SelectedNode = (UpdatesTreeNode)provider.ExtensionsTree.Nodes[0]; var allExtensions = provider.SelectedNode.Extensions; allExtensions.Add(extensionA); allExtensions.Add(extensionC); var manualEvent = new ManualResetEvent(false); Exception exception = null; provider.ExecuteCompletedCallback = delegate { try { // Assert Assert.Equal(RepositoryOperationNames.Update, sourceRepository.LastOperation); mockWindowServices.Verify(p => p.ShowLicenseWindow(It.IsAny<IEnumerable<IPackage>>()), Times.Never()); packageManager.Verify(p => p.UpdatePackages( projectManager.Object, It.IsAny<IEnumerable<IPackage>>(), It.IsAny<IEnumerable<PackageOperation>>(), true, includePrerelease, provider), Times.Once()); } catch (Exception ex) { exception = ex; } finally { manualEvent.Set(); } }; // Act provider.Execute(item: null); // do not allow the method to return manualEvent.WaitOne(); Assert.Null(exception); } */ /* !!! [Fact] public void ExecuteMethodInvokeInstallScriptAndUninstallScript() { // Local repository contains Package A 1.0 and Package B // Source repository contains Package A 2.0 and Package C var packageA1 = PackageUtility.CreatePackage("A", "1.0", tools: new string[] { "uninstall.ps1" }); var packageA2 = PackageUtility.CreatePackage("A", "2.0", content: new string[] { "hello world" }, tools: new string[] { "install.ps1" }); var packageB = PackageUtility.CreatePackage("B", "2.0"); var packageC = PackageUtility.CreatePackage("C", "3.0"); // Arrange var localRepository = new MockPackageRepository(); localRepository.AddPackage(packageA1); localRepository.AddPackage(packageB); var sourceRepository = new MockPackageRepository(); sourceRepository.AddPackage(packageA2); sourceRepository.AddPackage(packageC); var project = new Mock<Project>(); var projectManager = CreateProjectManager(localRepository, sourceRepository); var packageManager = new Mock<IVsPackageManager>(); packageManager.Setup(p => p.SourceRepository).Returns(sourceRepository); packageManager.Setup(p => p.GetProjectManager(It.Is<Project>(s => s == project.Object))).Returns(projectManager); packageManager.Setup(p => p.UpdatePackages( projectManager, It.IsAny<IEnumerable<IPackage>>(), It.IsAny<IEnumerable<PackageOperation>>(), true, false, It.IsAny<ILogger>())).Callback( () => { projectManager.AddPackageReference("A", new SemanticVersion("2.0"), false, false); }); var scriptExecutor = new Mock<IScriptExecutor>(); var solutionManager = new Mock<ISolutionManager>(); solutionManager.Setup(s => s.GetProject(It.IsAny<string>())).Returns(project.Object); var provider = CreateUpdatesProvider(packageManager.Object, localRepository, null, null, project.Object, scriptExecutor.Object, null, solutionManager.Object); provider.SelectedNode = (UpdatesTreeNode)provider.ExtensionsTree.Nodes[0]; var extensionA = new PackageItem(provider, packageA2); ManualResetEvent manualEvent = new ManualResetEvent(false); provider.ExecuteCompletedCallback = delegate { // Assert try { scriptExecutor.Verify(p => p.Execute(It.IsAny<string>(), "uninstall.ps1", packageA1, project.Object, It.IsAny<FrameworkName>(), It.IsAny<ILogger>()), Times.Once()); scriptExecutor.Verify(p => p.Execute(It.IsAny<string>(), "install.ps1", packageA2, project.Object, It.IsAny<FrameworkName>(), It.IsAny<ILogger>()), Times.Once()); } finally { manualEvent.Set(); } }; // Act provider.Execute(extensionA); // do not allow the method to return manualEvent.WaitOne(); } */ private static UpdatesProvider CreateUpdatesProvider( IVsPackageManager packageManager = null, IPackageRepository localRepository = null, IPackageRepositoryFactory repositoryFactory = null, IPackageSourceProvider packageSourceProvider = null, Project project = null, IScriptExecutor scriptExecutor = null, IUserNotifierServices userNotifierServices = null, ISolutionManager solutionManager = null, IUpdateAllUIService updateAllService = null) { if (packageManager == null) { var packageManagerMock = new Mock<IVsPackageManager>(); var sourceRepository = new MockPackageRepository(); packageManagerMock.Setup(p => p.SourceRepository).Returns(sourceRepository); packageManager = packageManagerMock.Object; } if (localRepository == null) { localRepository = new Mock<IPackageRepository>().Object; } if (repositoryFactory == null) { var repositoryFactoryMock = new Mock<IPackageRepositoryFactory>(); repositoryFactoryMock.Setup(p => p.CreateRepository(It.IsAny<string>())).Returns(new MockPackageRepository()); repositoryFactory = repositoryFactoryMock.Object; } if (packageSourceProvider == null) { var packageSourceProviderMock = new Mock<IPackageSourceProvider>(); packageSourceProviderMock.Setup(p => p.LoadPackageSources()).Returns( new PackageSource[2] { new PackageSource("Test1", "One"), new PackageSource("Test2", "Two") } ); packageSourceProvider = packageSourceProviderMock.Object; } var factory = new Mock<IVsPackageManagerFactory>(); factory.Setup(m => m.CreatePackageManager(It.IsAny<IPackageRepository>(), true)).Returns(packageManager); var mockProgressWindowOpener = new Mock<IProgressWindowOpener>(); if (userNotifierServices == null) { var mockWindowServices = new Mock<IUserNotifierServices>(); userNotifierServices = mockWindowServices.Object; } if (project == null) { project = new Mock<Project>().Object; } if (scriptExecutor == null) { scriptExecutor = new Mock<IScriptExecutor>().Object; } var services = new ProviderServices( userNotifierServices, mockProgressWindowOpener.Object, new Mock<IProviderSettings>().Object, updateAllService ?? new Mock<IUpdateAllUIService>().Object, scriptExecutor, new MockOutputConsoleProvider(), new Mock<IVsCommonOperations>().Object ); if (solutionManager == null) { solutionManager = new Mock<ISolutionManager>().Object; } return new UpdatesProvider( project, localRepository, new System.Windows.ResourceDictionary(), repositoryFactory, packageSourceProvider, factory.Object, services, new Mock<IProgressProvider>().Object, solutionManager); }
private static UpdatesProvider CreateUpdatesProvider( IVsPackageManager packageManager = null, IPackageRepository localRepository = null, IPackageRepositoryFactory repositoryFactory = null, IPackageSourceProvider packageSourceProvider = null, Project project = null, IScriptExecutor scriptExecutor = null, IUserNotifierServices userNotifierServices = null, ISolutionManager solutionManager = null, IUpdateAllUIService updateAllService = null) { if (packageManager == null) { var packageManagerMock = new Mock <IVsPackageManager>(); var sourceRepository = new MockPackageRepository(); packageManagerMock.Setup(p => p.SourceRepository).Returns(sourceRepository); packageManager = packageManagerMock.Object; } if (localRepository == null) { localRepository = new Mock <IPackageRepository>().Object; } if (repositoryFactory == null) { var repositoryFactoryMock = new Mock <IPackageRepositoryFactory>(); repositoryFactoryMock.Setup(p => p.CreateRepository(It.IsAny <string>())).Returns(new MockPackageRepository()); repositoryFactory = repositoryFactoryMock.Object; } if (packageSourceProvider == null) { var packageSourceProviderMock = new Mock <IPackageSourceProvider>(); packageSourceProviderMock.Setup(p => p.LoadPackageSources()).Returns( new PackageSource[2] { new PackageSource("Test1", "One"), new PackageSource("Test2", "Two") } ); packageSourceProvider = packageSourceProviderMock.Object; } var factory = new Mock <IVsPackageManagerFactory>(); factory.Setup(m => m.CreatePackageManager(It.IsAny <IPackageRepository>(), true)).Returns(packageManager); var mockProgressWindowOpener = new Mock <IProgressWindowOpener>(); if (userNotifierServices == null) { var mockWindowServices = new Mock <IUserNotifierServices>(); userNotifierServices = mockWindowServices.Object; } if (project == null) { project = new Mock <Project>().Object; } if (scriptExecutor == null) { scriptExecutor = new Mock <IScriptExecutor>().Object; } var services = new ProviderServices( userNotifierServices, mockProgressWindowOpener.Object, new Mock <IProviderSettings>().Object, updateAllService ?? new Mock <IUpdateAllUIService>().Object, scriptExecutor, new MockOutputConsoleProvider(), new Mock <IVsCommonOperations>().Object ); if (solutionManager == null) { solutionManager = new Mock <ISolutionManager>().Object; } return(new UpdatesProvider( project, localRepository, new System.Windows.ResourceDictionary(), repositoryFactory, packageSourceProvider, factory.Object, services, new Mock <IProgressProvider>().Object, solutionManager)); }