sharding/test/ShardingCore.Test50.MySql/ShardingTest.cs

146 lines
6.4 KiB
C#

using System.Linq;
using System.Threading.Tasks;
using ShardingCore.DbContexts.VirtualDbContexts;
using ShardingCore.Extensions;
using ShardingCore.Test50.MySql.Domain.Entities;
using Xunit;
namespace ShardingCore.Test50.MySql
{
/*
* @Author: xjm
* @Description:
* @Date: Friday, 15 January 2021 17:22:10
* @Email: 326308290@qq.com
*/
public class ShardingTest
{
private readonly IVirtualDbContext _virtualDbContext;
public ShardingTest(IVirtualDbContext virtualDbContext)
{
_virtualDbContext = virtualDbContext;
}
[Fact]
public async Task ToList_All_Test()
{
var mods=await _virtualDbContext.Set<SysUserMod>().ToShardingListAsync();
Assert.Equal(100,mods.Count);
var ranges=await _virtualDbContext.Set<SysUserRange>().ToShardingListAsync();
Assert.Equal(1000,ranges.Count);
}
[Fact]
public async Task ToList_OrderBy_Asc_Desc_Test()
{
var modascs=await _virtualDbContext.Set<SysUserMod>().OrderBy(o=>o.Age).ToShardingListAsync();
Assert.Equal(100,modascs.Count);
Assert.Equal(100,modascs.Last().Age);
var moddescs=await _virtualDbContext.Set<SysUserMod>().OrderByDescending(o=>o.Age).ToShardingListAsync();
Assert.Equal(100,moddescs.Count);
Assert.Equal(1,moddescs.Last().Age);
}
[Fact]
public async Task ToList_Id_In_Test()
{
var ids = new[] {"1", "2", "3", "4"};
var sysUserMods=await _virtualDbContext.Set<SysUserMod>().Where(o=>ids.Contains(o.Id)).ToShardingListAsync();
var sysUserRanges=await _virtualDbContext.Set<SysUserRange>().Where(o=>ids.Contains(o.Id)).ToShardingListAsync();
foreach (var id in ids)
{
Assert.Contains(sysUserMods, o =>o.Id==id);
Assert.Contains(sysUserRanges, o =>o.Id==id);
}
}
[Fact]
public async Task ToList_Id_Eq_Test()
{
var mods=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Id=="3").ToShardingListAsync();
Assert.Single(mods);
Assert.Equal("3",mods[0].Id);
var ranges=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Id=="3").ToShardingListAsync();
Assert.Single(ranges);
Assert.Equal("3",ranges[0].Id);
}
[Fact]
public async Task ToList_Id_Not_Eq_Test()
{
var mods=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Id!="3").ToShardingListAsync();
Assert.Equal(99,mods.Count);
Assert.DoesNotContain(mods,o=>o.Id=="3");
var ranges=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Id!="3").ToShardingListAsync();
Assert.Equal(999,ranges.Count);
Assert.DoesNotContain(ranges,o=>o.Id=="3");
}
[Fact]
public async Task ToList_Name_Eq_Test()
{
var mods=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Name=="name_3").ToShardingListAsync();
Assert.Single(mods);
Assert.Equal("3",mods[0].Id);
var ranges=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Name=="name_range_3").ToShardingListAsync();
Assert.Single(ranges);
Assert.Equal("3",ranges[0].Id);
}
[Fact]
public async Task ToList_Id_Eq_Not_In_Db_Test()
{
var mods=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Id=="1001").ToShardingListAsync();
Assert.Empty(mods);
var ranges=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Id=="1001").ToShardingListAsync();
Assert.Empty(ranges);
}
[Fact]
public async Task ToList_Name_Eq_Not_In_Db_Test()
{
var mods=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Name=="name_1001").ToShardingListAsync();
Assert.Empty(mods);
var ranges=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Name=="name_range_1001").ToShardingListAsync();
Assert.Empty(ranges);
}
[Fact]
public async Task FirstOrDefault_Order_By_Id_Test()
{
var sysUserMod=await _virtualDbContext.Set<SysUserMod>().OrderBy(o=>o.Id).ShardingFirstOrDefaultAsync();
Assert.True(sysUserMod!=null&&sysUserMod.Id=="1");
var sysUserRange=await _virtualDbContext.Set<SysUserRange>().OrderBy(o=>o.Id).ShardingFirstOrDefaultAsync();
Assert.True(sysUserRange!=null&&sysUserRange.Id=="1");
}
[Fact]
public async Task FirstOrDefault2()
{
var sysUserMod=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Id=="1").ShardingFirstOrDefaultAsync();
Assert.True(sysUserMod!=null&&sysUserMod.Id=="1");
var sysUserRange=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Id=="1").ShardingFirstOrDefaultAsync();
Assert.True(sysUserRange!=null&&sysUserRange.Id=="1");
}
[Fact]
public async Task FirstOrDefault3()
{
var sysUserMod=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Name=="name_2").ShardingFirstOrDefaultAsync();
Assert.NotNull(sysUserMod);
Assert.Equal("2",sysUserMod.Id);
var sysUserRange=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Name=="name_range_2").ShardingFirstOrDefaultAsync();
Assert.NotNull(sysUserRange);
Assert.Equal("2",sysUserRange.Id);
}
[Fact]
public async Task FirstOrDefault4()
{
var sysUserMod=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Id!="1").ShardingFirstOrDefaultAsync();
Assert.NotNull(sysUserMod);
Assert.True(sysUserMod.Id!="1");
var sysUserRange=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Id!="1").ShardingFirstOrDefaultAsync();
Assert.NotNull(sysUserRange);
Assert.True(sysUserRange.Id!="1");
}
[Fact]
public async Task FirstOrDefault5()
{
var sysUserMod=await _virtualDbContext.Set<SysUserMod>().Where(o=>o.Name=="name_1001").ShardingFirstOrDefaultAsync();
Assert.Null(sysUserMod);
var sysUserRange=await _virtualDbContext.Set<SysUserRange>().Where(o=>o.Name=="name_range_1001").ShardingFirstOrDefaultAsync();
Assert.Null(sysUserRange);
}
}
}