public async Task Content_Not_Published()
    {
        var contentType = ContentTypeBuilder.CreateBasicContentType();
        var content     = ContentBuilder.CreateBasicContent(contentType);

        content.Id   = 1046; // FIXME: we are using this ID only because it's built into the test XML published cache
        content.Path = "-1,1046";

        var umbracoContextAccessor = GetUmbracoContextAccessor("http://localhost:8000");
        var publishedRouter        = CreatePublishedRouter(
            umbracoContextAccessor,
            new[] { new ContentFinderByUrl(Mock.Of <ILogger <ContentFinderByUrl> >(), umbracoContextAccessor) });
        var umbracoContext = umbracoContextAccessor.GetRequiredUmbracoContext();

        var urlProvider = GetUrlProvider(umbracoContextAccessor, _requestHandlerSettings, _webRoutingSettings, out var uriUtility);

        var urls = (await content.GetContentUrlsAsync(
                        publishedRouter,
                        umbracoContext,
                        GetLangService("en-US", "fr-FR"),
                        GetTextService(),
                        Mock.Of <IContentService>(),
                        VariationContextAccessor,
                        Mock.Of <ILogger <IContent> >(),
                        uriUtility,
                        urlProvider)).ToList();

        Assert.AreEqual(1, urls.Count);
        Assert.AreEqual("content/itemNotPublished", urls[0].Text);
        Assert.IsFalse(urls[0].IsUrl);
    }
Example #2
0
        public void GivenIndexingDocument_WhenRichTextPropertyData_CanStoreImmenseFields()
        {
            using (GetSynchronousContentIndex(false, out UmbracoContentIndex index, out _, out ContentValueSetBuilder contentValueSetBuilder, null))
            {
                index.CreateIndex();

                ContentType contentType = ContentTypeBuilder.CreateBasicContentType();
                contentType.AddPropertyType(new PropertyType(TestHelper.ShortStringHelper, "test", ValueStorageType.Ntext)
                {
                    Alias = "rte",
                    Name  = "RichText",
                    PropertyEditorAlias = Cms.Core.Constants.PropertyEditors.Aliases.TinyMce
                });

                Content content = ContentBuilder.CreateBasicContent(contentType);
                content.Id   = 555;
                content.Path = "-1,555";

                var luceneStringFieldMaxLength = ByteBlockPool.BYTE_BLOCK_SIZE - 2;
                var faker       = new Faker();
                var immenseText = faker.Random.String(length: luceneStringFieldMaxLength + 10);

                content.Properties["rte"].SetValue(immenseText);

                IEnumerable <ValueSet> valueSet = contentValueSetBuilder.GetValueSets(content);
                index.IndexItems(valueSet);

                ISearchResults results = index.Searcher.CreateQuery().Id(555).Execute();
                ISearchResult  result  = results.First();

                var key = $"{UmbracoExamineFieldNames.RawFieldPrefix}rte";
                Assert.IsTrue(result.Values.ContainsKey(key));
                Assert.Greater(result.Values[key].Length, luceneStringFieldMaxLength);
            }
        }
Example #3
0
        public void LastIn()
        {
            DoSaveForContent += OnDoThingFail;

            var now         = DateTime.Now;
            var contentType = ContentTypeBuilder.CreateBasicContentType();
            var content1    = ContentBuilder.CreateBasicContent(contentType);

            content1.Id         = 123;
            content1.UpdateDate = now.AddMinutes(1);
            var content2 = ContentBuilder.CreateBasicContent(contentType);

            content2.Id         = 123;
            content2.UpdateDate = now.AddMinutes(2);
            var content3 = ContentBuilder.CreateBasicContent(contentType);

            content3.Id         = 123;
            content3.UpdateDate = now.AddMinutes(3);

            var scopeProvider = GetScopeProvider(NullLoggerFactory.Instance);

            using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher()))
            {
                scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs <IContent>(content1));
                scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs <IContent>(content2));
                scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs <IContent>(content3));

                // events have been queued
                var events = scope.Events.GetEvents(EventDefinitionFilter.LastIn).ToArray();
                Assert.AreEqual(1, events.Length);
                Assert.AreEqual(content3, ((SaveEventArgs <IContent>)events[0].Args).SavedEntities.First());
                Assert.IsTrue(object.ReferenceEquals(content3, ((SaveEventArgs <IContent>)events[0].Args).SavedEntities.First()));
                Assert.AreEqual(content3.UpdateDate, ((SaveEventArgs <IContent>)events[0].Args).SavedEntities.First().UpdateDate);
            }
        }
