Files
hrynco-common/HrynCo.Common.Tests/ConfigurationFactoryTests.cs
T
Anatolii Grynchuk 85b362e8cd chore: add hrynco common library solution
- add the standalone HrynCo.Common solution and projects
- include the shared common library source and tests
- add package metadata and a repo gitignore
2026-05-01 00:17:34 +03:00

76 lines
2.4 KiB
C#

namespace HrynCo.Common.Tests;
using HrynCo.Common;
using FluentAssertions;
using Microsoft.Extensions.Configuration;
using Xunit;
public sealed class ConfigurationFactoryTests
{
[Fact]
public void CreateConfiguration_ShouldLoadJsonAndEnvironmentValues()
{
string basePath = CreateTempDirectory();
string originalEnvironment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? string.Empty;
try
{
File.WriteAllText(Path.Combine(basePath, "appsettings.json"), """
{
"Title": "base",
"Nested": {
"Value": "base"
}
}
""");
File.WriteAllText(Path.Combine(basePath, "appsettings.Test.json"), """
{
"Nested": {
"Value": "override"
}
}
""");
File.WriteAllText(Path.Combine(basePath, "local.settings.json"), """
{
"Local": "enabled"
}
""");
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Test");
Environment.SetEnvironmentVariable("TITLE", "from-env");
IConfigurationRoot configuration = ConfigurationFactory.CreateConfiguration(basePath);
configuration["Title"].Should().Be("from-env");
configuration["Nested:Value"].Should().Be("override");
configuration["Local"].Should().Be("enabled");
}
finally
{
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", originalEnvironment);
Environment.SetEnvironmentVariable("TITLE", null);
Directory.Delete(basePath, true);
}
}
[Fact]
public void CreateConfiguration_ShouldThrowWhenBasePathIsMissing()
{
string missingPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N"));
Action act = () => ConfigurationFactory.CreateConfiguration(missingPath, "Production");
act.Should().Throw<DirectoryNotFoundException>()
.WithMessage($"Directory {missingPath} does not exist. Wrong value of the basePath parameter.");
}
private static string CreateTempDirectory()
{
string path = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N"));
Directory.CreateDirectory(path);
return path;
}
}