示例#1
0
        ContentTypeGroupResponseItem GetItem(ContentTypeGroupDescriptor contentTypeGroup)
        {
            var    name = contentTypeGroup.Type.GetCustomAttribute <DisplayAttribute>()?.Name ?? contentTypeGroup.Type.Name;
            string pluralName;

            if (name.Contains(':') && !contentTypeGroup.Id.Contains(':'))
            {
                var nameSplit = name.Split(':');

                name       = nameSplit.First();
                pluralName = nameSplit.Last();
            }
            else
            {
                if (name.Length >= 2 && name.StartsWith('I') && char.IsUpper(name[1]))
                {
                    name = name.Substring(1);
                }

                name       = Humanizer.Humanize(name);
                pluralName = Pluralizer.Pluralize(name);
            }

            var item = new ContentTypeGroupResponseItem
            {
                Id                  = contentTypeGroup.Id,
                Name                = name,
                LowerCaseName       = name.Substring(0, 1).ToLower() + name.Substring(1),
                PluralName          = pluralName,
                LowerCasePluralName = pluralName.Substring(0, 1).ToLower() + pluralName.Substring(1),
                ContentTypes        = ContentTypeGroupMatcher.GetContentTypesFor(contentTypeGroup.Id).Select(t => t.Id).ToList().AsReadOnly(),
            };

            return(item);
        }
        public void FindsContentTypes()
        {
            var typeA        = new ContentTypeDescriptor("ipsum", typeof(ContentTypeA), "dolor");
            var typeB        = new ContentTypeDescriptor("sit", typeof(ContentTypeB), "amet");
            var typeProvider = Mock.Of <IContentTypeProvider>();

            Mock.Get(typeProvider).Setup(p => p.GetAll()).Returns(new List <ContentTypeDescriptor> {
                typeA, typeB
            });

            var groupA        = new ContentTypeGroupDescriptor("lorem", typeof(ContentTypeGroupA));
            var groupB        = new ContentTypeGroupDescriptor("adipiscing", typeof(ContentTypeGroupB));
            var groupProvider = Mock.Of <IContentTypeGroupProvider>();

            Mock.Get(groupProvider).Setup(p => p.Get("lorem")).Returns(groupA);
            Mock.Get(groupProvider).Setup(p => p.Get("adipiscing")).Returns(groupB);

            var sut = new ContentTypeGroupMatcher(typeProvider, groupProvider);

            Assert.Equal(new List <ContentTypeDescriptor> {
                typeA
            }, sut.GetContentTypesFor("lorem"));
            Assert.Equal(new List <ContentTypeDescriptor> {
                typeA, typeB
            }, sut.GetContentTypesFor("adipiscing"));
        }
        public void FindsContentTypeGroups()
        {
            var contentTypeA        = new ContentTypeDescriptor("ipsum", typeof(ContentTypeA), "dolor");
            var contentTypeProvider = Mock.Of <IContentTypeProvider>();

            Mock.Get(contentTypeProvider).Setup(p => p.Get("ipsum")).Returns(contentTypeA);

            var contentTypeGroupA        = new ContentTypeGroupDescriptor("lorem", typeof(ContentTypeGroupA));
            var contentTypeGroupProvider = Mock.Of <IContentTypeGroupProvider>();

            Mock.Get(contentTypeGroupProvider).Setup(p => p.GetAll()).Returns(new List <ContentTypeGroupDescriptor> {
                contentTypeGroupA
            });

            var result = new ContentTypeGroupMatcher(contentTypeProvider, contentTypeGroupProvider).GetContentTypeGroupsFor("ipsum");

            Assert.Equal(new List <ContentTypeGroupDescriptor> {
                contentTypeGroupA
            }, result);
        }