public void GetObjectByUserQuery(string userId, EventType eventType, int expectedWebhooksCount)
        {
            // Arrange
            var mediator = GetService <IMediator>();
            var uow      = GetService <IAmiUnitOfWork>();
            var ct       = new CancellationToken();
            var entities = CreateWebhooks(mediator, uow, ct);
            var query    = new GetByUserQuery()
            {
                UserId    = userId,
                EventType = eventType
            };

            try
            {
                // Act
                var result = mediator.Send(query, ct).Result;

                // Assert
                Assert.AreEqual(expectedWebhooksCount, result.Count());
            }
            finally
            {
                foreach (var entity in entities)
                {
                    uow.WebhookRepository.Remove(entity);
                }
                uow.SaveChanges();
            }
        }
Ejemplo n.º 2
0
        /// <inheritdoc/>
        public async Task <EventModel> CreateAsync <T>(string userId, EventType eventType, T data, CancellationToken ct)
        {
            Ensure.ArgumentNotNullOrWhiteSpace(userId, nameof(userId));
            Ensure.ArgumentNotNull(data, nameof(data));
            Ensure.ArgumentNotNull(ct, nameof(ct));

            try
            {
                var command = new CreateEventCommand()
                {
                    UserId    = userId,
                    EventType = eventType,
                    Event     = data
                };

                var result = await mediator.Send(command, ct);

                var query = new GetByUserQuery()
                {
                    UserId    = userId,
                    EventType = eventType
                };

                // create a background job for each webhook
                var webhooks = await mediator.Send(query, ct);

                if (webhooks != null && webhooks.Count() > 0)
                {
                    foreach (var webhook in webhooks)
                    {
                        if (webhook != null)
                        {
                            backgroundService.EnqueueWebhookEvent(webhook.Id, result.Id);
                        }
                    }
                }

                return(result);
            }
            catch (Exception e)
            {
                logger.LogError(e, e.Message);
            }

            return(null);
        }
        public void GetObjectByUserQuery_Validation_Failures()
        {
            // Arrange
            var mediator = GetService <IMediator>();
            var ct       = new CancellationToken();
            var query    = new GetByUserQuery();

            // Act & Assert
            var ex = Assert.ThrowsAsync <ValidationException>(() => mediator.Send(query, ct));

            Assert.AreEqual("One or more validation failures have occurred.", ex.Message);
            Assert.IsNotNull(ex.Failures);
            Assert.AreEqual(1, ex.Failures.Count);
            var firstEntry = ex.Failures[nameof(query.UserId)];

            Assert.AreEqual(1, firstEntry.Length);
            Assert.AreEqual("'User Id' must not be empty.", firstEntry[0]);
        }