public void InstallPackageCmdletCreatesFallbackRepository()
        {
            // Arrange
            IPackageRepository repoA = new MockPackageRepository("A");
            IPackageRepository repoB = new MockPackageRepository("B");

            var repositoryFactory = new Mock <IPackageRepositoryFactory>();

            repositoryFactory.Setup(c => c.CreateRepository("A")).Returns(repoA);
            repositoryFactory.Setup(c => c.CreateRepository("B")).Returns(repoB);
            var sourceProvider     = GetPackageSourceProvider(new PackageSource("A"), new PackageSource("B"));
            var fileSystemProvider = new Mock <IFileSystemProvider>();

            fileSystemProvider.Setup(c => c.GetFileSystem(It.IsAny <string>())).Returns(new MockFileSystem());
            var repositorySettings = new Mock <IRepositorySettings>();

            repositorySettings.Setup(c => c.RepositoryPath).Returns(@"c:\repositoryPath");
            repositorySettings.Setup(c => c.ConfigFolderPath).Returns(@"c:\configFolder");

            var solutionManager         = new Mock <ISolutionManager>();
            var vsPackageManagerFactory = new TestVsPackageManagerFactory(
                solutionManager.Object,
                repositoryFactory.Object,
                sourceProvider,
                fileSystemProvider.Object,
                repositorySettings.Object,
                new Mock <VsPackageInstallerEvents>().Object,
                repoA, // repoA is the active repository
                /* multiFrameworkTargeting */ null,
                /* machineWideSettings */ null);

            // Act
            var packageManager = vsPackageManagerFactory.CreatePackageManager();

            // Assert: the source repo is a FallbackRepository, with source A as
            // primary and aggregate of sources A, B as dependency resolver repository.
            var sourceRepo = packageManager.SourceRepository as FallbackRepository;

            Assert.NotNull(sourceRepo);
            Assert.Equal("A", sourceRepo.SourceRepository.Source);

            var dependencyResolverRepo = sourceRepo.DependencyResolver as AggregateRepository;

            Assert.NotNull(dependencyResolverRepo);
            Assert.True(dependencyResolverRepo.ResolveDependenciesVertically);

            var repos = dependencyResolverRepo.Repositories.ToList();

            Assert.Equal(2, repos.Count);
            Assert.Equal("A", repos[0].Source);
            Assert.Equal("B", repos[1].Source);
        }
예제 #2
0
        public void InstallPackageCmdletCreatesFallbackRepository()
        {
            // Arrange
            IPackageRepository repoA = new MockPackageRepository("A");
            IPackageRepository repoB = new MockPackageRepository("B");
            
            var repositoryFactory = new Mock<IPackageRepositoryFactory>();
            repositoryFactory.Setup(c => c.CreateRepository("A")).Returns(repoA);
            repositoryFactory.Setup(c => c.CreateRepository("B")).Returns(repoB);
            var sourceProvider = GetPackageSourceProvider(new PackageSource("A"), new PackageSource("B"));
            var fileSystemProvider = new Mock<IFileSystemProvider>();
            fileSystemProvider.Setup(c => c.GetFileSystem(It.IsAny<string>())).Returns(new MockFileSystem());
            var repositorySettings = new Mock<IRepositorySettings>();
            repositorySettings.Setup(c => c.RepositoryPath).Returns(@"c:\repositoryPath");
            repositorySettings.Setup(c => c.ConfigFolderPath).Returns(@"c:\configFolder");

            var solutionManager = new Mock<ISolutionManager>();
            var vsPackageManagerFactory = new TestVsPackageManagerFactory(
                solutionManager.Object, 
                repositoryFactory.Object, 
                sourceProvider, 
                fileSystemProvider.Object, 
                repositorySettings.Object, 
                new Mock<VsPackageInstallerEvents>().Object,
                repoA, // repoA is the active repository
                /* multiFrameworkTargeting */ null,
                /* machineWideSettings */ null);

            // Act
            var packageManager = vsPackageManagerFactory.CreatePackageManager();

            // Assert: the source repo is a FallbackRepository, with source A as
            // primary and aggregate of sources A, B as dependency resolver repository.
            var sourceRepo = packageManager.SourceRepository as FallbackRepository;
            Assert.NotNull(sourceRepo);
            Assert.Equal("A", sourceRepo.SourceRepository.Source);

            var dependencyResolverRepo = sourceRepo.DependencyResolver as AggregateRepository;
            Assert.NotNull(dependencyResolverRepo);
            Assert.True(dependencyResolverRepo.ResolveDependenciesVertically);

            var repos = dependencyResolverRepo.Repositories.ToList();
            Assert.Equal(2, repos.Count);
            Assert.Equal("A", repos[0].Source);
            Assert.Equal("B", repos[1].Source);
        }