public async Task DeleteIndividualCustomerEmailAddress(DeleteIndividualCustomerEmailAddressViewModel viewModel)
        {
            logger.LogInformation("DeleteIndividualCustomerEmailAddress called");

            logger.LogInformation("Getting customer for {AccountNumber}", viewModel.AccountNumber);
            var customer = await customerApiClient.GetCustomerAsync <ApiClients.CustomerApi.Models.GetCustomer.StoreCustomer>(
                viewModel.AccountNumber
                );

            logger.LogInformation("Retrieved customer {@Customer}", customer);
            Guard.Against.Null(customer, nameof(customer));

            var customerToUpdate = mapper.Map <ApiClients.CustomerApi.Models.UpdateCustomer.IndividualCustomer>(customer);

            Guard.Against.Null(customerToUpdate, nameof(customerToUpdate));

            var personEmailAddress = customerToUpdate.Person.EmailAddresses.FirstOrDefault(c =>
                                                                                           c.EmailAddress == viewModel.EmailAddress
                                                                                           );

            Guard.Against.Null(personEmailAddress, nameof(personEmailAddress));

            customerToUpdate.Person.EmailAddresses.Remove(personEmailAddress);

            logger.LogInformation("Updating customer {@Customer}", customer);
            await customerApiClient.UpdateCustomerAsync(viewModel.AccountNumber, customerToUpdate);

            logger.LogInformation("Customer updated successfully");
        }
Exemplo n.º 2
0
            public async Task DeleteIndividualCustomerEmailAddressGet_ReturnsViewModel(
                [Frozen] Mock <ICustomerService> customerService,
                DeleteIndividualCustomerEmailAddressViewModel viewModel,
                [Greedy] CustomerController sut
                )
            {
                //Arrange
                customerService.Setup(x => x.GetIndividualCustomerEmailAddressForDelete(
                                          It.IsAny <string>(), It.IsAny <string>()
                                          ))
                .ReturnsAsync(viewModel);

                //Act
                var actionResult = await sut.DeleteIndividualCustomerEmailAddress(
                    viewModel.AccountNumber,
                    viewModel.EmailAddress
                    );

                //Assert
                var viewResult = actionResult.Should().BeAssignableTo <ViewResult>().Subject;

                viewResult.Model.Should().Be(viewModel);

                customerService.Verify(x => x.GetIndividualCustomerEmailAddressForDelete(
                                           It.IsAny <string>(), It.IsAny <string>())
                                       );
            }
Exemplo n.º 3
0
        public async Task <IActionResult> DeleteIndividualCustomerEmailAddress(DeleteIndividualCustomerEmailAddressViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                await customerService.DeleteIndividualCustomerEmailAddress(viewModel);

                return(RedirectToAction("Detail", new { viewModel.AccountNumber }));
            }

            return(View(viewModel));
        }
        public DeleteIndividualCustomerEmailAddressViewModel DeleteIndividualCustomerEmailAddress(string accountNumber, string customerName, string emailAddress)
        {
            logger.LogInformation("DeleteEmailAddress called");

            var vm = new DeleteIndividualCustomerEmailAddressViewModel
            {
                AccountNumber = accountNumber,
                CustomerName  = customerName,
                EmailAddress  = emailAddress
            };

            return(vm);
        }
Exemplo n.º 5
0
            public async Task DeleteIndividualCustomerEmailAddressPost_InvalidModelState_ReturnsViewModel(
                DeleteIndividualCustomerEmailAddressViewModel viewModel,
                [Greedy] CustomerController sut
                )
            {
                //Arrange
                sut.ModelState.AddModelError("AccountNumber", viewModel.AccountNumber);

                //Act
                var actionResult = await sut.DeleteIndividualCustomerEmailAddress(viewModel);

                //Assert
                var viewResult = actionResult.Should().BeAssignableTo <ViewResult>().Subject;

                viewResult.Model.Should().Be(viewModel);
            }
Exemplo n.º 6
0
            public async Task DeleteIndividualCustomerEmailAddressPost_ValidModelState_ReturnsRedirect(
                [Frozen] Mock <ICustomerService> customerService,
                DeleteIndividualCustomerEmailAddressViewModel viewModel,
                [Greedy] CustomerController sut
                )
            {
                //Act
                var actionResult = await sut.DeleteIndividualCustomerEmailAddress(viewModel);

                //Assert
                customerService.Verify(x => x.DeleteIndividualCustomerEmailAddress(
                                           It.IsAny <DeleteIndividualCustomerEmailAddressViewModel>()
                                           ));

                var redirectResult = actionResult.Should().BeAssignableTo <RedirectToActionResult>().Subject;

                redirectResult.ActionName.Should().Be("Detail");
                redirectResult.RouteValues.Count.Should().Be(1);
                redirectResult.RouteValues.ContainsKey("AccountNumber");
                redirectResult.RouteValues.Values.Contains(viewModel.AccountNumber);
            }