예제 #1
0
        public void Should_Remove_ContentOptions_From_Content()
        {
            var content        = TestDataProvider.CreateNewContent();
            var contentOptions = new[]
            {
                TestDataProvider.CreateNewContentOption(content),
                TestDataProvider.CreateNewContentOption(content)
            };

            content.ContentOptions = contentOptions;

            RunActionInTransaction(
                session =>
            {
                session.SaveOrUpdate(content);
                session.Flush();
                Guid contentId = content.Id;
                session.Clear();

                session.Delete(content.ContentOptions[0]);
                session.Flush();
                session.Clear();

                var dbContent = session.Query <Content>().FetchMany(f => f.ContentOptions).FirstOrDefault(f => f.Id == contentId);
                Assert.IsNotNull(dbContent);
                Assert.AreEqual(content, dbContent);
                Assert.AreEqual(1, dbContent.ContentOptions.Count);
            });
        }
        public void Should_Return_Page_Content_Options_Successfully()
        {
            RunActionInTransaction(session =>
            {
                var content     = TestDataProvider.CreateNewContent();
                var pageContent = TestDataProvider.CreateNewPageContent(content);

                FillContentWithOptions(content);
                FillPageContentWithOptions(content, pageContent);

                session.SaveOrUpdate(pageContent);
                session.Flush();
                session.Clear();

                // Create command
                var unitOfWork           = new DefaultUnitOfWork(session);
                var command              = new GetPageContentOptionsCommand();
                var repository           = new DefaultRepository(unitOfWork);
                command.UnitOfWork       = unitOfWork;
                command.Repository       = repository;
                command.CmsConfiguration = Container.Resolve <ICmsConfiguration>();
                command.OptionService    = new DefaultOptionService(repository, new HttpRuntimeCacheService(), command.CmsConfiguration);

                // Execute command
                var result = command.Execute(pageContent.Id);

                // Should return 4 options: 2 with assigned values, 1 without parent option and 1 unassigned
                Assert.IsNotNull(result);
                Assert.IsNotNull(result.OptionValues);
                Assert.AreEqual(result.OptionValues.Count, 5);
                Assert.IsNotNull(result.OptionValues.FirstOrDefault(o => o.OptionKey == content.ContentOptions[0].Key &&
                                                                    o.OptionValue == pageContent.Options[0].Value &&
                                                                    o.OptionDefaultValue == content.ContentOptions[0].DefaultValue &&
                                                                    !o.UseDefaultValue &&
                                                                    !o.CanEditOption));
                Assert.IsNotNull(result.OptionValues.FirstOrDefault(o => o.OptionKey == content.ContentOptions[1].Key &&
                                                                    o.OptionValue == pageContent.Options[1].Value &&
                                                                    o.OptionDefaultValue == content.ContentOptions[1].DefaultValue &&
                                                                    !o.UseDefaultValue &&
                                                                    !o.CanEditOption));
                Assert.IsNotNull(result.OptionValues.FirstOrDefault(o => o.OptionKey == content.ContentOptions[2].Key &&
                                                                    o.OptionValue == content.ContentOptions[2].DefaultValue &&
                                                                    o.OptionDefaultValue == content.ContentOptions[2].DefaultValue &&
                                                                    o.UseDefaultValue &&
                                                                    !o.CanEditOption));
                Assert.IsNotNull(result.OptionValues.FirstOrDefault(o => o.OptionKey == pageContent.Options[2].Key &&
                                                                    o.OptionValue == pageContent.Options[2].Value &&
                                                                    o.OptionDefaultValue == null &&
                                                                    o.CanEditOption));
                Assert.IsNotNull(result.OptionValues.FirstOrDefault(o => o.OptionKey == pageContent.Options[3].Key &&
                                                                    o.OptionValue == pageContent.Options[3].Value &&
                                                                    o.OptionDefaultValue == null &&
                                                                    o.CanEditOption));
            });
        }
예제 #3
0
        private Content[] CreateFakeContents()
        {
            var content1 = TestDataProvider.CreateNewContent();
            var content2 = TestDataProvider.CreateNewHtmlContent();
            var content3 = TestDataProvider.CreateNewHtmlContentWidget();
            var content4 = TestDataProvider.CreateNewServerControlWidget();

            content1.Name = "Content_1";
            content2.Name = "Content_2";
            content3.Name = "Test_1";
            content4.Name = "Test_2";

            return(new[] { content1, content2, content3, content4 });
        }
