public async Task UpdateStore_ReturnsViewModel() { //Arrange var mockLogger = new Mock <ILogger <CustomerService> >(); var mockCustomerApi = new Mock <customerApi.ICustomerApiClient>(); mockCustomerApi.Setup(x => x.GetCustomerAsync <customerApi.Models.GetCustomer.StoreCustomer>(It.IsAny <string>())) .ReturnsAsync(new StoreCustomerBuilder() .WithTestValues() .Build() ); var mockSalesPersonApi = new Mock <salesPersonApi.ISalesPersonApiClient>(); var mockReferenceDataApi = new Mock <referenceDataApi.IReferenceDataApiClient>(); var svc = new CustomerService( mockLogger.Object, Mapper.CreateMapper(), mockCustomerApi.Object, mockReferenceDataApi.Object, mockSalesPersonApi.Object ); //Act var viewModel = new StoreCustomerViewModel { AccountNumber = "AW00000001" }; await svc.UpdateStore(viewModel); //Assert mockCustomerApi.Verify(x => x.UpdateCustomerAsync( It.IsAny <string>(), It.IsAny <customerApi.Models.UpdateCustomer.Customer>()) ); }
public async Task UpdateStore(StoreCustomerViewModel viewModel) { logger.LogInformation("UpdateStore called with view model {@ViewModel}", viewModel); Guard.Against.Null(viewModel, nameof(viewModel)); logger.LogInformation("Mapping CustomerViewModel to UpdateCustomerRequest"); var storeCustomer = mapper.Map <ApiClients.CustomerApi.Models.UpdateCustomer.StoreCustomer>(viewModel); logger.LogInformation("Calling Customer API to update customer"); await customerApiClient.UpdateCustomerAsync(viewModel.AccountNumber, storeCustomer); logger.LogInformation("Customer successfully updated"); }
public async Task UpdateStore(StoreCustomerViewModel viewModel) { logger.LogInformation("UpdateStore called with view model {@ViewModel}", viewModel); Guard.Against.Null(viewModel, nameof(viewModel)); logger.LogInformation("Mapping CustomerViewModel to UpdateCustomerRequest"); var storeCustomer = await customerApiClient.GetCustomerAsync <Web.Infrastructure.ApiClients.CustomerApi.Models.GetCustomer.StoreCustomer>( viewModel.AccountNumber ); var storeCustomerToUpdate = mapper.Map <Web.Infrastructure.ApiClients.CustomerApi.Models.UpdateCustomer.StoreCustomer>(storeCustomer); storeCustomerToUpdate.Name = viewModel.Name; storeCustomerToUpdate.Territory = viewModel.Territory; storeCustomerToUpdate.SalesPerson = viewModel.SalesPerson; logger.LogInformation("Calling Customer API to update customer"); await customerApiClient.UpdateCustomerAsync(viewModel.AccountNumber, storeCustomerToUpdate); logger.LogInformation("Customer successfully updated"); }