Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

using OpenChat.PlaygroundApp.Abstractions;
using OpenChat.PlaygroundApp.Connectors;
using OpenChat.PlaygroundApp.Options;

namespace OpenChat.PlaygroundApp.Tests.Options;

Expand All @@ -10,8 +11,8 @@ public class FoundryLocalArgumentOptionsTests
private const string Alias = "test-foundry-local-alias";

private static IConfiguration BuildConfigWithFoundryLocal(
string? configAlias = Alias
)
string? configAlias = Alias,
string? envAlias = null)
{
// Base configuration values (lowest priority)
var configDict = new Dictionary<string, string?>
Expand All @@ -24,11 +25,39 @@ private static IConfiguration BuildConfigWithFoundryLocal(
configDict["FoundryLocal:Alias"] = configAlias;
}

if (string.IsNullOrWhiteSpace(envAlias) == true)
{
return new ConfigurationBuilder()
.AddInMemoryCollection(configDict!)
.Build();
}

// Environment variables (medium priority)
var envDict = new Dictionary<string, string?>();
if (string.IsNullOrWhiteSpace(envAlias) == false)
{
envDict["FoundryLocal:Alias"] = envAlias;
}

return new ConfigurationBuilder()
.AddInMemoryCollection(configDict!)
.AddInMemoryCollection(configDict!) // Base configuration (lowest priority)
.AddInMemoryCollection(envDict!) // Environment variables (medium priority)
.Build();
}

[Trait("Category", "UnitTest")]
[Theory]
[InlineData(typeof(ArgumentOptions), typeof(FoundryLocalArgumentOptions), true)]
[InlineData(typeof(FoundryLocalArgumentOptions), typeof(ArgumentOptions), false)]
public void Given_BaseType_Then_It_Should_Be_AssignableFrom_DerivedType(Type baseType, Type derivedType, bool expected)
{
// Act
var result = baseType.IsAssignableFrom(derivedType);

// Assert
result.ShouldBe(expected);
}

[Trait("Category", "UnitTest")]
[Fact]
public void Given_Nothing_When_Parse_Invoked_Then_It_Should_Set_Config()
Expand Down Expand Up @@ -147,6 +176,62 @@ public void Given_ConfigValues_And_CLI_When_Parse_Invoked_Then_It_Should_Use_CLI
settings.FoundryLocal.Alias.ShouldBe(cliAlias);
}

[Trait("Category", "UnitTest")]
[Theory]
[InlineData("env-foundry-local-alias")]
public void Given_EnvironmentVariables_And_No_Config_When_Parse_Invoked_Then_It_Should_Use_EnvironmentVariables(
string envAlias)
{
// Arrange
var config = BuildConfigWithFoundryLocal(
configAlias: null,
envAlias: envAlias);
var args = Array.Empty<string>();

// Act
var settings = ArgumentOptions.Parse(config, args);

// Assert
settings.FoundryLocal.ShouldNotBeNull();
settings.FoundryLocal.Alias.ShouldBe(envAlias);
}

[Trait("Category", "UnitTest")]
[Theory]
[InlineData("config-foundry-local-alias", "env-foundry-local-alias")]
public void Given_ConfigValues_And_EnvironmentVariables_When_Parse_Invoked_Then_It_Should_Use_EnvironmentVariables(
string configAlias, string envAlias)
{
// Arrange
var config = BuildConfigWithFoundryLocal(configAlias, envAlias);
var args = Array.Empty<string>();

// Act
var settings = ArgumentOptions.Parse(config, args);

// Assert
settings.FoundryLocal.ShouldNotBeNull();
settings.FoundryLocal.Alias.ShouldBe(envAlias);
}

[Trait("Category", "UnitTest")]
[Theory]
[InlineData("config-foundry-local-alias", "env-foundry-local-alias", "cli-foundry-local-alias")]
public void Given_ConfigValues_And_EnvironmentVariables_And_CLI_When_Parse_Invoked_Then_It_Should_Use_CLI(
string configAlias, string envAlias, string cliAlias)
{
// Arrange
var config = BuildConfigWithFoundryLocal(configAlias, envAlias);
var args = new[] { "--alias", cliAlias };

// Act
var settings = ArgumentOptions.Parse(config, args);

// Assert
settings.FoundryLocal.ShouldNotBeNull();
settings.FoundryLocal.Alias.ShouldBe(cliAlias);
}


[Trait("Category", "UnitTest")]
[Theory]
Expand Down Expand Up @@ -197,6 +282,25 @@ public void Given_FoundryLocal_With_Known_And_Unknown_Argument_When_Parse_Invoke
}


[Trait("Category", "UnitTest")]
[Theory]
[InlineData("env-foundry-local-alias")]
public void Given_EnvironmentVariables_Only_When_Parse_Invoked_Then_Help_Should_Be_False(
string envAlias)
{
// Arrange
var config = BuildConfigWithFoundryLocal(
configAlias: null,
envAlias: envAlias);
var args = Array.Empty<string>();

// Act
var settings = ArgumentOptions.Parse(config, args);

// Assert
settings.Help.ShouldBeFalse();
}

[Trait("Category", "UnitTest")]
[Theory]
[InlineData("cli-foundry-local-alias")]
Expand Down