Example #1
0
        public void ContentType_ChangeFieldType_LongText()
        {
            Content CreateTestContent(string contentTypeName, Node parent)
            {
                var testContent = Content.CreateNew(contentTypeName, parent, Guid.NewGuid().ToString());

                testContent["LongText1"] = $"{contentTypeName} longtext value";
                testContent.Save();
                return(testContent);
            }

            void AssertProperties(FieldSetting fs, string displayName, string description,
                                  bool compulsory, FieldVisibility visibleEdit, string controlHint)
            {
                Assert.AreEqual("RichText", fs.ShortName);
                Assert.AreEqual(displayName, fs.DisplayName);
                Assert.AreEqual(description, fs.Description);
                Assert.AreEqual(compulsory, fs.Compulsory);
                Assert.AreEqual(visibleEdit, fs.VisibleEdit);
                Assert.AreEqual(controlHint, fs.ControlHint);
            }

            Test(() =>
            {
                ContentTypeInstaller.InstallContentType(CtdTextEditor);
                ContentTypeInstaller.InstallContentType(CtdTextEditorSibling);
                ContentTypeInstaller.InstallContentType(CtdTextEditorChild1);
                ContentTypeInstaller.InstallContentType(CtdTextEditorChild2);
                ContentTypeInstaller.InstallContentType(CtdTextEditorChild3);

                var fs1 = ContentType.GetByName(CtdTextEditorName).FieldSettings.First(fs => fs.Name == "LongText1");
                Assert.AreEqual("LongText", fs1.ShortName);

                // create text content and fill the field
                var parent = new SystemFolder(Repository.Root);
                parent.Save();

                var testContent1 = CreateTestContent(CtdTextEditorName, parent);
                var testContent2 = CreateTestContent(CtdTextEditorSiblingName, parent);
                var testContent3 = CreateTestContent(CtdTextEditorChild1Name, parent);
                var testContent4 = CreateTestContent(CtdTextEditorChild2Name, parent);
                var testContent5 = CreateTestContent(CtdTextEditorChild3Name, parent);

                var cb = new ContentTypeBuilder(null);

                // change field type and set a couple of additional properties
                cb.ChangeFieldType("LongText1", "RichText")
                .Type(CtdTextEditorName)
                .Field("LongText1")
                .DisplayName("My rich text field")
                .Compulsory()
                .VisibleEdit(FieldVisibility.Hide);

                cb.Apply();

                fs1     = ContentType.GetByName(CtdTextEditorName).FieldSettings.Single(fs => fs.Name == "LongText1");
                var fs2 = ContentType.GetByName(CtdTextEditorSiblingName).FieldSettings.Single(fs => fs.Name == "LongText1");
                var fs3 = ContentType.GetByName(CtdTextEditorChild1Name).FieldSettings.Single(fs => fs.Name == "LongText1");
                var fs4 = ContentType.GetByName(CtdTextEditorChild2Name).FieldSettings.Single(fs => fs.Name == "LongText1");
                var fs5 = ContentType.GetByName(CtdTextEditorChild3Name).FieldSettings.Single(fs => fs.Name == "LongText1");

                // check new and preserved properties
                AssertProperties(fs1, "My rich text field", "Preserved desc",
                                 true, FieldVisibility.Hide, "abc");
                AssertProperties(fs2, null, "Sibling desc",
                                 false, FieldVisibility.Show, "sibling");
                AssertProperties(fs3, "My rich text field", "Preserved desc",
                                 true, FieldVisibility.Hide, "abc");
                AssertProperties(fs4, "My rich text field", "TextEditorChild2 desc",
                                 true, FieldVisibility.Hide, "def");
                AssertProperties(fs5, "My rich text field", "TextEditorChild2 desc",
                                 true, FieldVisibility.Hide, "ghi");

                testContent1 = Content.Load(testContent1.Id);
                testContent2 = Content.Load(testContent2.Id);
                testContent3 = Content.Load(testContent3.Id);
                testContent4 = Content.Load(testContent4.Id);
                testContent5 = Content.Load(testContent5.Id);

                Assert.AreEqual($"{CtdTextEditorName} longtext value", ((RichTextFieldValue)testContent1["LongText1"]).Text);
                Assert.AreEqual($"{CtdTextEditorSiblingName} longtext value", ((RichTextFieldValue)testContent2["LongText1"]).Text);
                Assert.AreEqual($"{CtdTextEditorChild1Name} longtext value", ((RichTextFieldValue)testContent3["LongText1"]).Text);
                Assert.AreEqual($"{CtdTextEditorChild2Name} longtext value", ((RichTextFieldValue)testContent4["LongText1"]).Text);
                Assert.AreEqual($"{CtdTextEditorChild3Name} longtext value", ((RichTextFieldValue)testContent5["LongText1"]).Text);
            });
        }