Example #4
0
        public void GetAvailableCompositeContentTypes_Include_Indirect_Composed_Types()
        {
            ContentType ct1 = ContentTypeBuilder.CreateBasicContentType("ct1", "CT1");
            ContentType ct2 = ContentTypeBuilder.CreateBasicContentType("ct2", "CT2");
            ContentType ct3 = ContentTypeBuilder.CreateBasicContentType("ct3", "CT3");
            ContentType ct4 = ContentTypeBuilder.CreateBasicContentType("ct4", "CT4");

            ct1.Id = 1;
            ct2.Id = 2;
            ct3.Id = 3;
            ct4.Id = 4;

            ct1.AddContentType(ct3);    // ct3 is direct to ct1
            ct3.AddContentType(ct4);    // ct4 is indirect to ct1

            var service = new Mock <IContentTypeService>();

            IContentTypeComposition[] availableTypes = service.Object.GetAvailableCompositeContentTypes(
                ct1,
                new[] { ct1, ct2, ct3 })
                                                       .Results.Where(x => x.Allowed).Select(x => x.Composition).ToArray();

            Assert.AreEqual(3, availableTypes.Count());
            Assert.AreEqual(ct2.Id, availableTypes.ElementAt(0).Id);
            Assert.AreEqual(ct3.Id, availableTypes.ElementAt(1).Id);
            Assert.AreEqual(ct4.Id, availableTypes.ElementAt(2).Id);
        }
        public void Replacing_History_Cleanup_Registers_As_Dirty()
        {
            var contentType = ContentTypeBuilder.CreateBasicContentType();

            Assert.IsFalse(contentType.IsDirty());

            contentType.HistoryCleanup = new HistoryCleanup();

            Assert.IsTrue(contentType.IsDirty());
            Assert.IsTrue(contentType.IsPropertyDirty(nameof(contentType.HistoryCleanup)));
        }
        public void Changing_Keep_latest_Makes_ContentType_Dirty()
        {
            var contentType = ContentTypeBuilder.CreateBasicContentType();

            Assert.IsFalse(contentType.IsDirty());

            var newValue = 2;

            contentType.HistoryCleanup.KeepLatestVersionPerDayForDays = newValue;
            Assert.IsTrue(contentType.IsDirty());
            Assert.AreEqual(newValue, contentType.HistoryCleanup.KeepLatestVersionPerDayForDays);
        }
        public void Changing_Prevent_Cleanup_Makes_ContentType_Dirty()
        {
            var contentType = ContentTypeBuilder.CreateBasicContentType();

            Assert.IsFalse(contentType.IsDirty());

            var newValue = true;

            contentType.HistoryCleanup.PreventCleanup = newValue;
            Assert.IsTrue(contentType.IsDirty());
            Assert.AreEqual(newValue, contentType.HistoryCleanup.PreventCleanup);
        }
        public void GivenScope_WhenNotificationsSuppressed_ThenNotificationsDoNotExecute()
        {
            using IScope scope  = ScopeProvider.CreateScope(autoComplete: true);
            using IDisposable _ = scope.Notifications.Suppress();

            ContentType contentType = ContentTypeBuilder.CreateBasicContentType();

            ContentTypeService.Save(contentType);
            Content content = ContentBuilder.CreateBasicContent(contentType);

            ContentService.Save(content);
        }
Example #9
0
    public void GetAvailableCompositeContentTypes_No_Overlap_By_Content_Type_And_Property_Type_Alias()
    {
        void AddPropType(string alias, IContentType ct)
        {
            var contentCollection = new PropertyTypeCollection(true)
            {
                new PropertyType(ShortStringHelper, Constants.PropertyEditors.Aliases.TextBox, ValueStorageType.Ntext)
                {
                    Alias       = alias,
                    Name        = "Title",
                    Description = string.Empty,
                    Mandatory   = false,
                    SortOrder   = 1,
                    DataTypeId  = -88,
                },
            };
            var pg = new PropertyGroup(contentCollection)
            {
                Alias = "test", Name = "test", SortOrder = 1
            };

            ct.PropertyGroups.Add(pg);
        }

        var ct1 = ContentTypeBuilder.CreateBasicContentType("ct1", "CT1");
        var ct2 = ContentTypeBuilder.CreateBasicContentType("ct2", "CT2");

        AddPropType("title", ct2);
        var ct3 = ContentTypeBuilder.CreateBasicContentType("ct3", "CT3");

        AddPropType("title", ct3);
        var ct4 = ContentTypeBuilder.CreateBasicContentType("ct4", "CT4");
        var ct5 = ContentTypeBuilder.CreateBasicContentType("ct5", "CT5");

        AddPropType("blah", ct5);
        ct1.Id = 1;
        ct2.Id = 2;
        ct3.Id = 3;
        ct4.Id = 4;
        ct5.Id = 4;

        var service = new Mock <IContentTypeService>();

        var availableTypes = service.Object.GetAvailableCompositeContentTypes(
            ct1,
            new[] { ct1, ct2, ct3, ct4, ct5 },
            new[] { ct2.Alias },
            new[] { "blah" })
                             .Results.Where(x => x.Allowed).Select(x => x.Composition).ToArray();

        Assert.AreEqual(1, availableTypes.Count());
        Assert.AreEqual(ct4.Id, availableTypes.ElementAt(0).Id);
    }
