public virtual string GetStoreUrl(GetStoreUrlParam parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (string.IsNullOrWhiteSpace(parameters.BaseUrl)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(parameters.BaseUrl)), nameof(parameters)); } if (string.IsNullOrWhiteSpace(parameters.StoreNumber)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(parameters.StoreNumber)), nameof(parameters)); } if (parameters.CultureInfo == null) { throw new ArgumentException(GetMessageOfNull(nameof(parameters.CultureInfo)), nameof(parameters)); } // Because of ConfigureAwait(false), we lost context here. // Therefore we need to re-initialize C1 context because getting the Url. using (ThreadDataManager.EnsureInitialize()) { var pagesConfiguration = SiteConfiguration.GetPagesConfiguration(parameters.CultureInfo, WebsiteContext.WebsiteId); if (pagesConfiguration == null) { return(null); } var baseUrl = PageService.GetPageUrl(pagesConfiguration.StoreListPageId, parameters.CultureInfo); var url = string.Format(UrlTemplate, baseUrl, UrlFormatter.Format(parameters.StoreName), parameters.StoreNumber); var urlBuilder = new UrlBuilder(url); return(urlBuilder.ToString()); } }
public virtual string GetStoreUrl(GetStoreUrlParam parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (string.IsNullOrWhiteSpace(parameters.BaseUrl)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(parameters.BaseUrl)), nameof(parameters)); } if (parameters.CultureInfo == null) { throw new ArgumentException(GetMessageOfNull(nameof(parameters.CultureInfo)), nameof(parameters)); } var storePath = string.Format(UrlTemplate, parameters.CultureInfo.Name, LocalizationProvider.GetLocalizedString(new GetLocalizedParam { Category = ResourceCategory, Key = "Stores_Url", CultureInfo = parameters.CultureInfo }), parameters.StoreNumber, UrlFormatter.Format(parameters.StoreName)); var uri = new Uri(storePath, UriKind.Relative); return(uri.ToString()); }
private void Assert(GetStoreUrlParam parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } if (string.IsNullOrWhiteSpace(parameters.BaseUrl)) { throw new ArgumentException(ArgumentNullMessageFormatter.FormatErrorMessage("BaseUrl"), "parameters"); } if (parameters.CultureInfo == null) { throw new ArgumentException(ArgumentNullMessageFormatter.FormatErrorMessage("CultureInfo"), "parameters"); } }
public virtual string GetStoreUrl(GetStoreUrlParam parameters) { Assert(parameters); var storePath = string.Format(UrlTemplate, parameters.CultureInfo.Name, LocalizationProvider.GetLocalizedString(new GetLocalizedParam { Category = ResourceCategory, Key = "Stores_Url", CultureInfo = parameters.CultureInfo }), parameters.StoreNumber, UrlFormatter.Format(parameters.StoreName)); var uri = new Uri(storePath, UriKind.Relative); return(uri.ToString()); }
public virtual string GetStoreUrl(GetStoreUrlParam parameters) { Assert(parameters); // Because of ConfigureAwait(false), we lost context here. // Therefore we need to re-initialize C1 context because getting the Url. using (ThreadDataManager.EnsureInitialize()) { var pagesConfiguration = SiteConfiguration.GetPagesConfiguration(parameters.CultureInfo, WebsiteContext.WebsiteId); if (pagesConfiguration == null) { return(null); } var baseUrl = PageService.GetPageUrl(pagesConfiguration.StoreListPageId, parameters.CultureInfo); var url = string.Format(UrlTemplate, baseUrl, UrlFormatter.Format(parameters.StoreName), parameters.StoreNumber); var urlBuilder = new UrlBuilder(url); return(urlBuilder.ToString()); } }
public void WHEN_invalid_parameter_SHOULD_throw_ArgumentException(string baseUrl, string storeNumber, string storeName, string culture) { //Arrange var sut = _container.CreateInstance <StoreUrlProvider>(); var cultureInfo = string.IsNullOrWhiteSpace(culture) ? null : CultureInfo.GetCultureInfo(culture); var sp = new GetStoreUrlParam { BaseUrl = baseUrl, CultureInfo = cultureInfo, StoreNumber = storeNumber, StoreName = storeName }; //Act var action = new Action(() => sut.GetStoreUrl(sp)); //Assert action.ShouldThrow <ArgumentException>(); }
public void WHEN_parameters_are_valid_SHOULD_return_expected_result(string baseUrl, string culture, string storeNumber, string storeName, string expectedUrl) { //Arrange var sut = _container.CreateInstance <StoreUrlProvider>(); var cultureInfo = string.IsNullOrWhiteSpace(culture) ? null : CultureInfo.GetCultureInfo(culture); var sp = new GetStoreUrlParam { BaseUrl = baseUrl, CultureInfo = cultureInfo, StoreNumber = storeNumber, StoreName = storeName }; //Act var relativeUrl = sut.GetStoreUrl(sp); var url = string.Concat(baseUrl, relativeUrl); //Assert url.Should().BeEquivalentTo(expectedUrl); }