public void GetConfigurationFromXmlDocument_IsPreunzippedCanBeSetOnMultipleRepositories() { // Arrange var firstRepository = new VsTemplatePackagesNode("", new XObject[] { new XAttribute("isPreunzipped", "true") }); var secondRepository = new VsTemplatePackagesNode("", new XObject[] { new XAttribute("isPreunzipped", "false") }); var thirdRepository = new VsTemplatePackagesNode("", new XObject[] { new XAttribute("isPreunzipped", "true") }); var document = BuildDocument(new[] { firstRepository, secondRepository, thirdRepository }); var wizard = new VsTemplateWizard(null, null, null, null, null, null); var extensionManagerMock = new Mock<IVsExtensionManager>(); var extensionMock = new Mock<IInstalledExtension>(); var extension = extensionMock.Object; extensionManagerMock.Setup(em => em.TryGetInstalledExtension("myExtensionId", out extension)).Returns(true); var hkcu = new Mock<IRegistryKey>(); // Act var results = wizard.GetConfigurationsFromXmlDocument(document, @"C:\Some\file.vstemplate", vsExtensionManager: extensionManagerMock.Object, registryKeys: new[] { hkcu.Object }); // Assert Assert.Equal(3, results.Count()); Assert.True(results.First().IsPreunzipped); Assert.False(results.Skip(1).First().IsPreunzipped); Assert.True(results.Last().IsPreunzipped); }
public void GetConfigurationFromXmlDocument_WorksWithMultipleRepositories() { // Arrange var registryPath = @"SOFTWARE\NuGet\Repository"; var registryKey = "AspNetMvc4"; var registryValue = @"C:\AspNetMvc4\Packages"; var extensionRepository = new VsTemplatePackagesNode("extension", new XObject[] { new XAttribute("repositoryId", "myExtensionId"), BuildPackageElement("packageFromExtension", "1.0") }); var registryRepository = new VsTemplatePackagesNode("registry", new XObject[] { new XAttribute("keyName", registryKey), BuildPackageElement("packageFromRegistry", "2.0") }); var document = BuildDocument(new[] { extensionRepository, registryRepository }); var wizard = new VsTemplateWizard(null, null, null, null, null, null); var extensionManagerMock = new Mock<IVsExtensionManager>(); var extensionMock = new Mock<IInstalledExtension>(); extensionMock.Setup(e => e.InstallPath).Returns(@"C:\Extension\Dir"); var extension = extensionMock.Object; extensionManagerMock.Setup(em => em.TryGetInstalledExtension("myExtensionId", out extension)).Returns(true); var hkcu_repository = new Mock<IRegistryKey>(); var hkcu = new Mock<IRegistryKey>(); hkcu_repository.Setup(k => k.GetValue(registryKey)).Returns(registryValue); hkcu.Setup(r => r.OpenSubKey(registryPath)).Returns(hkcu_repository.Object); // Act var results = wizard.GetConfigurationsFromXmlDocument(document, @"C:\Some\file.vstemplate", vsExtensionManager: extensionManagerMock.Object, registryKeys: new[] { hkcu.Object }); // Assert Assert.Equal(2, results.Count()); var extensionResult = results.First(); var registryResult = results.Last(); Assert.Equal(1, extensionResult.Packages.Count); Assert.Equal(@"C:\Extension\Dir\Packages", extensionResult.RepositoryPath); Assert.Equal("packageFromExtension", extensionResult.Packages.Single().Id); Assert.Equal(new SemanticVersion("1.0"), extensionResult.Packages.Single().Version); Assert.Equal(1, registryResult.Packages.Count); Assert.Equal(registryValue, registryResult.RepositoryPath); Assert.Equal("packageFromRegistry", registryResult.Packages.Single().Id); Assert.Equal(new SemanticVersion("2.0"), registryResult.Packages.Single().Version); }