Example #10
0
        private void CreateTestDataForPagingTests(out List <IContent> createdContent, out List <IMember> createdMembers, out List <IMedia> createdMedia)
        {
            // Create content
            createdContent = new List <IContent>();
            ContentType contentType = ContentTypeBuilder.CreateBasicContentType("blah");

            ContentTypeService.Save(contentType);
            for (int i = 0; i < 3; i++)
            {
                Content c1 = ContentBuilder.CreateBasicContent(contentType);
                ContentService.Save(c1);
                createdContent.Add(c1);
            }

            // Create media
            createdMedia = new List <IMedia>();
            MediaType imageType = MediaTypeBuilder.CreateImageMediaType("myImage");

            MediaTypeService.Save(imageType);
            for (int i = 0; i < 3; i++)
            {
                Media c1 = MediaBuilder.CreateMediaImage(imageType, -1);
                MediaService.Save(c1);
                createdMedia.Add(c1);
            }

            // Create members
            MemberType memberType = MemberTypeBuilder.CreateSimpleMemberType("simple");

            MemberTypeService.Save(memberType);
            createdMembers = MemberBuilder.CreateSimpleMembers(memberType, 3).ToList();
            GetMemberService().Save(createdMembers);

            IRelationType relType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias);

            // Relate content to media
            foreach (IContent content in createdContent)
            {
                foreach (IMedia media in createdMedia)
                {
                    RelationService.Relate(content.Id, media.Id, relType);
                }
            }

            // Relate members to media
            foreach (IMember member in createdMembers)
            {
                foreach (IMedia media in createdMedia)
                {
                    RelationService.Relate(member.Id, media.Id, relType);
                }
            }
        }
Example #11
0
    public void Get_Paged_Relations_By_Relation_Type()
    {
        // Create content
        var createdContent = new List <IContent>();
        var contentType    = ContentTypeBuilder.CreateBasicContentType("blah");

        ContentTypeService.Save(contentType);
        for (var i = 0; i < 3; i++)
        {
            var c1 = ContentBuilder.CreateBasicContent(contentType);
            ContentService.Save(c1);
            createdContent.Add(c1);
        }

        // Create media
        var createdMedia = new List <IMedia>();
        var imageType    = MediaTypeBuilder.CreateImageMediaType("myImage");

        MediaTypeService.Save(imageType);
        for (var i = 0; i < 3; i++)
        {
            var c1 = MediaBuilder.CreateMediaImage(imageType, -1);
            MediaService.Save(c1);
            createdMedia.Add(c1);
        }

        var relType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias);

        // Relate content to media
        foreach (var content in createdContent)
        {
            foreach (var media in createdMedia)
            {
                RelationService.Relate(content.Id, media.Id, relType);
            }
        }

        var paged = RelationService.GetPagedByRelationTypeId(relType.Id, 0, 4, out var totalRecs).ToList();

        Assert.AreEqual(9, totalRecs);
        Assert.AreEqual(4, paged.Count);

        // next page
        paged.AddRange(RelationService.GetPagedByRelationTypeId(relType.Id, 1, 4, out totalRecs));

        Assert.AreEqual(9, totalRecs);
        Assert.AreEqual(8, paged.Count);

        Assert.IsTrue(createdContent.Select(x => x.Id).ContainsAll(paged.Select(x => x.ParentId)));
        Assert.IsTrue(createdMedia.Select(x => x.Id).ContainsAll(paged.Select(x => x.ChildId)));
    }
        public void Old_History_Cleanup_Reference_Doesnt_Make_Content_Type_Dirty()
        {
            var contentType       = ContentTypeBuilder.CreateBasicContentType();
            var oldHistoryCleanup = contentType.HistoryCleanup;

            contentType.HistoryCleanup = new HistoryCleanup();
            contentType.ResetDirtyProperties();
            contentType.ResetWereDirtyProperties();

            oldHistoryCleanup.KeepAllVersionsNewerThanDays = 2;

            Assert.IsFalse(contentType.IsDirty());
            Assert.IsFalse(contentType.WasDirty());
        }
