mirror of
https://github.com/ldqk/Masuit.Tools.git
synced 2026-10-19 06:58:32 +08:00
128 lines
4.3 KiB
C#
128 lines
4.3 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Masuit.Tools.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Xunit;
|
|
|
|
namespace Masuit.Tools.Core.Test.AspNetCore
|
|
{
|
|
public class IQueryableExtTests
|
|
{
|
|
private DbContextOptions<TestDbContext> CreateNewContextOptions()
|
|
{
|
|
var builder = new DbContextOptionsBuilder<TestDbContext>();
|
|
builder.UseInMemoryDatabase(Guid.NewGuid().ToString());
|
|
return builder.Options;
|
|
}
|
|
|
|
[Fact]
|
|
public async Task ToPagedListAsync_ShouldReturnPagedList()
|
|
{
|
|
// Arrange
|
|
var options = CreateNewContextOptions();
|
|
using var context = new TestDbContext(options);
|
|
for (int i = 1; i <= 20; i++)
|
|
{
|
|
context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
|
|
}
|
|
await context.SaveChangesAsync();
|
|
|
|
// Act
|
|
var pagedList = await context.TestEntities.AsQueryable().ToPagedListAsync(2, 5);
|
|
|
|
// Assert
|
|
Assert.Equal(2, pagedList.CurrentPage);
|
|
Assert.Equal(5, pagedList.PageSize);
|
|
Assert.Equal(20, pagedList.TotalCount);
|
|
Assert.Equal(4, pagedList.TotalPages);
|
|
Assert.Equal(5, pagedList.Data.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task ToPagedListNoLockAsync_ShouldReturnPagedList()
|
|
{
|
|
// Arrange
|
|
var options = CreateNewContextOptions();
|
|
using var context = new TestDbContext(options);
|
|
for (int i = 1; i <= 20; i++)
|
|
{
|
|
context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
|
|
}
|
|
await context.SaveChangesAsync();
|
|
|
|
// Act
|
|
var pagedList = await context.TestEntities.AsQueryable().ToPagedListNoLockAsync(2, 5);
|
|
|
|
// Assert
|
|
Assert.Equal(2, pagedList.CurrentPage);
|
|
Assert.Equal(5, pagedList.PageSize);
|
|
Assert.Equal(20, pagedList.TotalCount);
|
|
Assert.Equal(4, pagedList.TotalPages);
|
|
Assert.Equal(5, pagedList.Data.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void ToPagedList_ShouldReturnPagedList()
|
|
{
|
|
// Arrange
|
|
var options = CreateNewContextOptions();
|
|
using var context = new TestDbContext(options);
|
|
for (int i = 1; i <= 20; i++)
|
|
{
|
|
context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
|
|
}
|
|
context.SaveChanges();
|
|
|
|
// Act
|
|
var pagedList = context.TestEntities.AsQueryable().ToPagedList(2, 5);
|
|
|
|
// Assert
|
|
Assert.Equal(2, pagedList.CurrentPage);
|
|
Assert.Equal(5, pagedList.PageSize);
|
|
Assert.Equal(20, pagedList.TotalCount);
|
|
Assert.Equal(4, pagedList.TotalPages);
|
|
Assert.Equal(5, pagedList.Data.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void ToPagedListNoLock_ShouldReturnPagedList()
|
|
{
|
|
// Arrange
|
|
var options = CreateNewContextOptions();
|
|
using var context = new TestDbContext(options);
|
|
for (int i = 1; i <= 20; i++)
|
|
{
|
|
context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
|
|
}
|
|
context.SaveChanges();
|
|
|
|
// Act
|
|
var pagedList = context.TestEntities.AsQueryable().ToPagedListNoLock(2, 5);
|
|
|
|
// Assert
|
|
Assert.Equal(2, pagedList.CurrentPage);
|
|
Assert.Equal(5, pagedList.PageSize);
|
|
Assert.Equal(20, pagedList.TotalCount);
|
|
Assert.Equal(4, pagedList.TotalPages);
|
|
Assert.Equal(5, pagedList.Data.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void ToPagedList_FromEnumerable_ShouldReturnPagedList()
|
|
{
|
|
// Arrange
|
|
var list = Enumerable.Range(1, 20).Select(i => new TestEntity { Id = i, Name = $"Entity{i}" });
|
|
|
|
// Act
|
|
var pagedList = list.ToPagedList(2, 5);
|
|
|
|
// Assert
|
|
Assert.Equal(2, pagedList.CurrentPage);
|
|
Assert.Equal(5, pagedList.PageSize);
|
|
Assert.Equal(20, pagedList.TotalCount);
|
|
Assert.Equal(4, pagedList.TotalPages);
|
|
Assert.Equal(5, pagedList.Data.Count);
|
|
}
|
|
}
|
|
} |