Files
hrynco-common/HrynCo.Common.Tests/BaseConfigurationCheckTests.cs
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

51 lines
1.5 KiB
C#

namespace HrynCo.Common.Tests;
using System.ComponentModel.DataAnnotations;
using HrynCo.Common.HealthChecks;
using FluentAssertions;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Xunit;
public sealed class BaseConfigurationCheckTests
{
[Fact]
public async Task CheckConfigurationAsync_ShouldReturnHealthyWhenOptionsAreValid()
{
var check = new FakeConfigurationCheck(new SampleOptions
{
Code = "ok"
}, "Sample");
HealthCheckResult result = await check.CheckConfigurationAsync(default);
result.Status.Should().Be(HealthStatus.Healthy);
result.Description.Should().Be("Sample configuration is valid.");
}
[Fact]
public async Task CheckConfigurationAsync_ShouldReturnUnhealthyWhenOptionsAreInvalid()
{
var check = new FakeConfigurationCheck(new SampleOptions(), "Sample");
HealthCheckResult result = await check.CheckConfigurationAsync(default);
result.Status.Should().Be(HealthStatus.Unhealthy);
result.Description.Should().Contain("Sample configuration invalid:");
result.Description.Should().Contain("The Code field is required.");
}
private sealed class FakeConfigurationCheck : BaseConfigurationCheck<SampleOptions>
{
public FakeConfigurationCheck(SampleOptions options, string name)
: base(options, name)
{
}
}
private sealed class SampleOptions
{
[Required]
public string? Code { get; set; }
}
}