예제 #1
0
        /// <summary>
        /// Gets the <see cref="EditAddressViewModel"/> to display the edit address From or Form result
        /// </summary>
        /// <param name="param">Builder params <see cref="GetEditAddressViewModelParam"/></param>
        /// <returns></returns>
        protected virtual async Task <EditAddressViewModel> GetEditAddressViewModel(GetEditAddressViewModelParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param");
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException("param.CultureInfo");
            }

            var countryParam = new RetrieveCountryParam
            {
                CultureInfo = param.CultureInfo ?? ComposerContext.CultureInfo,
                IsoCode     = ComposerContext.CountryCode
            };

            var viewModel = ViewModelMapper.MapTo <EditAddressViewModel>(param.Address, param.CultureInfo) ?? new EditAddressViewModel();

            viewModel.Status     = param.Status.HasValue ? param.Status.Value.ToString() : string.Empty;
            viewModel.ReturnUrl  = param.ReturnUrl;
            viewModel.IsUpdating = param.Address != null && param.IsUpdating;

            var country = await CountryService.RetrieveCountryAsync(countryParam).ConfigureAwait(false);

            if (country != null)
            {
                viewModel.PostalCodeRegex = country.PostalCodeRegex;
                viewModel.PhoneRegex      = country.PhoneRegex;
            }

            return(viewModel);
        }
        public void WHEN_CultureInfo_Is_Null_SHOULD_Throw_ArgumentException()
        {
            var param = new RetrieveCountryParam
            {
                IsoCode = GetRandom.String(32),
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => _repository.RetrieveRegions(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("CultureInfo");
        }
        public async Task WHEN_Passing_Valid_Parameters_SHOULD_Succeed()
        {
            var param = new RetrieveCountryParam
            {
                IsoCode     = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture()
            };

            // Act
            var result = await _repository.RetrieveRegions(param).ConfigureAwait(false);

            // Assert
            result.Should().NotBeNull();
        }
        public void WHEN_IsoCode_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string isoCode)
        {
            var param = new RetrieveCountryParam
            {
                IsoCode     = isoCode,
                CultureInfo = TestingExtensions.GetRandomCulture()
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => _repository.RetrieveRegions(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("IsoCode");
        }
        public void WHEN_CultureInfo_Is_Null_SHOULD_Throw_ArgumentException()
        {
            // Arrange
            _container.Use(ViewModelMapperFactory.Create());
            _container.Use(CountryRepositoryFactory.Create());
            var service = _container.CreateInstance <CountryService>();

            var param = new RetrieveCountryParam
            {
                IsoCode = GetRandom.String(32),
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => service.RetrieveRegionsAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
        }
        public void WHEN_IsoCode_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string isoCode)
        {
            //Arrange
            _container.Use(ViewModelMapperFactory.Create());
            _container.Use(CountryRepositoryFactory.Create());
            var service = _container.CreateInstance <CountryService>();
            var param   = new RetrieveCountryParam
            {
                IsoCode     = isoCode,
                CultureInfo = TestingExtensions.GetRandomCulture()
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => service.RetrieveRegionsAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
        }