Example #13
0
        public void SupersededEvents()
        {
            DoSaveForContent   += OnDoThingFail;
            DoDeleteForContent += OnDoThingFail;
            DoForTestArgs      += OnDoThingFail;
            DoForTestArgs2     += OnDoThingFail;

            var contentType = ContentTypeBuilder.CreateBasicContentType();

            var content1 = ContentBuilder.CreateBasicContent(contentType);

            content1.Id = 123;

            var content2 = ContentBuilder.CreateBasicContent(contentType);

            content2.Id = 456;

            var content3 = ContentBuilder.CreateBasicContent(contentType);

            content3.Id = 789;

            var scopeProvider = GetScopeProvider(NullLoggerFactory.Instance);

            using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher()))
            {
                //content1 will be filtered from the args
                scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs <IContent>(new[] { content1, content3 }));
                scope.Events.Dispatch(DoDeleteForContent, this, new DeleteEventArgs <IContent>(content1), "DoDeleteForContent");
                scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs <IContent>(content2));
                //this entire event will be filtered
                scope.Events.Dispatch(DoForTestArgs, this, new TestEventArgs(content1));
                scope.Events.Dispatch(DoForTestArgs2, this, new TestEventArgs2(content1));

                // events have been queued
                var events = scope.Events.GetEvents(EventDefinitionFilter.All).ToArray();
                Assert.AreEqual(4, events.Length);

                Assert.AreEqual(typeof(SaveEventArgs <IContent>), events[0].Args.GetType());
                Assert.AreEqual(1, ((SaveEventArgs <IContent>)events[0].Args).SavedEntities.Count());
                Assert.AreEqual(content3.Id, ((SaveEventArgs <IContent>)events[0].Args).SavedEntities.First().Id);

                Assert.AreEqual(typeof(DeleteEventArgs <IContent>), events[1].Args.GetType());
                Assert.AreEqual(content1.Id, ((DeleteEventArgs <IContent>)events[1].Args).DeletedEntities.First().Id);

                Assert.AreEqual(typeof(SaveEventArgs <IContent>), events[2].Args.GetType());
                Assert.AreEqual(content2.Id, ((SaveEventArgs <IContent>)events[2].Args).SavedEntities.First().Id);

                Assert.AreEqual(typeof(TestEventArgs2), events[3].Args.GetType());
            }
        }
Example #14
0
    public void GivenNestedScope_WhenOuterNotificationsSuppressed_ThenNotificationsDoNotExecute()
    {
        using (var parentScope = ScopeProvider.CreateScope(autoComplete: true))
        {
            using var _ = parentScope.Notifications.Suppress();

            using (var childScope = ScopeProvider.CreateScope(autoComplete: true))
            {
                var contentType = ContentTypeBuilder.CreateBasicContentType();
                ContentTypeService.Save(contentType);
                var content = ContentBuilder.CreateBasicContent(contentType);
                ContentService.Save(content);
            }
        }
    }
    public async Task Invariant_Child_Content_Published_No_Domains()
    {
        var contentType = ContentTypeBuilder.CreateBasicContentType();
        var parent      = ContentBuilder.CreateBasicContent(contentType);

        parent.Id        = 1046; // FIXME: we are using this ID only because it's built into the test XML published cache
        parent.Name      = "home";
        parent.Path      = "-1,1046";
        parent.Published = true;
        var child = ContentBuilder.CreateBasicContent(contentType);

        child.Name      = "sub1";
        child.Id        = 1173; // FIXME: we are using this ID only because it's built into the test XML published cache
        child.Path      = "-1,1046,1173";
        child.Published = true;

        var umbracoContextAccessor = GetUmbracoContextAccessor("http://localhost:8000");
        var publishedRouter        = CreatePublishedRouter(
            umbracoContextAccessor,
            new[] { new ContentFinderByUrl(Mock.Of <ILogger <ContentFinderByUrl> >(), umbracoContextAccessor) });
        var umbracoContext = umbracoContextAccessor.GetRequiredUmbracoContext();

        var localizationService = GetLangService("en-US", "fr-FR");
        var urlProvider         = GetUrlProvider(umbracoContextAccessor, _requestHandlerSettings, _webRoutingSettings, out var uriUtility);

        var urls = (await child.GetContentUrlsAsync(
                        publishedRouter,
                        umbracoContext,
                        localizationService,
                        GetTextService(),
                        Mock.Of <IContentService>(),
                        VariationContextAccessor,
                        Mock.Of <ILogger <IContent> >(),
                        uriUtility,
                        urlProvider)).ToList();

        Assert.AreEqual(2, urls.Count);

        var enUrl = urls.First(x => x.Culture == "en-US");

        Assert.AreEqual("/home/sub1/", enUrl.Text);
        Assert.AreEqual("en-US", enUrl.Culture);
        Assert.IsTrue(enUrl.IsUrl);

        var frUrl = urls.First(x => x.Culture == "fr-FR");

        Assert.IsFalse(frUrl.IsUrl);
    }
