mirror of https://github.com/abpframework/abp.git
6 changed files with 130 additions and 103 deletions
@ -1,95 +1,9 @@ |
|||||
using System; |
using Volo.Abp.TestApp.Testing; |
||||
using Shouldly; |
|
||||
using Volo.Abp.Domain.Entities.Events; |
|
||||
using Volo.Abp.Domain.Repositories; |
|
||||
using Volo.Abp.EventBus; |
|
||||
using Volo.Abp.TestApp.Domain; |
|
||||
using Xunit; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DomainEvents |
namespace Volo.Abp.EntityFrameworkCore.DomainEvents |
||||
{ |
{ |
||||
public class EntityChangeEvents_Tests : EntityFrameworkCoreTestBase |
public class EntityChangeEvents_Tests : EntityChangeEvents_Tests<AbpEntityFrameworkCoreTestModule> |
||||
{ |
{ |
||||
private readonly IRepository<Person, Guid> _personRepository; |
|
||||
private readonly IEventBus _eventBus; |
|
||||
|
|
||||
public EntityChangeEvents_Tests() |
|
||||
{ |
|
||||
_personRepository = GetRequiredService<IRepository<Person, Guid>>(); |
|
||||
_eventBus = GetRequiredService<IEventBus>(); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Complex_Event_Test() |
|
||||
{ |
|
||||
var personName = Guid.NewGuid().ToString("N"); |
|
||||
|
|
||||
var creatingEventTriggered = false; |
|
||||
var createdEventTriggered = false; |
|
||||
var updatingEventTriggered = false; |
|
||||
var updatedEventTriggered = false; |
|
||||
|
|
||||
_eventBus.Register<EntityCreatingEventData<Person>>(data => |
|
||||
{ |
|
||||
creatingEventTriggered.ShouldBeFalse(); |
|
||||
createdEventTriggered.ShouldBeFalse(); |
|
||||
updatingEventTriggered.ShouldBeFalse(); |
|
||||
updatedEventTriggered.ShouldBeFalse(); |
|
||||
|
|
||||
creatingEventTriggered = true; |
|
||||
|
|
||||
data.Entity.Name.ShouldBe(personName); |
|
||||
|
|
||||
/* Want to change age from 15 to 18 |
|
||||
* Expect to trigger EntityUpdatingEventData, EntityUpdatedEventData events */ |
|
||||
data.Entity.Age.ShouldBe(15); |
|
||||
data.Entity.Age = 18; |
|
||||
}); |
|
||||
|
|
||||
_eventBus.Register<EntityCreatedEventData<Person>>(data => |
|
||||
{ |
|
||||
creatingEventTriggered.ShouldBeTrue(); |
|
||||
createdEventTriggered.ShouldBeFalse(); |
|
||||
updatingEventTriggered.ShouldBeTrue(); |
|
||||
updatedEventTriggered.ShouldBeFalse(); |
|
||||
|
|
||||
createdEventTriggered = true; |
|
||||
|
|
||||
data.Entity.Name.ShouldBe(personName); |
|
||||
}); |
|
||||
|
|
||||
_eventBus.Register<EntityUpdatingEventData<Person>>(data => |
|
||||
{ |
|
||||
creatingEventTriggered.ShouldBeTrue(); |
|
||||
createdEventTriggered.ShouldBeFalse(); |
|
||||
updatingEventTriggered.ShouldBeFalse(); |
|
||||
updatedEventTriggered.ShouldBeFalse(); |
|
||||
|
|
||||
updatingEventTriggered = true; |
|
||||
|
|
||||
data.Entity.Name.ShouldBe(personName); |
|
||||
data.Entity.Age.ShouldBe(18); |
|
||||
}); |
|
||||
|
|
||||
_eventBus.Register<EntityUpdatedEventData<Person>>(data => |
|
||||
{ |
|
||||
creatingEventTriggered.ShouldBeTrue(); |
|
||||
createdEventTriggered.ShouldBeTrue(); |
|
||||
updatingEventTriggered.ShouldBeTrue(); |
|
||||
updatedEventTriggered.ShouldBeFalse(); |
|
||||
|
|
||||
updatedEventTriggered = true; |
|
||||
|
|
||||
data.Entity.Name.ShouldBe(personName); |
|
||||
data.Entity.Age.ShouldBe(18); |
|
||||
}); |
|
||||
|
|
||||
_personRepository.Insert(new Person(Guid.NewGuid(), personName, 15)); |
|
||||
|
|
||||
creatingEventTriggered.ShouldBeTrue(); |
|
||||
createdEventTriggered.ShouldBeTrue(); |
|
||||
updatingEventTriggered.ShouldBeTrue(); |
|
||||
updatedEventTriggered.ShouldBeTrue(); |
|
||||
} |
|
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -0,0 +1,9 @@ |
|||||
|
using Volo.Abp.TestApp.Testing; |
||||
|
|
||||
|
namespace Volo.Abp.MongoDB.DomainEvents |
||||
|
{ |
||||
|
public class EntityChangeEvents_Tests : EntityChangeEvents_Tests<AbpMongoDbTestModule> |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,105 @@ |
|||||
|
using System; |
||||
|
using Shouldly; |
||||
|
using Volo.Abp.Domain.Entities.Events; |
||||
|
using Volo.Abp.Domain.Repositories; |
||||
|
using Volo.Abp.EventBus; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.TestApp.Domain; |
||||
|
using Volo.Abp.Uow; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Volo.Abp.TestApp.Testing |
||||
|
{ |
||||
|
public abstract class EntityChangeEvents_Tests<TStartupModule> : TestAppTestBase<TStartupModule> |
||||
|
where TStartupModule : IAbpModule |
||||
|
{ |
||||
|
protected IRepository<Person, Guid> PersonRepository { get; } |
||||
|
protected IEventBus EventBus { get; } |
||||
|
|
||||
|
protected EntityChangeEvents_Tests() |
||||
|
{ |
||||
|
PersonRepository = GetRequiredService<IRepository<Person, Guid>>(); |
||||
|
EventBus = GetRequiredService<IEventBus>(); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void Complex_Event_Test() |
||||
|
{ |
||||
|
var personName = Guid.NewGuid().ToString("N"); |
||||
|
|
||||
|
var creatingEventTriggered = false; |
||||
|
var createdEventTriggered = false; |
||||
|
var updatingEventTriggered = false; |
||||
|
var updatedEventTriggered = false; |
||||
|
|
||||
|
using (var uow = GetRequiredService<IUnitOfWorkManager>().Begin()) |
||||
|
{ |
||||
|
EventBus.Register<EntityCreatingEventData<Person>>(data => |
||||
|
{ |
||||
|
creatingEventTriggered.ShouldBeFalse(); |
||||
|
createdEventTriggered.ShouldBeFalse(); |
||||
|
updatingEventTriggered.ShouldBeFalse(); |
||||
|
updatedEventTriggered.ShouldBeFalse(); |
||||
|
|
||||
|
creatingEventTriggered = true; |
||||
|
|
||||
|
data.Entity.Name.ShouldBe(personName); |
||||
|
|
||||
|
/* Want to change age from 15 to 18 |
||||
|
* Expect to trigger EntityUpdatingEventData, EntityUpdatedEventData events */ |
||||
|
data.Entity.Age.ShouldBe(15); |
||||
|
data.Entity.Age = 18; |
||||
|
PersonRepository.Update(data.Entity); |
||||
|
}); |
||||
|
|
||||
|
EventBus.Register<EntityCreatedEventData<Person>>(data => |
||||
|
{ |
||||
|
creatingEventTriggered.ShouldBeTrue(); |
||||
|
createdEventTriggered.ShouldBeFalse(); |
||||
|
updatingEventTriggered.ShouldBeTrue(); |
||||
|
updatedEventTriggered.ShouldBeFalse(); |
||||
|
|
||||
|
createdEventTriggered = true; |
||||
|
|
||||
|
data.Entity.Age.ShouldBe(18); |
||||
|
data.Entity.Name.ShouldBe(personName); |
||||
|
}); |
||||
|
|
||||
|
EventBus.Register<EntityUpdatingEventData<Person>>(data => |
||||
|
{ |
||||
|
creatingEventTriggered.ShouldBeTrue(); |
||||
|
createdEventTriggered.ShouldBeFalse(); |
||||
|
updatingEventTriggered.ShouldBeFalse(); |
||||
|
updatedEventTriggered.ShouldBeFalse(); |
||||
|
|
||||
|
updatingEventTriggered = true; |
||||
|
|
||||
|
data.Entity.Name.ShouldBe(personName); |
||||
|
data.Entity.Age.ShouldBe(18); |
||||
|
}); |
||||
|
|
||||
|
EventBus.Register<EntityUpdatedEventData<Person>>(data => |
||||
|
{ |
||||
|
creatingEventTriggered.ShouldBeTrue(); |
||||
|
createdEventTriggered.ShouldBeTrue(); |
||||
|
updatingEventTriggered.ShouldBeTrue(); |
||||
|
updatedEventTriggered.ShouldBeFalse(); |
||||
|
|
||||
|
updatedEventTriggered = true; |
||||
|
|
||||
|
data.Entity.Name.ShouldBe(personName); |
||||
|
data.Entity.Age.ShouldBe(18); |
||||
|
}); |
||||
|
|
||||
|
PersonRepository.Insert(new Person(Guid.NewGuid(), personName, 15)); |
||||
|
|
||||
|
uow.Complete(); |
||||
|
} |
||||
|
|
||||
|
creatingEventTriggered.ShouldBeTrue(); |
||||
|
createdEventTriggered.ShouldBeTrue(); |
||||
|
updatingEventTriggered.ShouldBeTrue(); |
||||
|
updatedEventTriggered.ShouldBeTrue(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue