public async Task ResolveAsync_WithExistingPackage_CanDownloadPackage()
    {
        // Arrange
        var config = new GitHubReleasesUpdateResolverFactory.GitHubConfig()
        {
            RepositoryName = "reloaded.universal.redirector",
            UserName       = "******",
            AssetFileName  = "reloaded.universal.monitor.zip",
            UseReleaseTag  = false
        };

        var clonedDependency = _testEnvironmoent.TestModConfigBTuple.DeepClone();

        clonedDependency.Config.ReleaseMetadataFileName = "Reloaded.Universal.Redirector.ReleaseMetadata.json";
        Singleton <GitHubReleasesUpdateResolverFactory> .Instance.SetConfiguration(clonedDependency, config);

        var clonedOriginal = _testEnvironmoent.TestModConfigATuple.DeepClone();

        var gameBanana = new GitHubReleasesDependencyMetadataWriter();

        gameBanana.Update(clonedOriginal.Config, new[] { clonedDependency.Config });

        // Act
        using var outputDirectory = new TemporaryFolderAllocation();
        var resolver = new GitHubDependencyResolver();
        var result   = await resolver.ResolveAsync(clonedDependency.Config.ModId, clonedOriginal.Config.PluginData);

        var downloadedPackagePath = await result.FoundDependencies[0].DownloadAsync(outputDirectory.FolderPath, null);

        // Assert
        Assert.True(Directory.Exists(downloadedPackagePath));
        Assert.True(File.Exists(Path.Combine(downloadedPackagePath, ModConfig.ConfigFileName)));
    }
    public async Task ResolveAsync_WithExistingPackage_ReturnsPackages()
    {
        // Arrange
        var config = new GitHubReleasesUpdateResolverFactory.GitHubConfig()
        {
            RepositoryName = "Update.Test.Repo",
            UserName       = "******"
        };
        var clonedDependency = _testEnvironmoent.TestModConfigBTuple.DeepClone();

        Singleton <GitHubReleasesUpdateResolverFactory> .Instance.SetConfiguration(clonedDependency, config);

        var clonedOriginal = _testEnvironmoent.TestModConfigATuple.DeepClone();

        var gitHub = new GitHubReleasesDependencyMetadataWriter();

        gitHub.Update(clonedOriginal.Config, new[] { clonedDependency.Config });

        // Act
        var resolver = new GitHubDependencyResolver();
        var result   = await resolver.ResolveAsync(clonedDependency.Config.ModId, clonedOriginal.Config.PluginData);

        // Assert
        Assert.NotEmpty(result.FoundDependencies);
        Assert.Empty(result.NotFoundDependencies);
    }
Пример #3
0
    public void WithNoDependencies_RemovesPluginData_UsingGitHub()
    {
        // Arrange
        var config = new GitHubReleasesUpdateResolverFactory.GitHubConfig()
        {
            AssetFileName = "Deeznutz"
        };
        var gitHub = new GitHubReleasesDependencyMetadataWriter();

        WithNoDependencies_RemovesPluginData_Base <GitHubReleasesUpdateResolverFactory.GitHubConfig, GitHubReleasesUpdateResolverFactory>(gitHub, config, GameBananaDependencyMetadataWriter.PluginId);
    }
Пример #4
0
    public void WithChangedDependency_ReturnsTrue_UsingGitHub()
    {
        // Arrange
        var configOld = new GitHubReleasesUpdateResolverFactory.GitHubConfig()
        {
            RepositoryName = "OldRepoName"
        };
        var configNew = new GitHubReleasesUpdateResolverFactory.GitHubConfig()
        {
            RepositoryName = "NewRepoName"
        };

        WithChangedDependency_ReturnsTrue_Base <GitHubReleasesUpdateResolverFactory.GitHubConfig, GitHubReleasesUpdateResolverFactory>(new GitHubReleasesDependencyMetadataWriter(), configOld, configNew);
    }
Пример #5
0
    public void WithValidDependency_ImportsDependencyFromAnotherMod_UsingGitHub()
    {
        // Arrange
        var config = new GitHubReleasesUpdateResolverFactory.GitHubConfig()
        {
            RepositoryName = "Sewer56", UserName = "******"
        };
        var clonedDependency = _testEnvironmoent.TestModConfigBTuple.DeepClone();

        Singleton <GitHubReleasesUpdateResolverFactory> .Instance.SetConfiguration(clonedDependency, config);

        var clonedOriginal = _testEnvironmoent.TestModConfigATuple.DeepClone();

        // Act
        var gitHub = new GitHubReleasesDependencyMetadataWriter();

        gitHub.Update(clonedOriginal.Config, new[] { clonedDependency.Config });

        // Assert
        Assert.True(clonedOriginal.Config.PluginData.ContainsKey(GitHubReleasesDependencyMetadataWriter.PluginId));
    }
Пример #6
0
    public void Migrate_MigratesConfigIntoMainConfig()
    {
        // Arrange
        var mod          = _testEnvironmoent.TestModConfigATuple;
        var modDirectory = Path.GetDirectoryName(mod.Path);
        var configPath   = Path.Combine(modDirectory !, GitHubReleasesUpdateResolverFactory.GitHubConfig.ConfigFileName);
        var config       = new GitHubReleasesUpdateResolverFactory.GitHubConfig()
        {
        };

        IConfig <GitHubReleasesUpdateResolverFactory.GitHubConfig> .ToPath(config, configPath);

        // Act
        var factory = new GitHubReleasesUpdateResolverFactory();

        factory.Migrate(mod, null);
        using var disposalHelper = new RemoveConfiguration <GitHubReleasesUpdateResolverFactory.GitHubConfig>(mod, factory);

        // Assert
        Assert.False(File.Exists(configPath));
        Assert.True(factory.TryGetConfigurationOrDefault(mod, out _));
    }