Example #16
0
        public void Can_Move()
        {
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                ContentTypeRepository repository = ContentTypeRepository;
                var container1 = new EntityContainer(Constants.ObjectTypes.DocumentType)
                {
                    Name = "blah1"
                };
                DocumentTypeContainerRepository.Save(container1);

                var container2 = new EntityContainer(Constants.ObjectTypes.DocumentType)
                {
                    Name = "blah2", ParentId = container1.Id
                };
                DocumentTypeContainerRepository.Save(container2);

                var contentType = (IContentType)ContentTypeBuilder.CreateBasicContentType("asdfasdf");
                contentType.ParentId = container2.Id;
                repository.Save(contentType);

                // create a
                var contentType2 = (IContentType) new ContentType(ShortStringHelper, contentType, "hello")
                {
                    Name = "Blahasdfsadf"
                };
                contentType.ParentId = contentType.Id;
                repository.Save(contentType2);

                global::Umbraco.Cms.Core.Events.MoveEventInfo <IContentType>[] result = repository.Move(contentType, container1).ToArray();

                Assert.AreEqual(2, result.Count());

                // re-get
                contentType  = repository.Get(contentType.Id);
                contentType2 = repository.Get(contentType2.Id);

                Assert.AreEqual(container1.Id, contentType.ParentId);
                Assert.AreNotEqual(result.Single(x => x.Entity.Id == contentType.Id).OriginalPath, contentType.Path);
                Assert.AreNotEqual(result.Single(x => x.Entity.Id == contentType2.Id).OriginalPath, contentType2.Path);
            }
        }
Example #17
0
    private int CreateTestData(string isoName, out ContentType ct)
    {
        var provider = ScopeProvider;

        using (var scope = provider.CreateScope())
        {
            var lang = new Language(isoName, isoName);
            LanguageRepository.Save(lang);

            ct = ContentTypeBuilder.CreateBasicContentType("test", "Test");
            ContentTypeRepository.Save(ct);
            var content = new Content("test", -1, ct)
            {
                CreatorId = 0, WriterId = 0
            };
            DocumentRepository.Save(content);
            scope.Complete();
            return(content.Id);
        }
    }
Example #18
0
        public void GetAvailableCompositeContentTypes_No_Results_If_Already_A_Composition()
        {
            ContentType ct1 = ContentTypeBuilder.CreateBasicContentType("ct1", "CT1");
            ContentType ct2 = ContentTypeBuilder.CreateBasicContentType("ct2", "CT2");
            ContentType ct3 = ContentTypeBuilder.CreateBasicContentType("ct3", "CT3");

            ct1.Id = 1;
            ct2.Id = 2;
            ct3.Id = 3;

            ct2.AddContentType(ct1);

            var service = new Mock <IContentTypeService>();

            System.Collections.Generic.IEnumerable <ContentTypeAvailableCompositionsResult> availableTypes = service.Object.GetAvailableCompositeContentTypes(
                ct1,
                new[] { ct1, ct2, ct3 }).Results;

            Assert.AreEqual(0, availableTypes.Count());
        }
Example #19
0
    public void GetAvailableCompositeContentTypes_No_Results_If_Already_A_Composition_By_Parent()
    {
        var ct1 = ContentTypeBuilder.CreateBasicContentType("ct1", "CT1");

        ct1.Id = 1;
        var ct2 = ContentTypeBuilder.CreateBasicContentType("ct2", "CT2", ct1);

        ct2.Id = 2;
        var ct3 = ContentTypeBuilder.CreateBasicContentType("ct3", "CT3");

        ct3.Id = 3;

        var service = new Mock <IContentTypeService>();

        var availableTypes = service.Object.GetAvailableCompositeContentTypes(
            ct1,
            new[] { ct1, ct2, ct3 }).Results;

        Assert.AreEqual(0, availableTypes.Count());
    }
Example #20
0
        public void GetAvailableCompositeContentTypes_Not_Itself()
        {
            ContentType ct1 = ContentTypeBuilder.CreateBasicContentType("ct1", "CT1", null);
            ContentType ct2 = ContentTypeBuilder.CreateBasicContentType("ct2", "CT2", null);
            ContentType ct3 = ContentTypeBuilder.CreateBasicContentType("ct3", "CT3", null);

            ct1.Id = 1;
            ct2.Id = 2;
            ct3.Id = 3;

            var service = new Mock <IContentTypeService>();

            IContentTypeComposition[] availableTypes = service.Object.GetAvailableCompositeContentTypes(
                ct1,
                new[] { ct1, ct2, ct3 })
                                                       .Results.Where(x => x.Allowed).Select(x => x.Composition).ToArray();

            Assert.AreEqual(2, availableTypes.Count());
            Assert.AreEqual(ct2.Id, availableTypes.ElementAt(0).Id);
            Assert.AreEqual(ct3.Id, availableTypes.ElementAt(1).Id);
        }
