Files
Entkube/tests/EntKube.Clusters.Tests/Features/GetClusterByIdHandlerTests.cs
2026-05-13 14:01:32 +02:00

62 lines
1.7 KiB
C#

using EntKube.Clusters.Domain;
using EntKube.Clusters.Features.GetClusterById;
using EntKube.Clusters.Infrastructure;
using EntKube.SharedKernel.Domain;
using FluentAssertions;
namespace EntKube.Clusters.Tests.Features;
public class GetClusterByIdHandlerTests
{
private readonly GetClusterByIdHandler handler;
private readonly InMemoryClusterRepository repository;
public GetClusterByIdHandlerTests()
{
repository = new InMemoryClusterRepository();
handler = new GetClusterByIdHandler(repository);
}
[Fact]
public async Task HandleAsync_WithExistingCluster_ReturnsSuccess()
{
// Arrange — Register a cluster so the repository has something to find.
KubernetesCluster cluster = KubernetesCluster.Register(
"production-eu",
"https://k8s.example.com:6443",
"kubeconfig-data",
Guid.NewGuid(),
"prod-ctx", Guid.NewGuid());
await repository.AddAsync(cluster);
// Act — Look it up by its ID.
Result<KubernetesCluster> result = await handler.HandleAsync(cluster.Id);
// Assert — The handler should return the full cluster aggregate.
result.IsSuccess.Should().BeTrue();
result.Value.Should().NotBeNull();
result.Value!.Name.Should().Be("production-eu");
}
[Fact]
public async Task HandleAsync_WithNonExistentId_ReturnsFailure()
{
// Arrange — An ID that doesn't exist in the repository.
Guid unknownId = Guid.NewGuid();
// Act
Result<KubernetesCluster> result = await handler.HandleAsync(unknownId);
// Assert
result.IsFailure.Should().BeTrue();
result.Error.Should().Contain("not found");
}
}