예제 #4
0
        public void Should_Insert_And_Retrieve_Content_ContentOptions_Successfully()
        {
            var content        = TestDataProvider.CreateNewContent();
            var contentOptions = new[]
            {
                TestDataProvider.CreateNewContentOption(content),
                TestDataProvider.CreateNewContentOption(content)
            };

            content.ContentOptions = contentOptions;

            SaveEntityAndRunAssertionsInTransaction(
                content,
                result =>
            {
                Assert.AreEqual(content, result);
                Assert.AreEqual(contentOptions.OrderBy(f => f.Id), result.ContentOptions.OrderBy(f => f.Id));
            });
        }
예제 #5
0
        public void Should_Return_Page_Content_Options_Successfully()
        {
            RunActionInTransaction(session =>
            {
                var content     = TestDataProvider.CreateNewContent();
                var pageContent = TestDataProvider.CreateNewPageContent(content);

                FillContentWithOptions(content);
                FillPageContentWithOptions(content, pageContent);

                session.SaveOrUpdate(pageContent);
                session.Flush();
                session.Clear();

                // Create command
                var unitOfWork     = new DefaultUnitOfWork(session);
                var command        = new GetPageContentOptionsCommand();
                command.UnitOfWork = unitOfWork;
                command.Repository = new DefaultRepository(unitOfWork);

                // Execute command
                var result = command.Execute(pageContent.Id);

                // Should return 4 options: 2 with assigned values, 1 without parent option and 1 unassigned
                Assert.IsNotNull(result);
                Assert.IsNotNull(result.WidgetOptions);
                Assert.AreEqual(result.WidgetOptions.Count, 4);
                Assert.IsNotNull(result.WidgetOptions.FirstOrDefault(o => o.OptionKey == content.ContentOptions[0].Key &&
                                                                     o.OptionValue == pageContent.Options[0].Value &&
                                                                     o.OptionDefaultValue == content.ContentOptions[0].DefaultValue));
                Assert.IsNotNull(result.WidgetOptions.FirstOrDefault(o => o.OptionKey == content.ContentOptions[1].Key &&
                                                                     o.OptionValue == pageContent.Options[1].Value &&
                                                                     o.OptionDefaultValue == content.ContentOptions[1].DefaultValue));
                Assert.IsNotNull(result.WidgetOptions.FirstOrDefault(o => o.OptionKey == content.ContentOptions[2].Key &&
                                                                     o.OptionValue == null &&
                                                                     o.OptionDefaultValue == content.ContentOptions[2].DefaultValue));
                Assert.IsNotNull(result.WidgetOptions.FirstOrDefault(o => o.OptionKey == pageContent.Options[2].Key &&
                                                                     o.OptionValue == pageContent.Options[2].Value &&
                                                                     o.OptionDefaultValue == null));
            });
        }
