public async Task Run() { var events = await HangfireQueue.GetEvents("OnUserCreateCreateQuery"); var handledEvents = new List <EventAndJob>(); var enumerator = events.GetEnumerator(); for ( ; enumerator.MoveNext(); ) { var eventWrapper = enumerator.Current; var domainEvent = (UserCreateEvent)eventWrapper.DomainEvent; var entity = await UserRepository.GetUser(domainEvent.Id); var newCreateEvent = new UserCreateEvent(entity, domainEvent.EntityId); var hookResult = await AsyncHook.Execute(newCreateEvent); if (hookResult.Ok) { handledEvents.Add(eventWrapper); } } await HangfireQueue.RemoveEventsFromQueue(handledEvents); }
public async Task AddEvents_NoEventIsRegeistered() { var repository = new Mock <IQueueRepository>(); var hangfireQueue = new HangfireQueue(new EventJobRegistration(), repository.Object); var userUpdateNameEvent = new UserUpdateNameEvent("Peter", Guid.NewGuid()); var events = new List <DomainEventBase> { userUpdateNameEvent }; await hangfireQueue.AddEvents(events); repository.Verify(repo => repo.AddEventForJob(It.IsAny <EventAndJob>()), Times.Never); }
public async Task AddEvents_OneEvent() { var repository = new Mock <IQueueRepository>(); var hangfireQueue = new HangfireQueue(new EventJobRegistration(), repository.Object); var userUpdateAgeEvent = new UserUpdateAgeEvent(14, Guid.NewGuid()); var events = new List <DomainEventBase> { userUpdateAgeEvent }; await hangfireQueue.AddEvents(events); repository.Verify(repo => repo.AddEventForJob(It.Is <EventAndJob>(job => job.DomainEvent == userUpdateAgeEvent)), Times.Once); }