public void CreateUrlOptions_SetsOptionsOnDefaultOptions( SitecoreInfoUrlOptions options, bool addAspx, bool includeServer, bool encodeNames, bool shorten, bool siteResolving, bool displayName ) { //Arrange var defaultOptions = new UrlOptions(); defaultOptions.AddAspxExtension = false; defaultOptions.AlwaysIncludeServerUrl = false; defaultOptions.EncodeNames = false; defaultOptions.ShortenUrls = false; defaultOptions.SiteResolving = false; defaultOptions.UseDisplayName = false; var urlOptionsResolver = new UrlOptionsResolver(); //Act urlOptionsResolver.CreateUrlOptions(options, defaultOptions); //Assert Assert.AreEqual(addAspx, defaultOptions.AddAspxExtension); Assert.AreEqual(includeServer, defaultOptions.AlwaysIncludeServerUrl); Assert.AreEqual(encodeNames, defaultOptions.EncodeNames); Assert.AreEqual(shorten, defaultOptions.ShortenUrls); Assert.AreEqual(siteResolving, defaultOptions.SiteResolving); Assert.AreEqual(displayName, defaultOptions.UseDisplayName); }
/// <summary> /// Sets up the data mapper for a particular property /// </summary> /// <param name="args">The args.</param> public override void Setup(DataMapperResolverArgs args) { var scConfig = args.PropertyConfiguration as SitecoreInfoConfiguration; if (scConfig == null) { throw new NullReferenceException("Configuration has not been set."); } ReadOnly = scConfig.Type != SitecoreInfoType.DisplayName && scConfig.Type != SitecoreInfoType.Name; switch (scConfig.Type) { case SitecoreInfoType.ContentPath: _getValue = item => item.Paths.ContentPath; break; case SitecoreInfoType.DisplayName: _getValue = item => item[Global.Fields.DisplayName]; break; case SitecoreInfoType.FullPath: _getValue = item => item.Paths.FullPath; break; case SitecoreInfoType.Name: _getValue = item => item.Name; break; case SitecoreInfoType.Key: _getValue = item => item.Key; break; case SitecoreInfoType.MediaUrl: _getValue = item => { var mediaUrlOptions = _mediaUrlOptionsResolver.GetMediaUrlOptions(scConfig.MediaUrlOptions); var media = new MediaItem(item); return(MediaManager.GetMediaUrl(media, mediaUrlOptions)); }; break; case SitecoreInfoType.Path: _getValue = item => item.Paths.Path; break; case SitecoreInfoType.TemplateId: _getValue = item => { if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(ID)) { return(item.TemplateID); } return(item.TemplateID.Guid); }; break; case SitecoreInfoType.TemplateName: _getValue = item => item.TemplateName; break; case SitecoreInfoType.Url: _getValue = item => { var urlOptions = _urlOptionsResolver.CreateUrlOptions(scConfig.UrlOptions); if (UrlOptionsResolver.FlagCheck(scConfig.UrlOptions, SitecoreInfoUrlOptions.UseItemLanguage)) { urlOptions.Language = item.Language; } else { urlOptions.Language = null; } return(LinkManager.GetItemUrl(item, urlOptions)); }; break; case SitecoreInfoType.Version: _getValue = item => { if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(string)) { return(item.Version.Number.ToString()); } return(item.Version.Number); }; break; case SitecoreInfoType.Language: _getValue = item => { if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(string)) { return(item.Language.Name); } return(item.Language); }; break; case SitecoreInfoType.BaseTemplateIds: _getValue = item => { Template template = TemplateManager.GetTemplate(item.TemplateID, item.Database); if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(IEnumerable <ID>)) { return(template.GetBaseTemplates().Select(x => x.ID)); } return(template.GetBaseTemplates().Select(x => x.ID.Guid)); }; break; case SitecoreInfoType.ItemUri: _getValue = item => new ItemUri(item.ID, item.Language, item.Version, item.Database); break; #if (SC81 || SC82 || SC90) case SitecoreInfoType.OriginalLanguage: _getValue = item => item.OriginalLanguage; break; case SitecoreInfoType.OriginatorId: _getValue = item => item.OriginatorId; break; #endif default: throw new MapperException("SitecoreInfoType {0} not supported".Formatted(scConfig.Type)); } base.Setup(args); }