示例#1
0
        private async Task FailureResponse(ConsumeContext <VerifyAvailableTimeslotEvent> context, string reason)
        {
            _roomContext.ChangeTracker.Entries()
            .Where(e => e.Entity != null).ToList()
            .ForEach(e => e.State = EntityState.Detached);
            var @eventFailed = new TimeslotReservationFailedEvent()
            {
                EventId = context.Message.EventId,
                Reason  = reason
            };

            await _eventService.SaveEventAndDbContextChangesAsync(@eventFailed);

            await _eventService.PublishEventAsync(@eventFailed);
        }
示例#2
0
        public async Task Consume_EventDoesNotExistSomehow_IgnoresEvent()
        {
            SetupAnEntireClub();
            var e = CreateEvent();

            var @event = new TimeslotReservationFailedEvent()
            {
                EventId = Guid.NewGuid(),
                Reason  = "Very bad reason"
            };

            await SendEvent(@event);

            await _publishEndpoint.Received(0).Publish(
                Arg.Any <EventCreationFailedEvent>());
        }
        public async Task Consume_EventDoesExistInWrongStatus_IsIgnored()
        {
            SetupAnEntireClub();
            var e = CreateEvent(EventStatus.Failed);

            var @event = new TimeslotReservationFailedEvent()
            {
                EventId = e.EventId,
            };

            await SendEvent(@event);

            using (var context = _factory.CreateContext())
            {
                var dbEvent = context.Events.Find(e.EventId);
                Assert.That(dbEvent.Status, Is.EqualTo(EventStatus.Failed));
            }


            await _publishEndpoint.Received(0).Publish(
                Arg.Any <EventCreatedEvent>());
        }
示例#4
0
        public async Task Consume_EventDoesExist_ChangesStatus()
        {
            SetupAnEntireClub();
            var e = CreateEvent();

            var @event = new TimeslotReservationFailedEvent()
            {
                EventId = e.EventId,
                Reason  = "Very bad reason"
            };

            await SendEvent(@event);

            using (var context = _factory.CreateContext())
            {
                var dbEvent = context.Events.Find(e.EventId);
                Assert.That(dbEvent.Status, Is.EqualTo(EventStatus.Failed));
            }

            await _publishEndpoint.Received(1).Publish(
                Arg.Is <EventCreationFailedEvent>(e => e.Reason == "Very bad reason"));
        }