public void Invariant_Child_Content_Published_No_Domains()
        {
            var contentType = MockedContentTypes.CreateBasicContentType();
            var parent      = MockedContent.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 = MockedContent.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 umbracoSettings = Current.Configs.Settings();

            var umbContext = GetUmbracoContext("http://localhost:8000",
                                               urlProviders: new[] { new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, TestObjects.GetGlobalSettings(), new SiteDomainHelper()) });
            var publishedRouter = CreatePublishedRouter(Factory,
                                                        contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(Logger) }));
            var urls = child.GetContentUrls(publishedRouter,
                                            umbContext,
                                            GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService,
                                            Logger).ToList();

            Assert.AreEqual(1, urls.Count);
            Assert.AreEqual("/home/sub1/", urls[0].Text);
            Assert.AreEqual("en-US", urls[0].Culture);
            Assert.IsTrue(urls[0].IsUrl);
        }
        public async Task Content_Not_Published()
        {
            var contentType = MockedContentTypes.CreateBasicContentType();
            var content     = MockedContent.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 umbContext      = GetUmbracoContext("http://localhost:8000");
            var publishedRouter = CreatePublishedRouter(
                GetUmbracoContextAccessor(umbContext),
                Factory,
                contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(LoggerFactory.CreateLogger <ContentFinderByUrl>(), GetUmbracoContextAccessor(umbContext)) }));
            var urls = (await content.GetContentUrlsAsync(publishedRouter,
                                                          umbContext,
                                                          GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService,
                                                          VariationContextAccessor,
                                                          LoggerFactory.CreateLogger <IContent>(),
                                                          UriUtility,
                                                          PublishedUrlProvider)).ToList();

            Assert.AreEqual(1, urls.Count);
            Assert.AreEqual("content/itemNotPublished", urls[0].Text);
            Assert.IsFalse(urls[0].IsUrl);
        }
Example #3
0
        public void LastIn()
        {
            DoSaveForContent += OnDoThingFail;

            var now         = DateTime.Now;
            var contentType = MockedContentTypes.CreateBasicContentType();
            var content1    = MockedContent.CreateBasicContent(contentType);

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

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

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

            var scopeProvider = _testObjects.GetScopeProvider(Mock.Of <ILogger>());

            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
        /// <summary>
        /// Creates a bunch of content/media items return relation objects for them (unsaved)
        /// </summary>
        /// <param name="count"></param>
        /// <returns></returns>
        private IEnumerable <IRelation> CreateRelations(int count)
        {
            var rs     = ServiceContext.RelationService;
            var rtName = Guid.NewGuid().ToString();
            var rt     = new RelationType(rtName, rtName, false, null, null);

            rs.Save(rt);

            var ct = MockedContentTypes.CreateBasicContentType();

            ServiceContext.ContentTypeService.Save(ct);

            var mt = MockedContentTypes.CreateImageMediaType("img");

            ServiceContext.MediaTypeService.Save(mt);

            return(Enumerable.Range(1, count).Select(index =>
            {
                var c1 = MockedContent.CreateBasicContent(ct);
                var c2 = MockedMedia.CreateMediaImage(mt, -1);
                ServiceContext.ContentService.Save(c1);
                ServiceContext.MediaService.Save(c2);

                return new Relation(c1.Id, c2.Id, rt);
            }).ToList());
        }
Example #5
0
        private IRelation CreateAndSaveRelation(string name, string alias)
        {
            var rs = ServiceContext.RelationService;
            var rt = new RelationType(name, alias, false, null, null);

            rs.Save(rt);

            var ct = MockedContentTypes.CreateBasicContentType();

            ServiceContext.ContentTypeService.Save(ct);

            var mt = MockedContentTypes.CreateImageMediaType("img");

            ServiceContext.MediaTypeService.Save(mt);

            var c1 = MockedContent.CreateBasicContent(ct);
            var c2 = MockedMedia.CreateMediaImage(mt, -1);

            ServiceContext.ContentService.Save(c1);
            ServiceContext.MediaService.Save(c2);

            var r = new Relation(c1.Id, c2.Id, rt);

            ServiceContext.RelationService.Save(r);

            return(r);
        }
        private void CreateTestDataForPagingTests(out List <IContent> createdContent, out List <IMember> createdMembers, out List <IMedia> createdMedia)
        {
            //Create content
            createdContent = new List <IContent>();
            var contentType = MockedContentTypes.CreateBasicContentType("blah");

            ServiceContext.ContentTypeService.Save(contentType);
            for (int i = 0; i < 10; i++)
            {
                var c1 = MockedContent.CreateBasicContent(contentType);
                ServiceContext.ContentService.Save(c1);
                createdContent.Add(c1);
            }

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

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

            // Create members
            var memberType = MockedContentTypes.CreateSimpleMemberType("simple");

            ServiceContext.MemberTypeService.Save(memberType);
            createdMembers = MockedMember.CreateSimpleMember(memberType, 10).ToList();
            ServiceContext.MemberService.Save(createdMembers);

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

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

            ServiceContext.ContentTypeService.Save(contentType);
            for (int i = 0; i < 10; i++)
            {
                var c1 = MockedContent.CreateBasicContent(contentType);
                ServiceContext.ContentService.Save(c1);
                createdContent.Add(c1);
            }

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

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

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

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

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

            Assert.AreEqual(100, totalRecs);
            Assert.AreEqual(51, paged.Count);

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

            Assert.AreEqual(100, totalRecs);
            Assert.AreEqual(100, 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)));
        }
