using Xunit;
using OpenHarbor.MCP.Core.Models;
namespace OpenHarbor.MCP.Core.Tests.Models;
///
/// Unit tests for ServerInfo model following TDD approach.
/// Tests server metadata representation.
///
public class ServerInfoTests
{
[Fact]
public void ServerInfo_WithValidData_CreatesSuccessfully()
{
// Arrange & Act
var serverInfo = new ServerInfo
{
Id = "test-server",
Name = "Test Server",
IsHealthy = true,
LastHealthCheck = DateTime.UtcNow,
ResponseTime = TimeSpan.FromMilliseconds(50)
};
// Assert
Assert.Equal("test-server", serverInfo.Id);
Assert.Equal("Test Server", serverInfo.Name);
Assert.True(serverInfo.IsHealthy);
Assert.NotNull(serverInfo.LastHealthCheck);
Assert.Equal(50, serverInfo.ResponseTime?.TotalMilliseconds);
}
[Fact]
public void ServerInfo_DefaultState_IsNotHealthy()
{
// Arrange & Act
var serverInfo = new ServerInfo();
// Assert
Assert.False(serverInfo.IsHealthy);
Assert.Null(serverInfo.LastHealthCheck);
}
[Fact]
public void ServerInfo_WithMetadata_StoresAdditionalData()
{
// Arrange
var metadata = new Dictionary
{
{ "version", "1.0.0" },
{ "region", "us-east" }
};
// Act
var serverInfo = new ServerInfo
{
Id = "server-1",
Metadata = metadata
};
// Assert
Assert.NotNull(serverInfo.Metadata);
Assert.Equal("1.0.0", serverInfo.Metadata["version"]);
Assert.Equal("us-east", serverInfo.Metadata["region"]);
}
}