Ejemplo n.º 1
0
        public async Task <IActionResult> AddContactDetailsForCustomer(Guid id, AddContactDetailsForCustomerCommand command)
        {
            if (!await _customerDataService.CustomerExists(id))
            {
                return(new NotFoundObjectResult("Customer"));
            }

            try {
                await _addContactDetailsForCustomerCommandHandler.Handle(command);

                return(NoContent());
            }
            catch (ValidationException exception) {
                return(BadRequest(exception.Errors));
            }
        }
        public async Task GIVEN_customer_with_id_GIVEN_valid_command_WHEN_add_contact_details_THEN_adds_contact_details_to_customer(Guid customerId, AddContactDetailsForCustomerCommand command)
        {
            A.CallTo(() => _customerDataService.CustomerExists(customerId)).Returns(true);

            var result = await _sut.AddContactDetailsForCustomer(customerId, command);

            Assert.IsType <NoContentResult>(result);
            A.CallTo(() => _addContactDetailsForCustomerCommandHandler.Handle(command)).MustHaveHappened();
        }
        public async Task GIVEN_customer_with_id_GIVEN_invalid_command_WHEN_add_contact_details_THEN_returns_BadRequest(Guid customerId, AddContactDetailsForCustomerCommand command)
        {
            A.CallTo(() => _customerDataService.CustomerExists(customerId)).Returns(true);
            var validationFailures = new [] { new ValidationFailure(nameof(AddContactDetailsForCustomerCommand.ContactInformation.Value), "required") };

            A.CallTo(() => _addContactDetailsForCustomerCommandHandler.Handle(command)).Throws(new ValidationException(validationFailures));

            var result = await _sut.AddContactDetailsForCustomer(customerId, command);

            var badRequestResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal(validationFailures, badRequestResult.Value);
        }
        public async Task GIVEN_no_customer_with_id_WHEN_add_contact_details_THEN_returns_NotFound(Guid customerId, AddContactDetailsForCustomerCommand command)
        {
            A.CallTo(() => _customerDataService.CustomerExists(customerId)).Returns(false);

            var result = await _sut.AddContactDetailsForCustomer(customerId, command);

            Assert.IsType <NotFoundObjectResult>(result);
        }