Exemplo n.º 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);
    }
Exemplo n.º 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);
    }
Exemplo n.º 5
0
    public void WithChangedDependency_ReturnsTrue_UsingGameBanana()
    {
        // Arrange
        var configOld = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 6969
        };
        var configNew = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 1337
        };

        WithChangedDependency_ReturnsTrue_Base <GameBananaUpdateResolverFactory.GameBananaConfig, GameBananaUpdateResolverFactory>(new GameBananaDependencyMetadataWriter(), configOld, configNew);
    }
Exemplo n.º 6
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));
    }
Exemplo n.º 7
0
    public async Task DependencyMetadataWriterFactory_BasicTest()
    {
        // Arrange
        var config = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
            ItemId = 6969
        };
        var tuple = _testEnvironmoent.ModConfigService.ItemsById[_testEnvironmoent.TestModConfigA.ModId];

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

        // Act
        bool modified = await DependencyMetadataWriterFactory.ExecuteAllAsync(_testEnvironmoent.ModConfigService, false);

        // Assert
        Assert.True(modified);

        var modifiedItem = _testEnvironmoent.ModConfigService.ItemsById[_testEnvironmoent.TestModConfigB.ModId];

        Assert.True(modifiedItem.Config.PluginData.ContainsKey(GameBananaDependencyMetadataWriter.PluginId));
    }
Exemplo n.º 8
0
    public void Migrate_MigratesConfigIntoMainConfig()
    {
        // Arrange
        var mod          = _testEnvironmoent.TestModConfigATuple;
        var modDirectory = Path.GetDirectoryName(mod.Path);
        var configPath   = Path.Combine(modDirectory !, GameBananaUpdateResolverFactory.GameBananaConfig.ConfigFileName);
        var config       = new GameBananaUpdateResolverFactory.GameBananaConfig()
        {
        };

        IConfig <GameBananaUpdateResolverFactory.GameBananaConfig> .ToPath(config, configPath);

        // Act
        var factory = new GameBananaUpdateResolverFactory();

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

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