using NewLife.Studio.Core.DTOs;
using Xunit;
namespace NewLife.Studio.Core.Tests.DTOs;
public class QueryHistoryEntryTests
{
[Fact]
public void Default_Values_Are_Set_Correctly()
{
var entry = new QueryHistoryEntry();
Assert.NotEmpty(entry.Id);
Assert.True(Guid.TryParse(entry.Id, out _));
Assert.Equal("", entry.Sql);
Assert.Equal("", entry.ConnectionName);
Assert.True(entry.ExecutedAt <= DateTime.Now);
Assert.True(entry.ExecutedAt > DateTime.Now.AddSeconds(-5));
Assert.Equal(0L, entry.ElapsedMs);
Assert.Equal(0, entry.RowCount);
}
[Fact]
public void Id_Default_Generates_Unique_Guid_Each_Time()
{
var entry1 = new QueryHistoryEntry();
var entry2 = new QueryHistoryEntry();
Assert.NotEqual(entry1.Id, entry2.Id);
Assert.True(Guid.TryParse(entry1.Id, out _));
Assert.True(Guid.TryParse(entry2.Id, out _));
}
[Fact]
public void Properties_Set_And_Get_Correctly()
{
var executedAt = new DateTime(2025, 5, 25, 10, 30, 0, DateTimeKind.Utc);
var entry = new QueryHistoryEntry
{
Id = "hist-001",
Sql = "SELECT * FROM Users",
ConnectionName = "Production DB",
ExecutedAt = executedAt,
ElapsedMs = 250,
RowCount = 1500
};
Assert.Equal("hist-001", entry.Id);
Assert.Equal("SELECT * FROM Users", entry.Sql);
Assert.Equal("Production DB", entry.ConnectionName);
Assert.Equal(executedAt, entry.ExecutedAt);
Assert.Equal(250L, entry.ElapsedMs);
Assert.Equal(1500, entry.RowCount);
}
[Fact]
public void Null_Values_Can_Be_Assigned()
{
var entry = new QueryHistoryEntry
{
Sql = null!,
ConnectionName = null!
};
Assert.Null(entry.Sql);
Assert.Null(entry.ConnectionName);
}
[Fact]
public void Empty_String_Values_Are_Allowed()
{
var entry = new QueryHistoryEntry
{
Sql = "",
ConnectionName = ""
};
Assert.Equal("", entry.Sql);
Assert.Equal("", entry.ConnectionName);
}
[Fact]
public void ElapsedMs_Boundary_Values()
{
var entry = new QueryHistoryEntry();
entry.ElapsedMs = 0;
Assert.Equal(0L, entry.ElapsedMs);
entry.ElapsedMs = long.MaxValue;
Assert.Equal(long.MaxValue, entry.ElapsedMs);
entry.ElapsedMs = -1;
Assert.Equal(-1L, entry.ElapsedMs);
}
[Fact]
public void RowCount_Boundary_Values()
{
var entry = new QueryHistoryEntry();
entry.RowCount = 0;
Assert.Equal(0, entry.RowCount);
entry.RowCount = int.MaxValue;
Assert.Equal(int.MaxValue, entry.RowCount);
entry.RowCount = -1;
Assert.Equal(-1, entry.RowCount);
}
[Fact]
public void ExecutedAt_Boundary_Values()
{
var entry = new QueryHistoryEntry();
entry.ExecutedAt = DateTime.MinValue;
Assert.Equal(DateTime.MinValue, entry.ExecutedAt);
entry.ExecutedAt = DateTime.MaxValue;
Assert.Equal(DateTime.MaxValue, entry.ExecutedAt);
}
}
|