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 { public FakeConfigurationCheck(SampleOptions options, string name) : base(options, name) { } } private sealed class SampleOptions { [Required] public string? Code { get; set; } } }