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(); } }
/// <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]); }