public async Task AddIndividualCustomerEmailAddress(EditEmailAddressViewModel viewModel) { logger.LogInformation("AddIndividualCustomerEmailAddress called"); logger.LogInformation("Getting customer for {AccountNumber}", viewModel.AccountNumber); var customer = await customerApiClient.GetCustomerAsync <ApiClients.CustomerApi.Models.GetCustomer.IndividualCustomer>( 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)); customerToUpdate.Person.EmailAddresses.Add(new ApiClients.CustomerApi.Models.UpdateCustomer.PersonEmailAddress { EmailAddress = viewModel.EmailAddress }); logger.LogInformation("Updating customer {@Customer}", customer); await customerApiClient.UpdateCustomerAsync(viewModel.AccountNumber, customerToUpdate); logger.LogInformation("Customer updated successfully"); }
public async Task AddContactEmailAddress(EditEmailAddressViewModel viewModel) { logger.LogInformation("AddEmailAddress 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.StoreCustomer>(customer); Guard.Against.Null(customerToUpdate, nameof(customerToUpdate)); var contact = customerToUpdate.Contacts.FirstOrDefault(c => c.ContactPerson.FullName() == viewModel.PersonName); Guard.Against.Null(contact, nameof(contact)); contact.ContactPerson.EmailAddresses.Add(new ApiClients.CustomerApi.Models.UpdateCustomer.PersonEmailAddress { EmailAddress = viewModel.EmailAddress }); logger.LogInformation("Updating customer {@Customer}", customer); await customerApiClient.UpdateCustomerAsync(viewModel.AccountNumber, customerToUpdate); logger.LogInformation("Customer updated successfully"); }
public void AddContactEmailAddressGet_ReturnsViewModel( [Frozen] Mock <ICustomerService> customerService, EditEmailAddressViewModel viewModel, [Greedy] CustomerController sut ) { //Arrange customerService.Setup(x => x.AddEmailAddress( It.IsAny <string>(), It.IsAny <string>() )) .Returns(viewModel); //Act var actionResult = sut.AddContactEmailAddress( viewModel.AccountNumber, viewModel.PersonName ); //Assert var viewResult = actionResult.Should().BeAssignableTo <ViewResult>().Subject; viewResult.Model.Should().Be(viewModel); customerService.Verify(x => x.AddEmailAddress( It.IsAny <string>(), It.IsAny <string>()) ); }
public async Task <IActionResult> AddContactEmailAddress(EditEmailAddressViewModel viewModel) { if (ModelState.IsValid) { await customerService.AddContactEmailAddress(viewModel); return(RedirectToAction("Detail", new { viewModel.AccountNumber })); } return(View(viewModel)); }
public EditEmailAddressViewModel AddEmailAddress(string accountNumber, string personName) { logger.LogInformation("AddEmailAddress called"); var vm = new EditEmailAddressViewModel { IsNewEmailAddress = true, AccountNumber = accountNumber, PersonName = personName }; return(vm); }
public async Task AddContactEmailAddress_OK() { //Arrange var mockLogger = new Mock <ILogger <CustomerService> >(); var mockCustomerApi = new Mock <customerApi.ICustomerApiClient>(); var mockReferenceDataApi = new Mock <referenceDataApi.IReferenceDataApiClient>(); var mockSalesPersonApi = new Mock <salesPersonApi.ISalesPersonApiClient>(); mockCustomerApi .Setup(x => x.GetCustomerAsync <customerApi.Models.GetCustomer.StoreCustomer>(It.IsAny <string>())) .ReturnsAsync(new StoreCustomerBuilder() .WithTestValues() .Build() ); var svc = new CustomerService( mockLogger.Object, Mapper.CreateMapper(), mockCustomerApi.Object, mockReferenceDataApi.Object, mockSalesPersonApi.Object ); //Act var viewModel = new EditEmailAddressViewModel { IsNewEmailAddress = true, AccountNumber = "AW00000001", PersonName = "Orlando N. Gee", EmailAddress = "*****@*****.**" }; await svc.AddContactEmailAddress(viewModel); //Assert mockCustomerApi.Verify(x => x.UpdateCustomerAsync( It.IsAny <string>(), It.IsAny <customerApi.Models.UpdateCustomer.Customer>() )); }
public async Task AddContactEmailAddressPost_InvalidModelState_ReturnsViewModel( [Frozen] Mock <ICustomerService> customerService, EditEmailAddressViewModel viewModel, [Greedy] CustomerController sut ) { //Arrange customerService.Setup(x => x.AddEmailAddress( It.IsAny <string>(), It.IsAny <string>() )) .Returns(viewModel); sut.ModelState.AddModelError("AccountNumber", viewModel.AccountNumber); //Act var actionResult = await sut.AddContactEmailAddress(viewModel); //Assert var viewResult = actionResult.Should().BeAssignableTo <ViewResult>().Subject; viewResult.Model.Should().Be(viewModel); }