示例#1
0
    public void WithRemovedDependency_RemovesDependency_UsingGameBanana()
    {
        // Arrange
        var config = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 6969
        };
        var clonedDependency = _testEnvironmoent.TestModConfigBTuple.DeepClone();

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

        var clonedDependency2 = _testEnvironmoent.TestModConfigCTuple.DeepClone();

        Singleton <GameBananaUpdateResolverFactory> .Instance.SetConfiguration(clonedDependency2, config);

        var clonedOriginal = _testEnvironmoent.TestModConfigATuple.DeepClone();

        // Act & Assert: 2 Insertions
        var gameBanana = new GameBananaDependencyMetadataWriter();

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

        Assert.True(clonedOriginal.Config.PluginData.TryGetValue(GameBananaDependencyMetadataWriter.PluginId, out DependencyResolverMetadata <GameBananaUpdateResolverFactory.GameBananaConfig> metadata));
        Assert.Equal(2, metadata.IdToConfigMap.Count);

        // Act & Assert: Item Removal
        Singleton <GameBananaUpdateResolverFactory> .Instance.RemoveConfiguration(clonedDependency2);

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

        Assert.True(clonedOriginal.Config.PluginData.TryGetValue(GameBananaDependencyMetadataWriter.PluginId, out metadata));
        Assert.Single(metadata.IdToConfigMap);
    }
    public async Task ResolveAsync_WithExistingPackage_CanDownloadPackage()
    {
        // Arrange
        var config = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 333681
        };
        var clonedDependency = _testEnvironmoent.TestModConfigBTuple.DeepClone();

        clonedDependency.Config.ReleaseMetadataFileName = "IntegrationTest.ReleaseMetadata.json";
        Singleton <GameBananaUpdateResolverFactory> .Instance.SetConfiguration(clonedDependency, config);

        var clonedOriginal = _testEnvironmoent.TestModConfigATuple.DeepClone();

        var gameBanana = new GameBananaDependencyMetadataWriter();

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

        // Act
        using var outputDirectory = new TemporaryFolderAllocation();
        var resolver = new GameBananaDependencyResolver();
        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 GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 6969
        };
        var clonedDependency = _testEnvironmoent.TestModConfigBTuple.DeepClone();

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

        var clonedOriginal = _testEnvironmoent.TestModConfigATuple.DeepClone();

        var gameBanana = new GameBananaDependencyMetadataWriter();

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

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

        // Assert
        Assert.NotEmpty(result.FoundDependencies);
        Assert.Empty(result.NotFoundDependencies);
    }
示例#4
0
    public void WithNoDependencies_RemovesPluginData_UsingGameBanana()
    {
        // Arrange
        var config = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 6969
        };
        var gameBanana = new GameBananaDependencyMetadataWriter();

        WithNoDependencies_RemovesPluginData_Base <GameBananaUpdateResolverFactory.GameBananaConfig, GameBananaUpdateResolverFactory>(gameBanana, config, GameBananaDependencyMetadataWriter.PluginId);
    }
示例#5
0
    public void WithValidDependency_ImportsDependencyFromAnotherMod_UsingGameBanana()
    {
        // Arrange
        var config = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 6969
        };
        var clonedDependency = _testEnvironmoent.TestModConfigBTuple.DeepClone();

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

        var clonedOriginal = _testEnvironmoent.TestModConfigATuple.DeepClone();

        // Act
        var gameBanana = new GameBananaDependencyMetadataWriter();

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

        // Assert
        Assert.True(clonedOriginal.Config.PluginData.ContainsKey(GameBananaDependencyMetadataWriter.PluginId));
    }