feat: 初始化NewLife Studio项目,完成基础框架与数据管理模块
何炳宏 authored at 2026-05-26 12:09:09
3.07 KiB
NewLife.Studio
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);
    }
}