Example #21
0
    private IEnumerable <IContent> CreateTestData(int count)
    {
        var provider = ScopeProvider;

        using (var scope = provider.CreateScope())
        {
            var ct = ContentTypeBuilder.CreateBasicContentType("testing");
            ContentTypeRepository.Save(ct);

            var result = new List <IContent>();
            for (var i = 0; i < count; i++)
            {
                var c = new Content("test" + i, -1, ct);
                DocumentRepository.Save(c);
                result.Add(c);
            }

            scope.Complete();

            return(result);
        }
    }
Example #22
0
        public void GetAvailableCompositeContentTypes_Do_Not_Include_Other_Composed_Types()
        {
            ContentType ct1 = ContentTypeBuilder.CreateBasicContentType("ct1", "CT1");
            ContentType ct2 = ContentTypeBuilder.CreateBasicContentType("ct2", "CT2");
            ContentType ct3 = ContentTypeBuilder.CreateBasicContentType("ct3", "CT3");

            ct1.Id = 1;
            ct2.Id = 2;
            ct3.Id = 3;

            ct2.AddContentType(ct3);

            var service = new Mock <IContentTypeService>();

            IContentTypeComposition[] availableTypes = service.Object.GetAvailableCompositeContentTypes(
                ct1,
                new[] { ct1, ct2, ct3 })
                                                       .Results.Where(x => x.Allowed).Select(x => x.Composition).ToArray();

            Assert.AreEqual(1, availableTypes.Count());
            Assert.AreEqual(ct3.Id, availableTypes.Single().Id);
        }