Example #8
0
        public void SupersededEvents()
        {
            DoSaveForContent   += OnDoThingFail;
            DoDeleteForContent += OnDoThingFail;
            DoForTestArgs      += OnDoThingFail;
            DoForTestArgs2     += OnDoThingFail;

            var contentType = MockedContentTypes.CreateBasicContentType();

            var content1 = MockedContent.CreateBasicContent(contentType);

            content1.Id = 123;

            var content2 = MockedContent.CreateBasicContent(contentType);

            content2.Id = 456;

            var content3 = MockedContent.CreateBasicContent(contentType);

            content3.Id = 789;

            var scopeProvider = _testObjects.GetScopeProvider(Mock.Of <ILogger>());

            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());
            }
        }
        public async Task Invariant_Child_Content_Published_No_Domains()
        {
            var contentType = MockedContentTypes.CreateBasicContentType();
            var parent      = MockedContent.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 = MockedContent.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 umbContext             = GetUmbracoContext("http://localhost:8000");
            var umbracoContextAccessor = GetUmbracoContextAccessor(umbContext);
            var urlProvider            = new DefaultUrlProvider(
                Microsoft.Extensions.Options.Options.Create(_requestHandlerSettings),
                LoggerFactory.CreateLogger <DefaultUrlProvider>(),
                new SiteDomainMapper(), umbracoContextAccessor, UriUtility);
            var publishedUrlProvider = new UrlProvider(
                umbracoContextAccessor,
                Microsoft.Extensions.Options.Options.Create(_webRoutingSettings),
                new UrlProviderCollection(new [] { urlProvider }),
                new MediaUrlProviderCollection(Enumerable.Empty <IMediaUrlProvider>()),
                Mock.Of <IVariationContextAccessor>()
                );

            var publishedRouter = CreatePublishedRouter(
                umbracoContextAccessor,
                Factory,
                contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(LoggerFactory.CreateLogger <ContentFinderByUrl>(), umbracoContextAccessor) }));
            var urls = (await child.GetContentUrlsAsync(publishedRouter,
                                                        umbContext,
                                                        GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService,
                                                        VariationContextAccessor,
                                                        LoggerFactory.CreateLogger <IContent>(),
                                                        UriUtility,
                                                        publishedUrlProvider
                                                        )).ToList();

            Assert.AreEqual(1, urls.Count);
            Assert.AreEqual("/home/sub1/", urls[0].Text);
            Assert.AreEqual("en-US", urls[0].Culture);
            Assert.IsTrue(urls[0].IsUrl);
        }
        public void PropertyDataAssignedCorrectly()
        {
            var provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository, out DataTypeRepository _);

                var emptyContentType         = MockedContentTypes.CreateBasicContentType();
                var hasPropertiesContentType = MockedContentTypes.CreateSimpleContentType("umbTextpage1", "Textpage");
                contentTypeRepository.Save(emptyContentType);
                contentTypeRepository.Save(hasPropertiesContentType);

                ServiceContext.FileService.SaveTemplate(hasPropertiesContentType.DefaultTemplate); // else, FK violation on contentType!
                var content1 = MockedContent.CreateSimpleContent(hasPropertiesContentType);
                var content2 = MockedContent.CreateBasicContent(emptyContentType);
                var content3 = MockedContent.CreateSimpleContent(hasPropertiesContentType);


                repository.Save(content1);
                repository.Save(content2);
                repository.Save(content3);


                // this will cause the GetPropertyCollection to execute and we need to ensure that
                // all of the properties and property types are all correct
                var result = repository.GetMany(content1.Id, content2.Id, content3.Id).ToArray();
                var n1     = result[0];
                var n2     = result[1];
                var n3     = result[2];

                Assert.AreEqual(content1.Id, n1.Id);
                Assert.AreEqual(content2.Id, n2.Id);
                Assert.AreEqual(content3.Id, n3.Id);

                // compare everything including properties and their values
                // this ensures that they have been properly retrieved
                TestHelper.AssertPropertyValuesAreEqual(content1, n1);
                TestHelper.AssertPropertyValuesAreEqual(content2, n2);
                TestHelper.AssertPropertyValuesAreEqual(content3, n3);
            }
        }
        public void LatestEntities()
        {
            DoSaveForContent += OnDoThingFail;

            var now         = DateTime.Now;
            var contentType = MockedContentTypes.CreateBasicContentType();
            var content1    = MockedContent.CreateBasicContent(contentType);

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

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

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

            var scopeProvider = new ScopeProvider(Mock.Of <IDatabaseFactory2>());

            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.All).ToArray();
                Assert.AreEqual(3, events.Length);

                foreach (var t in events)
                {
                    var args = (SaveEventArgs <IContent>)t.Args;
                    foreach (var entity in args.SavedEntities)
                    {
                        Assert.AreEqual(content3, entity);
                        Assert.IsTrue(object.ReferenceEquals(content3, entity));
                    }
                }
            }
        }
        public void Content_Not_Published()
        {
            var contentType = MockedContentTypes.CreateBasicContentType();
            var content     = MockedContent.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 umbContext      = GetUmbracoContext("http://localhost:8000");
            var publishedRouter = CreatePublishedRouter(Factory,
                                                        contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(Logger) }));
            var urls = content.GetContentUrls(publishedRouter,
                                              umbContext,
                                              GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService,
                                              Logger).ToList();

            Assert.AreEqual(1, urls.Count);
            Assert.AreEqual("content/itemNotPublished", urls[0].Text);
            Assert.IsFalse(urls[0].IsUrl);
        }