예제 #6
0
        public void Should_Save_Page_Content_Options_Successfully()
        {
            RunActionInTransaction(session =>
            {
                // Create page content with options
                var content     = TestDataProvider.CreateNewContent();
                var pageContent = TestDataProvider.CreateNewPageContent(content);
                FillContentWithOptions(content);
                FillPageContentWithOptions(content, pageContent);

                session.SaveOrUpdate(pageContent);
                session.Flush();
                session.Clear();

                // Random option value
                var randomOptionValue = TestDataProvider.CreateNewPageContentOption();

                // Create request
                var request = new PageContentOptionsViewModel
                {
                    OptionValues = new List <OptionValueEditViewModel>
                    {
                        new OptionValueEditViewModel
                        {
                            // Must be updated
                            OptionKey       = pageContent.Options[0].Key,
                            OptionValue     = content.ContentOptions[0].DefaultValue,
                            UseDefaultValue = false
                        },
                        new OptionValueEditViewModel
                        {
                            // Must be deleted
                            OptionKey       = pageContent.Options[1].Key,
                            OptionValue     = null,
                            UseDefaultValue = true
                        },
                        new OptionValueEditViewModel
                        {
                            // Must be updated
                            OptionKey       = pageContent.Options[2].Key,
                            OptionValue     = null,
                            UseDefaultValue = false
                        },
                        new OptionValueEditViewModel
                        {
                            // Must be created
                            OptionValue = randomOptionValue.Value,
                            OptionKey   = randomOptionValue.Key,
                            Type        = OptionType.Text
                        }
                    },
                    PageContentId = pageContent.Id
                };

                // Create command
                var unitOfWork        = new DefaultUnitOfWork(session);
                var repository        = new DefaultRepository(unitOfWork);
                var command           = new SavePageContentOptionsCommand();
                command.UnitOfWork    = unitOfWork;
                command.Repository    = repository;
                command.OptionService = new DefaultOptionService(repository, new HttpRuntimeCacheService());
                var result            = command.Execute(request);

                Assert.IsTrue(result);

                // Check results: one of page content values must be deleted after save
                var results = repository
                              .AsQueryable <PageContentOption>(pco => pco.PageContent.Id == pageContent.Id &&
                                                               !pco.IsDeleted &&
                                                               !pco.PageContent.IsDeleted)
                              .ToList();
                Assert.AreEqual(results.Count, 3);
                Assert.IsNotNull(results.FirstOrDefault(pco => {
                    return(pco.Key == pageContent.Options[0].Key && pco.Value == content.ContentOptions[0].DefaultValue);
                }));
                Assert.IsNotNull(results.FirstOrDefault(pco => {
                    return(pco.Key == pageContent.Options[2].Key && pco.Value == null);
                }));
                Assert.IsNotNull(results.FirstOrDefault(pco => pco.Key == randomOptionValue.Key &&
                                                        pco.Value == randomOptionValue.Value));
            });
        }
예제 #7
0
        public void Should_Insert_And_Retrieve_Content_Successfully()
        {
            var content = TestDataProvider.CreateNewContent();

            RunEntityMapTestsInTransaction(content);
        }
예제 #8
0
        public void Should_Save_Page_Content_Options_Successfully()
        {
            RunActionInTransaction(session =>
            {
                // Create page content with options
                var content     = TestDataProvider.CreateNewContent();
                var pageContent = TestDataProvider.CreateNewPageContent(content);
                FillContentWithOptions(content);
                FillPageContentWithOptions(content, pageContent);

                session.SaveOrUpdate(pageContent);
                session.Flush();
                session.Clear();

                // Random option value
                var randomOptionValue = TestDataProvider.CreateNewPageContentOption();

                // Create request
                var request = new PageContentOptionsViewModel
                {
                    WidgetOptions = new List <PageContentOptionViewModel>
                    {
                        new PageContentOptionViewModel
                        {
                            // Will be deleted because of default value
                            OptionValue        = content.ContentOptions[0].DefaultValue,
                            OptionKey          = pageContent.Options[0].Key,
                            OptionDefaultValue = content.ContentOptions[0].DefaultValue
                        },
                        new PageContentOptionViewModel
                        {
                            // Will be deleted because of null value
                            OptionValue = null,
                            OptionKey   = pageContent.Options[1].Key
                        },
                        new PageContentOptionViewModel
                        {
                            OptionValue = pageContent.Options[2].Value,
                            OptionKey   = pageContent.Options[2].Key
                        },
                        new PageContentOptionViewModel
                        {
                            // Random value
                            OptionValue = randomOptionValue.Value,
                            OptionKey   = randomOptionValue.Key
                        }
                    },
                    PageContentId = pageContent.Id
                };

                // Create command
                var unitOfWork     = new DefaultUnitOfWork(session);
                var repository     = new DefaultRepository(unitOfWork);
                var command        = new SavePageContentOptionsCommand();
                command.UnitOfWork = unitOfWork;
                command.Repository = repository;
                var result         = command.Execute(request);

                Assert.IsTrue(result);

                // Check results: one of page content values must be deleted after save
                var results = repository
                              .AsQueryable <PageContentOption>(pco => pco.PageContent.Id == pageContent.Id &&
                                                               !pco.IsDeleted &&
                                                               !pco.PageContent.IsDeleted)
                              .ToList();
                Assert.AreEqual(results.Count, 2);
                Assert.IsNotNull(results.FirstOrDefault(pco => pco.Key == pageContent.Options[2].Key &&
                                                        pco.Value == pageContent.Options[2].Value));
                Assert.IsNotNull(results.FirstOrDefault(pco => pco.Key == randomOptionValue.Key &&
                                                        pco.Value == randomOptionValue.Value));
            });
        }