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



        }