/// <summary> /// Gets the <see cref="AddressListViewModel"/> to display a list of addresses in MyAddresses Form or Form result /// </summary> /// <param name="param"></param> /// <param name="customer"></param> /// <param name="addresses"></param> /// <param name="regions"></param> /// <returns></returns> protected virtual AddressListViewModel GetAddressListViewModel( GetAddressListViewModelParam param, Customer customer, IEnumerable <Address> addresses, IEnumerable <RegionViewModel> regions) { var viewModel = ViewModelMapper.MapTo <AddressListViewModel>(customer, param.CultureInfo); viewModel.AddAddressUrl = param.AddAddressUrl; viewModel.Addresses = addresses.Select(address => { var addressVm = ViewModelMapper.MapTo <AddressListItemViewModel>(address, param.CultureInfo); var editUrlWithParam = UrlFormatter.AppendQueryString(param.EditAddressBaseUrl, new NameValueCollection { { "addressId", address.Id.ToString() } }); addressVm.UpdateAddressUrl = editUrlWithParam; var region = regions.FirstOrDefault(x => x.IsoCode == address.RegionCode); addressVm.RegionName = region != null ? region.Name : string.Empty; return(addressVm); }).ToList(); return(viewModel); }
public void WHEN_CustomerId_is_Null_SHOULD_throw_ArgumentException() { //Arrange var customerAddressViewService = _container.CreateInstance <CustomerAddressViewService>(); var param = new GetAddressListViewModelParam { Scope = GetRandom.String(32), CultureInfo = TestingExtensions.GetRandomCulture(), CountryCode = GetRandom.String(32) }; //Act var ex = Assert.ThrowsAsync <ArgumentException>(() => customerAddressViewService.GetAddressListViewModelAsync(param)); //Assert ex.Message.Should().ContainEquivalentOf("CustomerId"); }
public async Task WHEN_passing_valid_arguments_SHOULD_create_viewmodel() { //Arrange var address = MockAddressFactory.CreateRandom(); var customer = MockCustomerFactory.CreateRandom(); customer.Addresses = new List <Address> { address }; var mockedCustomerAddressRepository = new Mock <ICustomerAddressRepository>(); mockedCustomerAddressRepository.Setup(r => r.GetCustomerAddressesAsync(It.IsAny <Guid>(), It.IsAny <string>())) .ReturnsAsync(new List <Address> { address }); _container.Use(mockedCustomerAddressRepository); var mockedCustomerRepository = new Mock <ICustomerRepository>(); mockedCustomerRepository.Setup(r => r.GetCustomerByIdAsync(It.IsAny <GetCustomerByIdParam>())) .ReturnsAsync(customer); _container.Use(mockedCustomerRepository); var customerViewService = _container.CreateInstance <CustomerAddressViewService>(); //Act var param = new GetAddressListViewModelParam { Scope = GetRandom.String(32), CustomerId = Guid.NewGuid(), CultureInfo = TestingExtensions.GetRandomCulture(), AddAddressUrl = GetRandom.String(32), EditAddressBaseUrl = GetRandom.String(32), CountryCode = GetRandom.String(32) }; var viewModel = await customerViewService.GetAddressListViewModelAsync(param); //Assert viewModel.Should().NotBeNull("This view model should never be null"); viewModel.AddAddressUrl.ShouldBeEquivalentTo(param.AddAddressUrl); viewModel.Addresses.First().AddressName.ShouldBeEquivalentTo(address.AddressName); }
public void WHEN_CultureInfo_is_Empty_SHOULD_throw_ArgumentException(CultureInfo cultureInfo) { //Arrange var customerAddressViewService = _container.CreateInstance <CustomerAddressViewService>(); var param = new GetAddressListViewModelParam { Scope = GetRandom.String(32), CustomerId = Guid.NewGuid(), AddAddressUrl = GetRandom.String(32), EditAddressBaseUrl = GetRandom.String(32), CultureInfo = cultureInfo, CountryCode = GetRandom.String(32) }; //Act var ex = Assert.ThrowsAsync <ArgumentException>(() => customerAddressViewService.GetAddressListViewModelAsync(param)); //Assert ex.Message.Should().ContainEquivalentOf("CultureInfo"); }
/// <summary> /// Gets the <see cref="AddressListViewModel"/> to display a list of addresses in MyAddresses Form or Form result /// </summary> /// <param name="param"></param> /// <param name="customer"></param> /// <param name="addresses"></param> /// <param name="regions"></param> /// <returns></returns> protected virtual AddressListViewModel GetAddressListViewModel( GetAddressListViewModelParam param, Customer customer, IEnumerable <Address> addresses, IEnumerable <RegionViewModel> regions) { var viewModel = ViewModelMapper.MapTo <AddressListViewModel>(customer, param.CultureInfo); var urlParam = new BaseUrlParameter { CultureInfo = ComposerContext.CultureInfo }; var addAddressUrl = MyAccountUrlProvider.GetAddAddressUrl(urlParam); var editAddressBaseUrl = MyAccountUrlProvider.GetUpdateAddressBaseUrl(urlParam); viewModel.AddAddressUrl = addAddressUrl; viewModel.Addresses = addresses.Select(address => { var addressVm = ViewModelMapper.MapTo <AddressListItemViewModel>(address, param.CultureInfo); if (!string.IsNullOrWhiteSpace(editAddressBaseUrl)) { var editUrlWithParam = UrlFormatter.AppendQueryString(editAddressBaseUrl, new NameValueCollection { { "addressId", address.Id.ToString() } }); addressVm.UpdateAddressUrl = editUrlWithParam; } var region = regions.FirstOrDefault(x => x.IsoCode == address.RegionCode); addressVm.RegionName = region != null ? region.Name : string.Empty; return(addressVm); }).ToList(); return(viewModel); }
/// <summary> /// Gets the <see cref="AddressListViewModel"/> to display a list of addresses in MyAddresses Form or Form result /// </summary> /// <param name="param">Builder params <see cref="GetAddressListViewModelParam"/></param> /// <returns></returns> public virtual async Task <AddressListViewModel> GetAddressListViewModelAsync(GetAddressListViewModelParam param) { if (param == null) { throw new ArgumentNullException(nameof(param)); } if (param.CultureInfo == null) { throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param)); } if (param.CustomerId == Guid.Empty) { throw new ArgumentException(GetMessageOfEmpty(nameof(param.CustomerId)), nameof(param)); } if (string.IsNullOrWhiteSpace(param.Scope)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param)); } if (string.IsNullOrWhiteSpace(param.CountryCode)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.CountryCode)), nameof(param)); } var customer = await CustomerRepository.GetCustomerByIdAsync(new GetCustomerByIdParam { CultureInfo = param.CultureInfo, CustomerId = param.CustomerId, Scope = param.Scope, IncludeAddresses = true, }).ConfigureAwait(false); IList <Address> addresses = customer.Addresses ?? await CustomerAddressRepository.GetCustomerAddressesAsync(customer.Id, param.Scope).ConfigureAwait(false); var regions = await CountryService.RetrieveRegionsAsync(new RetrieveCountryParam { IsoCode = param.CountryCode, CultureInfo = param.CultureInfo, }).ConfigureAwait(false); var viewModel = GetAddressListViewModel(param, customer, addresses, regions); return(viewModel); }
/// <summary> /// Gets the <see cref="AddressListViewModel"/> to display a list of addresses in MyAddresses Form or Form result /// </summary> /// <param name="param">Builder params <see cref="GetAddressListViewModelParam"/></param> /// <returns></returns> public virtual async Task <AddressListViewModel> GetAddressListViewModelAsync(GetAddressListViewModelParam param) { if (param == null) { throw new ArgumentNullException("param"); } if (param.CultureInfo == null) { throw new ArgumentException("param.CultureInfo"); } if (param.CustomerId == Guid.Empty) { throw new ArgumentException("param.CustomerId"); } if (string.IsNullOrWhiteSpace(param.Scope)) { throw new ArgumentException("param.Scope"); } if (string.IsNullOrWhiteSpace(param.AddAddressUrl)) { throw new ArgumentException("param.AddAddressUrl"); } if (string.IsNullOrWhiteSpace(param.EditAddressBaseUrl)) { throw new ArgumentException("param.EditAddressBaseUrl"); } if (string.IsNullOrWhiteSpace(param.CountryCode)) { throw new ArgumentException("param.CountryCode"); } var customer = await CustomerRepository.GetCustomerByIdAsync(new GetCustomerByIdParam { CultureInfo = param.CultureInfo, CustomerId = param.CustomerId, Scope = param.Scope }).ConfigureAwait(false); IList <Address> addresses = customer.Addresses; if (addresses == null) { addresses = await CustomerAddressRepository.GetCustomerAddressesAsync( customer.Id, param.Scope).ConfigureAwait(false); } var regions = await CountryService.RetrieveRegionsAsync(new RetrieveCountryParam { IsoCode = param.CountryCode, CultureInfo = param.CultureInfo, }).ConfigureAwait(false); var viewModel = GetAddressListViewModel(param, customer, addresses, regions); return(viewModel); }