Example #13
0
        public void Can_Perform_Update_On_UserRepository()
        {
            var ct = MockedContentTypes.CreateBasicContentType("test");
            var mt = MockedContentTypes.CreateSimpleMediaType("testmedia", "TestMedia");

            // Arrange
            var provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                var userRepository      = CreateRepository(provider);
                var contentRepository   = CreateContentRepository(provider, out var contentTypeRepo);
                var mediaRepository     = CreateMediaRepository(provider, out var mediaTypeRepo);
                var userGroupRepository = CreateUserGroupRepository(provider);

                contentTypeRepo.Save(ct);
                mediaTypeRepo.Save(mt);

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

                contentRepository.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));
                }
            }
        }
        public void Index_Property_Data_With_Value_Indexer()
        {
            var contentValueSetBuilder = IndexInitializer.GetContentValueSetBuilder(Factory.GetInstance <PropertyEditorCollection>(), false);

            using (var luceneDir = new RandomIdRamDirectory())
                using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
                                                                        validator: new ContentValueSetValidator(false)))
                    using (indexer.ProcessNonAsync())
                    {
                        indexer.CreateIndex();

                        var contentType = MockedContentTypes.CreateBasicContentType();
                        contentType.AddPropertyType(new PropertyType("test", ValueStorageType.Ntext)
                        {
                            Alias = "grid",
                            Name  = "Grid",
                            PropertyEditorAlias = Core.Constants.PropertyEditors.Aliases.Grid
                        });
                        var content = MockedContent.CreateBasicContent(contentType);
                        content.Id   = 555;
                        content.Path = "-1,555";
                        var gridVal = new GridValue
                        {
                            Name     = "n1",
                            Sections = new List <GridValue.GridSection>
                            {
                                new GridValue.GridSection
                                {
                                    Grid = "g1",
                                    Rows = new List <GridValue.GridRow>
                                    {
                                        new GridValue.GridRow
                                        {
                                            Id    = Guid.NewGuid(),
                                            Name  = "row1",
                                            Areas = new List <GridValue.GridArea>
                                            {
                                                new GridValue.GridArea
                                                {
                                                    Grid     = "g2",
                                                    Controls = new List <GridValue.GridControl>
                                                    {
                                                        new GridValue.GridControl
                                                        {
                                                            Editor = new GridValue.GridEditor
                                                            {
                                                                Alias = "editor1",
                                                                View  = "view1"
                                                            },
                                                            Value = "value1"
                                                        },
                                                        new GridValue.GridControl
                                                        {
                                                            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);
                        indexer.IndexItems(valueSet);

                        var searcher = indexer.GetSearcher();

                        var results = 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($"{UmbracoExamineIndex.RawFieldPrefix}grid"));
                        Assert.AreEqual(json, result[$"{UmbracoExamineIndex.RawFieldPrefix}grid"]);
                    }
        }
Example #15
0
        public void Can_Perform_Update_On_UserRepository()
        {
            var ct      = MockedContentTypes.CreateBasicContentType("test");
            var content = MockedContent.CreateBasicContent(ct);
            var mt      = MockedContentTypes.CreateSimpleMediaType("testmedia", "TestMedia");
            var media   = MockedMedia.CreateSimpleMedia(mt, "asdf", -1);

            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            IContentTypeRepository contentTypeRepo;
            IMediaTypeRepository   mediaTypeRepo;

            using (var contentRepository = CreateContentRepository(unitOfWork, out contentTypeRepo))
                using (var mediaRepository = CreateMediaRepository(unitOfWork, out mediaTypeRepo))
                    using (contentTypeRepo)
                        using (mediaTypeRepo)
                            using (var userRepository = CreateRepository(unitOfWork))
                                using (var userGroupRepository = CreateUserGroupRepository(unitOfWork))
                                {
                                    contentTypeRepo.AddOrUpdate(ct);
                                    mediaTypeRepo.AddOrUpdate(mt);
                                    unitOfWork.Commit();

                                    contentRepository.AddOrUpdate(content);
                                    mediaRepository.AddOrUpdate(media);
                                    unitOfWork.Commit();

                                    var user = CreateAndCommitUserWithGroup(userRepository, userGroupRepository, unitOfWork);

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

                                    resolved.Name             = "New Name";
                                    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.AddOrUpdate(resolved);
                                    unitOfWork.Commit();
                                    var updatedItem = (User)userRepository.Get((int)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(2));
                                    Assert.IsTrue(updatedItem.AllowedSections.Contains("content"));
                                    Assert.IsTrue(updatedItem.AllowedSections.Contains("media"));
                                }
        }
        public void Get_Paged_Mixed_Entities_By_Ids()
        {
            //Create content

            var createdContent = new List <IContent>();
            var contentType    = MockedContentTypes.CreateBasicContentType("blah");

            ServiceContext.ContentTypeService.Save(contentType);
            for (int i = 0; i < 10; i++)
            {
                var c1 = MockedContent.CreateBasicContent(contentType);
                ServiceContext.ContentService.Save(c1);
                createdContent.Add(c1);
            }

            //Create media

            var createdMedia = new List <IMedia>();
            var imageType    = MockedContentTypes.CreateImageMediaType("myImage");

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

            // Create members
            var memberType = MockedContentTypes.CreateSimpleMemberType("simple");

            ServiceContext.MemberTypeService.Save(memberType);
            var createdMembers = MockedMember.CreateSimpleMember(memberType, 10).ToList();

            ServiceContext.MemberService.Save(createdMembers);

            var provider = TestObjects.GetScopeProvider(Logger);

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

                var ids = createdContent.Select(x => x.Id).Concat(createdMedia.Select(x => x.Id)).Concat(createdMembers.Select(x => x.Id));

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

                var query = SqlContext.Query <IUmbracoEntity>()
                            .WhereIn(e => e.Id, ids);

                var entities = repo.GetPagedResultsByQuery(query, objectTypes, 0, 20, out var 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);
            }
        }