IQueryableExtTest.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using Masuit.Tools.Models;
  5. using Microsoft.EntityFrameworkCore;
  6. using Xunit;
  7. namespace Masuit.Tools.Core.Test.AspNetCore
  8. {
  9. public class IQueryableExtTests
  10. {
  11. private DbContextOptions<TestDbContext> CreateNewContextOptions()
  12. {
  13. var builder = new DbContextOptionsBuilder<TestDbContext>();
  14. builder.UseInMemoryDatabase(Guid.NewGuid().ToString());
  15. return builder.Options;
  16. }
  17. [Fact]
  18. public async Task ToPagedListAsync_ShouldReturnPagedList()
  19. {
  20. // Arrange
  21. var options = CreateNewContextOptions();
  22. using var context = new TestDbContext(options);
  23. for (int i = 1; i <= 20; i++)
  24. {
  25. context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
  26. }
  27. await context.SaveChangesAsync();
  28. // Act
  29. var pagedList = await context.TestEntities.AsQueryable().ToPagedListAsync(2, 5);
  30. // Assert
  31. Assert.Equal(2, pagedList.CurrentPage);
  32. Assert.Equal(5, pagedList.PageSize);
  33. Assert.Equal(20, pagedList.TotalCount);
  34. Assert.Equal(4, pagedList.TotalPages);
  35. Assert.Equal(5, pagedList.Data.Count);
  36. }
  37. [Fact]
  38. public async Task ToPagedListNoLockAsync_ShouldReturnPagedList()
  39. {
  40. // Arrange
  41. var options = CreateNewContextOptions();
  42. using var context = new TestDbContext(options);
  43. for (int i = 1; i <= 20; i++)
  44. {
  45. context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
  46. }
  47. await context.SaveChangesAsync();
  48. // Act
  49. var pagedList = await context.TestEntities.AsQueryable().ToPagedListNoLockAsync(2, 5);
  50. // Assert
  51. Assert.Equal(2, pagedList.CurrentPage);
  52. Assert.Equal(5, pagedList.PageSize);
  53. Assert.Equal(20, pagedList.TotalCount);
  54. Assert.Equal(4, pagedList.TotalPages);
  55. Assert.Equal(5, pagedList.Data.Count);
  56. }
  57. [Fact]
  58. public void ToPagedList_ShouldReturnPagedList()
  59. {
  60. // Arrange
  61. var options = CreateNewContextOptions();
  62. using var context = new TestDbContext(options);
  63. for (int i = 1; i <= 20; i++)
  64. {
  65. context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
  66. }
  67. context.SaveChanges();
  68. // Act
  69. var pagedList = context.TestEntities.AsQueryable().ToPagedList(2, 5);
  70. // Assert
  71. Assert.Equal(2, pagedList.CurrentPage);
  72. Assert.Equal(5, pagedList.PageSize);
  73. Assert.Equal(20, pagedList.TotalCount);
  74. Assert.Equal(4, pagedList.TotalPages);
  75. Assert.Equal(5, pagedList.Data.Count);
  76. }
  77. [Fact]
  78. public void ToPagedListNoLock_ShouldReturnPagedList()
  79. {
  80. // Arrange
  81. var options = CreateNewContextOptions();
  82. using var context = new TestDbContext(options);
  83. for (int i = 1; i <= 20; i++)
  84. {
  85. context.TestEntities.Add(new TestEntity { Name = $"Entity{i}" });
  86. }
  87. context.SaveChanges();
  88. // Act
  89. var pagedList = context.TestEntities.AsQueryable().ToPagedListNoLock(2, 5);
  90. // Assert
  91. Assert.Equal(2, pagedList.CurrentPage);
  92. Assert.Equal(5, pagedList.PageSize);
  93. Assert.Equal(20, pagedList.TotalCount);
  94. Assert.Equal(4, pagedList.TotalPages);
  95. Assert.Equal(5, pagedList.Data.Count);
  96. }
  97. [Fact]
  98. public void ToPagedList_FromEnumerable_ShouldReturnPagedList()
  99. {
  100. // Arrange
  101. var list = Enumerable.Range(1, 20).Select(i => new TestEntity { Id = i, Name = $"Entity{i}" });
  102. // Act
  103. var pagedList = list.ToPagedList(2, 5);
  104. // Assert
  105. Assert.Equal(2, pagedList.CurrentPage);
  106. Assert.Equal(5, pagedList.PageSize);
  107. Assert.Equal(20, pagedList.TotalCount);
  108. Assert.Equal(4, pagedList.TotalPages);
  109. Assert.Equal(5, pagedList.Data.Count);
  110. }
  111. }
  112. }