Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
        }
Exemple #7
0
        /// <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);
        }