diff --git a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj index cf121c5..df29425 100644 --- a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj +++ b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj @@ -49,7 +49,9 @@ + + diff --git a/app/Umbraco/Archetype.Tests/Data/sample-1.json b/app/Umbraco/Archetype.Tests/Data/sample-1.json new file mode 100644 index 0000000..d33db6b --- /dev/null +++ b/app/Umbraco/Archetype.Tests/Data/sample-1.json @@ -0,0 +1 @@ +{"fieldsets":[{"alias":"archUi","properties":[{"alias":"blurb","value":"A blurb here"},{"alias":"boxHeadline","value":"Box 1 Title"},{"alias":"link","value":"3175"},{"alias":"show","value":"1"}],"remove":false,"collapse":true,"isValid":true},{"alias":"archUi","properties":[{"alias":"boxHeadline","value":"Another Box"},{"alias":"blurb","value":"Some content"},{"alias":"link","value":"3175"},{"alias":"show","value":"0"}],"remove":false,"collapse":true,"isValid":true}]} \ No newline at end of file diff --git a/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs b/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs new file mode 100644 index 0000000..3b1c401 --- /dev/null +++ b/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Archetype.Umbraco.PropertyConverters; +using NUnit.Framework; + +namespace Archetype.Tests.Models +{ + + [TestFixture] + public class FieldsetTests + { + + private string _sampleJson; + + [SetUp] + public void SetUp() + { + _sampleJson = File.ReadAllText("..\\..\\Data\\sample-1.json"); + } + + [Test] + public void Can_Get_Fieldset_Property_By_Alias() + { + var converter = new ArchetypeValueConverter(); + var result = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, _sampleJson, false); + + var fieldset = result.Fieldsets.First(); + var propertyValue = fieldset.GetValue("boxHeadline"); + + Assert.That(propertyValue == "Box 1 Title"); + } + + [Test] + public void Can_Convert_Property_Value_Types() + { + var converter = new ArchetypeValueConverter(); + var result = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, _sampleJson, false); + + var fieldset = result.Fieldsets.First(); + + Assert.That(fieldset.GetValue("link") == 3175); + Assert.That(fieldset.GetValue("show") == true); + Assert.That(fieldset.GetValue("blurb") == "A blurb here"); + } + + [Test] + public void Returns_String_When_No_Type_Specified() + { + var converter = new ArchetypeValueConverter(); + var result = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, _sampleJson, false); + + var fieldset = result.Fieldsets.First(); + + var property = fieldset.GetValue("link"); + Assert.That(property is string); + Assert.That(property == "3175"); + } + + } +} diff --git a/app/Umbraco/Archetype.Tests/PropertyValueConverter/PropertyValueConverterTests.cs b/app/Umbraco/Archetype.Tests/PropertyValueConverter/PropertyValueConverterTests.cs new file mode 100644 index 0000000..710be06 --- /dev/null +++ b/app/Umbraco/Archetype.Tests/PropertyValueConverter/PropertyValueConverterTests.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Archetype.Umbraco.PropertyConverters; +using Moq; +using NUnit.Framework; +using Umbraco.Core.Models.PublishedContent; + +namespace Archetype.Tests.PropertyValueConverter +{ + [TestFixture] + public class PropertyValueConverterTests + { + + private string _sampleJson; + + [SetUp] + public void SetUp() + { + _sampleJson = File.ReadAllText("..\\..\\Data\\sample-1.json"); + } + + [Test] + public void Returns_Null_When_Data_Is_Null() + { + var converter = new ArchetypeValueConverter(); + var result = converter.ConvertDataToSource(null, null, false); + + Assert.IsNull(result); + } + + [Test] + public void Returns_Empty_String_When_Data_Is_Empty_String() + { + var data = ""; + var converter = new ArchetypeValueConverter(); + var result = converter.ConvertDataToSource(null, data, false); + + Assert.AreEqual("", result); + } + + [Test] + public void Returns_Original_String_When_Data_Is_Invalid_Json() + { + var data = "{ invalid"; + var converter = new ArchetypeValueConverter(); + var result = converter.ConvertDataToSource(null, data, false); + + Assert.AreEqual(data, result); + } + + [Test] + public void Can_Serialize_From_Json_Model() + { + var converter = new ArchetypeValueConverter(); + var result = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, _sampleJson, false); + + Assert.That(result != null); + Assert.That(result.Fieldsets.Count() == 2); + } + } +}