mirror of https://github.com/abpframework/abp.git
5 changed files with 265 additions and 0 deletions
@ -0,0 +1,147 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Shouldly; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.Domain.Repositories; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.TestApp.Domain; |
|||
using Xunit; |
|||
|
|||
namespace Volo.Abp.EntityFrameworkCore.Repositories; |
|||
|
|||
public class SharedEntity_Repository_Tests : EntityFrameworkCoreTestBase |
|||
{ |
|||
protected readonly IRepository<TestSharedEntity> TestSharedTypeEntityRepository; |
|||
protected readonly ICurrentTenant CurrentTenant; |
|||
protected readonly IDataFilter<ISoftDelete> dataFilter; |
|||
|
|||
public SharedEntity_Repository_Tests() |
|||
{ |
|||
TestSharedTypeEntityRepository = GetRequiredService<IRepository<TestSharedEntity>>(); |
|||
CurrentTenant = GetRequiredService<ICurrentTenant>(); |
|||
dataFilter = GetRequiredService<IDataFilter<ISoftDelete>>(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task SharedEntity_Test() |
|||
{ |
|||
await WithUnitOfWorkAsync(async () => |
|||
{ |
|||
TestSharedTypeEntityRepository.SetCustomEntityName("TestSharedEntity1"); |
|||
|
|||
var tenantId = Guid.NewGuid(); |
|||
await TestSharedTypeEntityRepository.InsertManyAsync(new List<TestSharedEntity>() |
|||
{ |
|||
new TestSharedEntity(Guid.NewGuid()) |
|||
{ |
|||
TenantId = null, |
|||
IsDeleted = false, |
|||
|
|||
["Name"] = "Test Person1", |
|||
["Age"] = 10, |
|||
["Birthday"] = DateTime.Now |
|||
}.SetProperty("testProperty", "Test Value1"), |
|||
new TestSharedEntity(Guid.NewGuid()) |
|||
{ |
|||
TenantId = tenantId, |
|||
IsDeleted = false, |
|||
|
|||
["Name"] = "Test Person2", |
|||
["Age"] = 20, |
|||
["Birthday"] = DateTime.Now |
|||
}, |
|||
new TestSharedEntity(Guid.NewGuid()) |
|||
{ |
|||
TenantId = tenantId, |
|||
IsDeleted = true, |
|||
|
|||
["Name"] = "Test Person3", |
|||
["Age"] = 30, |
|||
["Birthday"] = DateTime.Now |
|||
}, |
|||
new TestSharedEntity(Guid.NewGuid()) |
|||
{ |
|||
TenantId = null, |
|||
IsDeleted = true, |
|||
|
|||
["Name"] = "Test Person4", |
|||
["Age"] = 40, |
|||
["Birthday"] = DateTime.Now |
|||
} |
|||
}, true); |
|||
|
|||
var entities = (await TestSharedTypeEntityRepository.GetListAsync()).OrderBy(x => x["Name"]).ToList(); |
|||
entities.Count.ShouldBe(1); |
|||
entities[0].TenantId.ShouldBeNull(); |
|||
entities[0].IsDeleted.ShouldBe(false); |
|||
entities[0]["Name"].ShouldBe("Test Person1"); |
|||
entities[0]["Age"].ShouldBe(10); |
|||
entities[0].GetProperty("testProperty").ShouldBe("Test Value1"); |
|||
|
|||
using (CurrentTenant.Change(tenantId)) |
|||
{ |
|||
entities = (await TestSharedTypeEntityRepository.GetListAsync()).OrderBy(x => x["Name"]).ToList(); |
|||
entities.Count.ShouldBe(1); |
|||
entities[0].TenantId.ShouldBe(tenantId); |
|||
entities[0].IsDeleted.ShouldBe(false); |
|||
entities[0]["Name"].ShouldBe("Test Person2"); |
|||
entities[0]["Age"].ShouldBe(20); |
|||
} |
|||
|
|||
using (dataFilter.Disable()) |
|||
{ |
|||
entities = (await TestSharedTypeEntityRepository.GetListAsync()).OrderBy(x => x["Name"]).ToList(); |
|||
entities.Count.ShouldBe(2); |
|||
|
|||
entities[0].TenantId.ShouldBeNull(); |
|||
entities[0].IsDeleted.ShouldBe(false); |
|||
entities[0]["Name"].ShouldBe("Test Person1"); |
|||
entities[0]["Age"].ShouldBe(10); |
|||
|
|||
entities[1].TenantId.ShouldBeNull(); |
|||
entities[1].IsDeleted.ShouldBe(true); |
|||
entities[1]["Name"].ShouldBe("Test Person4"); |
|||
entities[1]["Age"].ShouldBe(40); |
|||
} |
|||
|
|||
using (CurrentTenant.Change(tenantId)) |
|||
{ |
|||
using (dataFilter.Disable()) |
|||
{ |
|||
entities = (await TestSharedTypeEntityRepository.GetListAsync()).OrderBy(x => x["Name"]).ToList(); |
|||
entities.Count.ShouldBe(2); |
|||
|
|||
entities[0].TenantId.ShouldBe(tenantId); |
|||
entities[0].IsDeleted.ShouldBe(false); |
|||
entities[0]["Name"].ShouldBe("Test Person2"); |
|||
entities[0]["Age"].ShouldBe(20); |
|||
|
|||
entities[1].TenantId.ShouldBe(tenantId); |
|||
entities[1].IsDeleted.ShouldBe(true); |
|||
entities[1]["Name"].ShouldBe("Test Person3"); |
|||
entities[1]["Age"].ShouldBe(30); |
|||
} |
|||
} |
|||
|
|||
TestSharedTypeEntityRepository.SetCustomEntityName("TestSharedEntity2"); |
|||
await TestSharedTypeEntityRepository.InsertManyAsync(new List<TestSharedEntity>() |
|||
{ |
|||
new TestSharedEntity(Guid.NewGuid()) |
|||
{ |
|||
["Name"] = "Test Person1 from Second Table", |
|||
["Age"] = 110, |
|||
["Birthday"] = DateTime.Now |
|||
} |
|||
}, true); |
|||
|
|||
var entitiesFromSecondTable = (await TestSharedTypeEntityRepository.GetListAsync()).OrderBy(x => x["Name"]).ToList(); |
|||
entitiesFromSecondTable.Count.ShouldBe(1); |
|||
entitiesFromSecondTable[0].TenantId.ShouldBeNull(); |
|||
entitiesFromSecondTable[0].IsDeleted.ShouldBe(false); |
|||
entitiesFromSecondTable[0]["Name"].ShouldBe("Test Person1 from Second Table"); |
|||
entitiesFromSecondTable[0]["Age"].ShouldBe(110); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
using System; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.Domain.Entities; |
|||
using Volo.Abp.MultiTenancy; |
|||
|
|||
namespace Volo.Abp.TestApp.Domain; |
|||
|
|||
public class TestSharedEntity : SharedEntity<Guid>, IMultiTenant, ISoftDelete, IHasExtraProperties |
|||
{ |
|||
public Guid? TenantId { get; set; } |
|||
|
|||
public bool IsDeleted { get; set; } |
|||
|
|||
public TestSharedEntity() |
|||
{ |
|||
ExtraProperties = new ExtraPropertyDictionary(); |
|||
this.SetDefaultsForExtraProperties(); |
|||
} |
|||
|
|||
public TestSharedEntity(Guid id) |
|||
: base(id) |
|||
{ |
|||
ExtraProperties = new ExtraPropertyDictionary(); |
|||
this.SetDefaultsForExtraProperties(); |
|||
} |
|||
|
|||
public ExtraPropertyDictionary ExtraProperties { get; set; } |
|||
} |
|||
Loading…
Reference in new issue