public void should_throw_not_found_exception_when_id_does_not_exist()
        {
            var command =
                new UpdateNotificationDeliveryStatusCommand(Guid.NewGuid(), "1234", DeliveryStatus.Delivered);

            Assert.ThrowsAsync <NotificationNotFoundException>(() => _handler.Handle(command));
        }
        public async Task should_throw_mismatch_id_exception_when_id_and_external_id_do_not_match()
        {
            var notification = await TestDataManager.SeedSendingNotification();

            _notifications.Add(notification);

            var command =
                new UpdateNotificationDeliveryStatusCommand(notification.Id, "1234", DeliveryStatus.Delivered);

            Assert.ThrowsAsync <NotificationIdMismatchException>(() => _handler.Handle(command));
        }
示例#3
0
        public async Task <IActionResult> HandleCallbackAsync(NotificationCallbackRequest notificationCallbackRequest)
        {
            var notificationId = notificationCallbackRequest.ReferenceAsGuid();
            var deliveryStatus = notificationCallbackRequest.DeliveryStatusAsEnum();
            var externalId     = notificationCallbackRequest.Id;
            var command        = new UpdateNotificationDeliveryStatusCommand(notificationId, externalId, deliveryStatus);

            await _commandHandler.Handle(command);

            return(Ok());
        }
        public async Task should_update_delivery_status_for_notification()
        {
            // Arrange
            var notification = await TestDataManager.SeedSendingNotification();

            _notifications.Add(notification);
            const DeliveryStatus deliveryStatus = DeliveryStatus.Delivered;
            var command = new UpdateNotificationDeliveryStatusCommand(notification.Id, notification.ExternalId, deliveryStatus);

            // Act
            await _handler.Handle(command);

            // Assert
            await using var db = new NotificationsApiDbContext(NotifyBookingsDbContextOptions);
            var updatedNotification = await db.Notifications.SingleOrDefaultAsync(x => x.Id == notification.Id);

            updatedNotification.Should().NotBeNull();
            updatedNotification.DeliveryStatus.Should().Be(deliveryStatus);
        }