Example #23
0
        private void CreateTestDataForPagingTests(out List <IContent> createdContent, out List <IMember> createdMembers, out List <IMedia> createdMedia)
        {
            // Create content
            createdContent = new List <IContent>();
            ContentType contentType = ContentTypeBuilder.CreateBasicContentType("blah");

            ContentTypeService.Save(contentType);
            for (int i = 0; i < 3; i++)
            {
                Content c1 = ContentBuilder.CreateBasicContent(contentType);
                ContentService.Save(c1);
                createdContent.Add(c1);
            }

            // Create related content
            var relatedContent = new List <IContent>();

            for (int i = 0; i < 3; i++)
            {
                Content c1 = ContentBuilder.CreateBasicContent(contentType);
                ContentService.Save(c1);
                relatedContent.Add(c1);
            }

            // Create media
            createdMedia = new List <IMedia>();
            MediaType imageType = MediaTypeBuilder.CreateImageMediaType("myImage");

            MediaTypeService.Save(imageType);
            for (int i = 0; i < 3; i++)
            {
                Media c1 = MediaBuilder.CreateMediaImage(imageType, -1);
                MediaService.Save(c1);
                createdMedia.Add(c1);
            }

            // Create members
            MemberType memberType = MemberTypeBuilder.CreateSimpleMemberType("simple");

            MemberTypeService.Save(memberType);
            createdMembers = MemberBuilder.CreateSimpleMembers(memberType, 3).ToList();
            GetMemberService().Save(createdMembers);

            IRelationType relatedMediaRelType   = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias);
            IRelationType relatedContentRelType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedDocumentAlias);

            // Relate content to media
            foreach (IContent content in createdContent)
            {
                foreach (IMedia media in createdMedia)
                {
                    RelationService.Relate(content.Id, media.Id, relatedMediaRelType);
                }
            }

            // Relate content to content
            foreach (IContent relContent in relatedContent)
            {
                foreach (IContent content in createdContent)
                {
                    RelationService.Relate(relContent.Id, content.Id, relatedContentRelType);
                }
            }

            // Relate members to media
            foreach (IMember member in createdMembers)
            {
                foreach (IMedia media in createdMedia)
                {
                    RelationService.Relate(member.Id, media.Id, relatedMediaRelType);
                }
            }

            // Create copied content
            var copiedContent = new List <IContent>();

            for (int i = 0; i < 3; i++)
            {
                Content c1 = ContentBuilder.CreateBasicContent(contentType);
                ContentService.Save(c1);
                copiedContent.Add(c1);
            }

            IRelationType copiedContentRelType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelateDocumentOnCopyAlias);

            // Relate content to content (mimics copy)
            foreach (IContent content in createdContent)
            {
                foreach (IContent cpContent in copiedContent)
                {
                    RelationService.Relate(content.Id, cpContent.Id, copiedContentRelType);
                }
            }

            // Create trashed content
            var trashedContent = new List <IContent>();

            for (int i = 0; i < 3; i++)
            {
                Content c1 = ContentBuilder.CreateBasicContent(contentType);
                ContentService.Save(c1);
                trashedContent.Add(c1);
            }

            IRelationType trashedRelType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelateParentDocumentOnDeleteAlias);

            // Relate to trashed content
            foreach (IContent trContent in trashedContent)
            {
                foreach (IContent content in createdContent)
                {
                    RelationService.Relate(trContent.Id, content.Id, trashedRelType);
                }
            }

            // Create trashed media
            var trashedMedia = new List <IMedia>();

            for (int i = 0; i < 3; i++)
            {
                Media m1 = MediaBuilder.CreateMediaImage(imageType, -1);
                MediaService.Save(m1);
                trashedMedia.Add(m1);
            }

            IRelationType trashedMediaRelType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelateParentMediaFolderOnDeleteAlias);

            // Relate to trashed media
            foreach (IMedia trMedia in trashedMedia)
            {
                foreach (IMedia media in createdMedia)
                {
                    RelationService.Relate(trMedia.Id, media.Id, trashedMediaRelType);
                }
            }
        }
    public void Can_Perform_Update_On_UserRepository()
    {
        var ct = ContentTypeBuilder.CreateBasicContentType("test");
        var mt = MediaTypeBuilder.CreateSimpleMediaType("testmedia", "TestMedia");

        // Arrange
        ICoreScopeProvider provider = ScopeProvider;

        using (var scope = provider.CreateCoreScope(autoComplete: true))
        {
            var userRepository      = CreateRepository(provider);
            var userGroupRepository = CreateUserGroupRepository(provider);

            ContentTypeRepository.Save(ct);
            MediaTypeRepository.Save(mt);

            var content = ContentBuilder.CreateBasicContent(ct);
            var media   = MediaBuilder.CreateSimpleMedia(mt, "asdf", -1);

            DocumentRepository.Save(content);
            MediaRepository.Save(media);

            var user = CreateAndCommitUserWithGroup(userRepository, userGroupRepository);

            // Act
            var resolved = (User)userRepository.Get(user.Id);

            resolved.Name = "New Name";

            // the db column is not used, default permissions are taken from the user type's permissions, this is a getter only
            //// resolved.DefaultPermissions = "ZYX";

            resolved.Language         = "fr";
            resolved.IsApproved       = false;
            resolved.RawPasswordValue = "new";
            resolved.IsLockedOut      = true;
            resolved.StartContentIds  = new[] { content.Id };
            resolved.StartMediaIds    = new[] { media.Id };
            resolved.Email            = "*****@*****.**";
            resolved.Username         = "******";

            userRepository.Save(resolved);

            var updatedItem = (User)userRepository.Get(user.Id);

            // Assert
            Assert.That(updatedItem.Id, Is.EqualTo(resolved.Id));
            Assert.That(updatedItem.Name, Is.EqualTo(resolved.Name));
            Assert.That(updatedItem.Language, Is.EqualTo(resolved.Language));
            Assert.That(updatedItem.IsApproved, Is.EqualTo(resolved.IsApproved));
            Assert.That(updatedItem.RawPasswordValue, Is.EqualTo(resolved.RawPasswordValue));
            Assert.That(updatedItem.IsLockedOut, Is.EqualTo(resolved.IsLockedOut));
            Assert.IsTrue(updatedItem.StartContentIds.UnsortedSequenceEqual(resolved.StartContentIds));
            Assert.IsTrue(updatedItem.StartMediaIds.UnsortedSequenceEqual(resolved.StartMediaIds));
            Assert.That(updatedItem.Email, Is.EqualTo(resolved.Email));
            Assert.That(updatedItem.Username, Is.EqualTo(resolved.Username));
            Assert.That(updatedItem.AllowedSections.Count(), Is.EqualTo(resolved.AllowedSections.Count()));
            foreach (var allowedSection in resolved.AllowedSections)
            {
                Assert.IsTrue(updatedItem.AllowedSections.Contains(allowedSection));
            }
        }
    }
