public async Task ThenSendsEmailToNotificationApi(
            SendNotificationCommand command,
            [Frozen] Mock <IBackgroundNotificationService> mockNotificationsApi,
            SendNotificationCommandHandler sut)
        {
            await sut.Handle(command);

            mockNotificationsApi.Verify(api => api.SendEmail(command.Email), Times.Once);
        }
        public async Task ThenItValidatesTheCommand(
            SendNotificationCommand command,
            [Frozen] Mock <IValidator <SendNotificationCommand> > mockValidator,
            SendNotificationCommandHandler sut)
        {
            await sut.Handle(command);

            mockValidator.Verify(validator => validator.Validate(command), Times.Once);
        }
Exemplo n.º 3
0
        public void Arrange()
        {
            _logger = new Mock <ILog>();

            _validator = new Mock <IValidator <SendNotificationCommand> >();
            _validator.Setup(x => x.Validate(It.IsAny <SendNotificationCommand>())).Returns(new ValidationResult());

            _notificationClient = new Mock <INotificationsApi>();

            _sendNotificationCommandHandler = new SendNotificationCommandHandler(_validator.Object, _logger.Object, _notificationClient.Object);
        }
        public void ThenThrowsInvalidRequestExceptionIfCommandInvalid(
            SendNotificationCommand command,
            string propertyName,
            ValidationResult validationResult,
            InvalidRequestException validationException,
            [Frozen] Mock <IValidator <SendNotificationCommand> > mockValidator,
            SendNotificationCommandHandler sut)
        {
            validationResult.AddError(propertyName);

            mockValidator
            .Setup(validator => validator.Validate(command))
            .Returns(validationResult);

            Func <Task> act = async() => { await sut.Handle(command); };

            act.ShouldThrowExactly <InvalidRequestException>()
            .Which.ErrorMessages.ContainsKey(propertyName).Should().BeTrue();
        }