using NewLife.Studio.Core.DTOs;
using NewLife.Studio.Store.Models;
using Xunit;
namespace NewLife.Studio.Store.Tests;
public class StoredConnectionTests
{
[Fact]
public void ToDto_ReturnsConnectionInfoWithSameValues()
{
var stored = new StoredConnection
{
Id = "test-id",
Name = "Production MySQL",
ConnectionString = "Server=db.example.com;Database=app;",
ProviderType = "mysql",
LastUsedAt = new DateTime(2025, 1, 15, 14, 30, 0),
Group = "Production"
};
var dto = stored.ToDto();
Assert.Equal(stored.Id, dto.Id);
Assert.Equal(stored.Name, dto.Name);
Assert.Equal(stored.ConnectionString, dto.ConnectionString);
Assert.Equal(stored.ProviderType, dto.ProviderType);
Assert.Equal(stored.LastUsedAt, dto.LastUsedAt);
Assert.Equal(stored.Group, dto.Group);
}
[Fact]
public void FromDto_ReturnsStoredConnectionWithSameValues()
{
var dto = new ConnectionInfo
{
Id = Guid.NewGuid().ToString("N"),
Name = "Dev SQLite",
ConnectionString = "Data Source=dev.db",
ProviderType = "sqlite",
LastUsedAt = DateTime.UtcNow,
Group = "Development"
};
var stored = StoredConnection.FromDto(dto);
Assert.Equal(dto.Id, stored.Id);
Assert.Equal(dto.Name, stored.Name);
Assert.Equal(dto.ConnectionString, stored.ConnectionString);
Assert.Equal(dto.ProviderType, stored.ProviderType);
Assert.Equal(dto.LastUsedAt, stored.LastUsedAt);
Assert.Equal(dto.Group, stored.Group);
}
[Fact]
public void FromDto_Then_ToDto_RoundTrip()
{
var original = new ConnectionInfo
{
Id = Guid.NewGuid().ToString("N"),
Name = "RoundTrip Test",
ConnectionString = "Host=roundtrip;Port=5432;",
ProviderType = "postgres",
LastUsedAt = new DateTime(2025, 6, 1, 9, 0, 0),
Group = "Staging"
};
var stored = StoredConnection.FromDto(original);
var roundTripped = stored.ToDto();
Assert.Equal(original.Id, roundTripped.Id);
Assert.Equal(original.Name, roundTripped.Name);
Assert.Equal(original.ConnectionString, roundTripped.ConnectionString);
Assert.Equal(original.ProviderType, roundTripped.ProviderType);
Assert.Equal(original.LastUsedAt, roundTripped.LastUsedAt);
Assert.Equal(original.Group, roundTripped.Group);
}
[Fact]
public void FromDto_Then_ToDto_PreservesDefaultValues()
{
var dto = new ConnectionInfo
{
Name = "Defaults Test"
};
var stored = StoredConnection.FromDto(dto);
var result = stored.ToDto();
Assert.Equal(dto.Id, result.Id);
Assert.Equal("Defaults Test", result.Name);
Assert.Equal("", result.ConnectionString);
Assert.Equal("sqlite", result.ProviderType);
Assert.Equal("", result.Group);
Assert.Equal(default, result.LastUsedAt);
}
}
|