// Copyright (c) Umbraco. // See LICENSE for more details. using System.Collections.Generic; using NUnit.Framework; using Umbraco.Cms.Infrastructure.Macros; using Umbraco.Cms.Tests.Common.Extensions; using Umbraco.Cms.Tests.Common.TestHelpers; namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Web.Common.Macros; [TestFixture] public class MacroParserTests { [Test] [TestCase(@"

hello world

")] public void Format_RTE_Data_For_Editor_With_No_Macros(string expected) { var content = expected; var result = MacroTagParser.FormatRichTextContentForPersistence(content); Assert.AreEqual(expected, result); } [Test] public void Format_RTE_Data_For_Editor_With_Non_AlphaNumeric_Char_In_Alias() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: My.Map.isCool eh[boy!]

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_Closing_Tag() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Params() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Params_When_MacroAlias_Not_First() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Params_When_MacroAlias_Is_First() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Params_When_Multiple_Macros() { var content = @"

asdfasdf

asdfsadf

asdfsadf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfsadf

Macro alias: Map

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Multiple_Macros() { var content = @"

asdfasdf

asdfsadf

 

 

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor(content, new Dictionary()); Assert.AreEqual( @"

asdfasdf

Macro alias: Breadcrumb

asdfsadf

 

Macro alias: login

 

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Persistence_Multiline_Parameters() { var content = @"

asdfasdf

asdfasdf asdfas asdfasdfasdf

asdfasdf

asdfdasf
asdfsdf
"; var result = MacroTagParser.FormatRichTextContentForPersistence(content); Assert.AreEqual( @"

asdfasdf

asdfdasf
asdfsdf
".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Params_Closing_Tag() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Params_Closing_Tag_And_Content() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Editor_With_Multiline_Parameters() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "test2", "value2\r\ntest" } }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: Map

asdfasdf

".NoCrLf(), result.NoCrLf()); } [Test] public void Format_RTE_Data_For_Persistence() { var content = @"

asdfasdf

asdfasdf asdfas asdfasdfasdf

asdfasdf

asdfdasf
asdfsdf
"; var result = MacroTagParser.FormatRichTextContentForPersistence(content); Assert.AreEqual( @"

asdfasdf

asdfdasf
asdfsdf
".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Persistence_No_Class() { var content = @"

asdfasdf

asdfasdf asdfas asdfasdfasdf

asdfasdf

asdfdasf
asdfsdf
"; var result = MacroTagParser.FormatRichTextContentForPersistence(content); Assert.AreEqual( @"

asdfasdf

asdfdasf
asdfsdf
".StripNewLines(), result.StripNewLines()); } [Test] public void Format_RTE_Data_For_Persistence_Custom_Single_Entry() { var content = @"

null

1089
"; var result = MacroTagParser.FormatRichTextContentForPersistence(content); Assert.AreEqual( @"", result); } [Test] public void Format_RTE_WhenMacroContainsParameter_EnableInlineMacro_WithValue_1_ItShouldBeInASpan() { var content = @"

asdfasdf

asdfsadf

asdfasdf

"; var result = MacroTagParser.FormatRichTextPersistedDataForEditor( content, new Dictionary { { "test1", "value1" }, { "enableInlineMacro", "1"} }); Assert.AreEqual( @"

asdfasdf

asdfsadf

Macro alias: My.Map.isCool eh[boy!]

asdfasdf

".StripNewLines(), result.StripNewLines()); } }