Files
Cleanuparr/code/backend/Cleanuparr.Infrastructure.Tests/Health/ApplicationHealthCheckTests.cs

99 lines
2.6 KiB
C#

using Cleanuparr.Infrastructure.Health;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Xunit;
using HealthCheckStatus = Microsoft.Extensions.Diagnostics.HealthChecks.HealthStatus;
namespace Cleanuparr.Infrastructure.Tests.Health;
public class ApplicationHealthCheckTests
{
#region Constructor Tests
[Fact]
public void Constructor_CreatesInstance()
{
// Act
var healthCheck = new ApplicationHealthCheck();
// Assert
Assert.NotNull(healthCheck);
}
#endregion
#region CheckHealthAsync Tests
[Fact]
public async Task CheckHealthAsync_ReturnsHealthy()
{
// Arrange
var healthCheck = new ApplicationHealthCheck();
// Act
var result = await healthCheck.CheckHealthAsync(null!);
// Assert
Assert.Equal(HealthCheckStatus.Healthy, result.Status);
}
[Fact]
public async Task CheckHealthAsync_DescriptionIndicatesRunning()
{
// Arrange
var healthCheck = new ApplicationHealthCheck();
// Act
var result = await healthCheck.CheckHealthAsync(null!);
// Assert
Assert.Contains("running", result.Description, StringComparison.OrdinalIgnoreCase);
}
[Fact]
public async Task CheckHealthAsync_WithCancellationToken_CompletesSuccessfully()
{
// Arrange
var healthCheck = new ApplicationHealthCheck();
using var cts = new CancellationTokenSource();
// Act
var result = await healthCheck.CheckHealthAsync(null!, cts.Token);
// Assert
Assert.Equal(HealthCheckStatus.Healthy, result.Status);
}
[Fact]
public async Task CheckHealthAsync_WithContext_CompletesSuccessfully()
{
// Arrange
var healthCheck = new ApplicationHealthCheck();
var context = new HealthCheckContext();
// Act
var result = await healthCheck.CheckHealthAsync(context);
// Assert
Assert.Equal(HealthCheckStatus.Healthy, result.Status);
}
[Fact]
public async Task CheckHealthAsync_MultipleCalls_AllReturnHealthy()
{
// Arrange
var healthCheck = new ApplicationHealthCheck();
// Act
var result1 = await healthCheck.CheckHealthAsync(null!);
var result2 = await healthCheck.CheckHealthAsync(null!);
var result3 = await healthCheck.CheckHealthAsync(null!);
// Assert
Assert.Equal(HealthCheckStatus.Healthy, result1.Status);
Assert.Equal(HealthCheckStatus.Healthy, result2.Status);
Assert.Equal(HealthCheckStatus.Healthy, result3.Status);
}
#endregion
}