/// <summary> /// This allows an entity to add an event to this class /// </summary> /// <param name="dEvent">This is the domain event you want to sent</param> /// <param name="eventToSend">This allows you to send the event to either BeforeSave list, the AfterSave list or both. Default is BeforeSave List</param> public void AddEvent(IDomainEvent dEvent, EventToSend eventToSend = EventToSend.BeforeSave) { if (eventToSend == EventToSend.BeforeSave || eventToSend == EventToSend.BeforeAndAfterSave) { _beforeSaveEvents.Add(dEvent); } if (eventToSend == EventToSend.AfterSave || eventToSend == EventToSend.BeforeAndAfterSave) { _afterSaveChangesEvents.Add(dEvent); } }
/// <summary> /// This allows an entity to add an event to this class /// </summary> /// <param name="dEvent">This is the domain event you want to sent</param> /// <param name="eventToSend">This allows you to send the event to either BeforeSave, DuringSave or AfterSave. Default is BeforeSave List</param> public void AddEvent(IEntityEvent dEvent, EventToSend eventToSend = EventToSend.BeforeSave) { if (eventToSend == EventToSend.DuringSave) { _duringSaveEvents.Add(dEvent); } if (eventToSend == EventToSend.BeforeSave || eventToSend == EventToSend.BeforeAndAfterSave) { _beforeSaveEvents.Add(dEvent); } if (eventToSend == EventToSend.AfterSave || eventToSend == EventToSend.BeforeAndAfterSave) { _afterSaveChangesEvents.Add(dEvent); } }
public async Task TestMissingHandlerThrowsException(EventToSend beforeAfter) { //SETUP var options = SqliteInMemory.CreateOptions <ExampleDbContext>(); var context = options.CreateAndSeedDbWithDiForHandlers <OrderCreatedHandler>(); { var tax = new TaxRate(DateTime.Now, 6); context.Add(tax); //ATTEMPT tax.AddEvent(new EventWithNoHandler(), beforeAfter); var ex = await Assert.ThrowsAsync <GenericEventRunnerException>(async() => await context.SaveChangesAsync()); //VERIFY ex.Message.ShouldEqual(beforeAfter == EventToSend.BeforeSave ? $"Could not find a BeforeSave event handler for the event {typeof(EventWithNoHandler).Name}." : $"Could not find a AfterSave event handler for the event {typeof(EventWithNoHandler).Name}."); } }