Example #25
0
    public void GivenIndexingDocument_WhenGridPropertyData_ThenDataIndexedInSegregatedFields()
    {
        using (GetSynchronousContentIndex(false, out var index, out _, out var contentValueSetBuilder))
        {
            index.CreateIndex();

            var contentType = ContentTypeBuilder.CreateBasicContentType();
            contentType.AddPropertyType(new PropertyType(TestHelper.ShortStringHelper, "test", ValueStorageType.Ntext)
            {
                Alias = "grid",
                Name  = "Grid",
                PropertyEditorAlias = Constants.PropertyEditors.Aliases.Grid
            });
            var content = ContentBuilder.CreateBasicContent(contentType);
            content.Id   = 555;
            content.Path = "-1,555";
            var gridVal = new GridValue
            {
                Name     = "n1",
                Sections = new List <GridValue.GridSection>
                {
                    new()
                    {
                        Grid = "g1",
                        Rows = new List <GridValue.GridRow>
                        {
                            new()
                            {
                                Id    = Guid.NewGuid(),
                                Name  = "row1",
                                Areas = new List <GridValue.GridArea>
                                {
                                    new()
                                    {
                                        Grid     = "g2",
                                        Controls = new List <GridValue.GridControl>
                                        {
                                            new()
                                            {
                                                Editor = new GridValue.GridEditor
                                                {
                                                    Alias = "editor1",
                                                    View  = "view1"
                                                },
                                                Value = "value1"
                                            },
                                            new()
                                            {
                                                Editor = new GridValue.GridEditor
                                                {
                                                    Alias = "editor1",
                                                    View  = "view1"
                                                },
                                                Value = "value2"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var json = JsonConvert.SerializeObject(gridVal);
            content.Properties["grid"].SetValue(json);

            var valueSet = contentValueSetBuilder.GetValueSets(content);
            index.IndexItems(valueSet);

            var results = index.Searcher.CreateQuery().Id(555).Execute();
            Assert.AreEqual(1, results.TotalItemCount);

            var result = results.First();
            Assert.IsTrue(result.Values.ContainsKey("grid.row1"));
            Assert.AreEqual("value1", result.AllValues["grid.row1"][0]);
            Assert.AreEqual("value2", result.AllValues["grid.row1"][1]);
            Assert.IsTrue(result.Values.ContainsKey("grid"));
            Assert.AreEqual("value1 value2 ", result["grid"]);
            Assert.IsTrue(result.Values.ContainsKey($"{UmbracoExamineFieldNames.RawFieldPrefix}grid"));
            Assert.AreEqual(json, result[$"{UmbracoExamineFieldNames.RawFieldPrefix}grid"]);
        }
    }
Example #26
0
        public void Get_Paged_Mixed_Entities_By_Ids()
        {
            // Create content
            IContentService     contentService     = GetRequiredService <IContentService>();
            IContentTypeService contentTypeService = GetRequiredService <IContentTypeService>();
            var         createdContent             = new List <IContent>();
            ContentType contentType = ContentTypeBuilder.CreateBasicContentType("blah");

            contentTypeService.Save(contentType);
            for (int i = 0; i < 10; i++)
            {
                Content c1 = ContentBuilder.CreateBasicContent(contentType);
                contentService.Save(c1);
                createdContent.Add(c1);
            }

            // Create media
            IMediaService     mediaService     = GetRequiredService <IMediaService>();
            IMediaTypeService mediaTypeService = GetRequiredService <IMediaTypeService>();
            var       createdMedia             = new List <IMedia>();
            MediaType imageType = MediaTypeBuilder.CreateImageMediaType("myImage");

            mediaTypeService.Save(imageType);
            for (int i = 0; i < 10; i++)
            {
                Media c1 = MediaBuilder.CreateMediaImage(imageType, -1);
                mediaService.Save(c1);
                createdMedia.Add(c1);
            }

            // Create members
            IMemberService     memberService     = GetRequiredService <IMemberService>();
            IMemberTypeService memberTypeService = GetRequiredService <IMemberTypeService>();
            MemberType         memberType        = MemberTypeBuilder.CreateSimpleMemberType("simple");

            memberTypeService.Save(memberType);
            var createdMembers = MemberBuilder.CreateMultipleSimpleMembers(memberType, 10).ToList();

            memberService.Save(createdMembers);

            IScopeProvider provider = ScopeProvider;

            using (provider.CreateScope())
            {
                EntityRepository repo = CreateRepository((IScopeAccessor)provider);

                IEnumerable <int> ids = createdContent.Select(x => x.Id).Concat(createdMedia.Select(x => x.Id)).Concat(createdMembers.Select(x => x.Id));

                System.Guid[] objectTypes = new[] { Constants.ObjectTypes.Document, Constants.ObjectTypes.Media, Constants.ObjectTypes.Member };

                IQuery <IUmbracoEntity> query = provider.CreateQuery <IUmbracoEntity>()
                                                .WhereIn(e => e.Id, ids);

                var entities = repo.GetPagedResultsByQuery(query, objectTypes, 0, 20, out long totalRecords, null, null).ToList();

                Assert.AreEqual(20, entities.Count);
                Assert.AreEqual(30, totalRecords);

                // add the next page
                entities.AddRange(repo.GetPagedResultsByQuery(query, objectTypes, 1, 20, out totalRecords, null, null));

                Assert.AreEqual(30, entities.Count);
                Assert.AreEqual(30, totalRecords);

                var contentEntities = entities.OfType <IDocumentEntitySlim>().ToList();
                var mediaEntities   = entities.OfType <IMediaEntitySlim>().ToList();
                var memberEntities  = entities.OfType <IMemberEntitySlim>().ToList();

                Assert.AreEqual(10, contentEntities.Count);
                Assert.AreEqual(10, mediaEntities.Count);
                Assert.AreEqual(10, memberEntities.Count);
            }
        }
        private static IContent CreateContent(int nodeId)
        {
            ContentType contentType = ContentTypeBuilder.CreateBasicContentType();

            return(ContentBuilder.CreateBasicContent(contentType, nodeId));
        }