Issue #AR-3_IEnumerable_support: re-factor tests, add Enumerable tests - all failing as baseline.

This commit is contained in:
cankoluman
2014-05-06 11:39:10 +01:00
parent 52ff09f089
commit bc6580995a
7 changed files with 438 additions and 90 deletions
@@ -222,6 +222,10 @@
<Compile Include="PropertyValueConverter\PropertyValueConverterTests.cs" />
<Compile Include="Serialization\ArchetypeJsonConverterComplexModelTest.cs" />
<Compile Include="Serialization\ArchetypeJsonConverterTest.cs" />
<Compile Include="Serialization\Base\ArchetypeJsonConverterTestBase.cs" />
<Compile Include="Serialization\Enumerable\ArchetypeJsonConverterTest.cs" />
<Compile Include="Serialization\Enumerable\JsonTestModels.cs" />
<Compile Include="Serialization\Enumerable\JsonTestStrings.cs" />
<Compile Include="Serialization\JsonTestStrings.cs" />
<Compile Include="Serialization\JsonTestModels.cs" />
</ItemGroup>
@@ -245,7 +249,7 @@
</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>xcopy $(ProjectDir)SupportingFiles\config\* $(TargetDir)config /I /O /X /E /K /D</PostBuildEvent>
<PostBuildEvent>xcopy $(ProjectDir)SupportingFiles\config\* $(TargetDir)config /I /O /X /E /K /D /Y</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
@@ -1,12 +1,12 @@
using System.Linq;
using Archetype.Umbraco.PropertyConverters;
using System.Linq;
using Archetype.Tests.Serialization.Base;
using Newtonsoft.Json;
using NUnit.Framework;
namespace Archetype.Tests.Serialization
{
[TestFixture]
public class ArchetypeJsonConverterComplexModelTest
[TestFixture]
public class ArchetypeJsonConverterComplexModelTest : ArchetypeJsonConverterTestBase
{
private TextList _textList;
private Captions _captions;
@@ -29,24 +29,20 @@ namespace Archetype.Tests.Serialization
[Test]
public void PageDetailsModel_Serializes_To_Archetype_Property()
{
var result = JsonConvert.SerializeObject(_pageDetails, Formatting.Indented);
var result = ConvertModelToArchetypeJson(_pageDetails, Formatting.Indented);
Assert.AreEqual(JsonTestStrings._PAGE_DETAILS_JSON, result);
}
[Test]
public void ConvertComplexModelToArchetype()
{
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(_pageDetails, Formatting.Indented);
var archetype = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
{
Assert.NotNull(ConvertModelToArchetype(_pageDetails));
}
[Test]
public void DeserializeComplexModelFromArchetype()
{
var result = JsonConvert.DeserializeObject<PageDetails>(JsonTestStrings._PAGE_DETAILS_JSON);
public void DeserializeComplexModelFromArchetype()
{
var result = ConvertArchetypeJsonToModel<PageDetails>(JsonTestStrings._PAGE_DETAILS_JSON);
Assert.NotNull(result);
Assert.IsInstanceOf<PageDetails>(result);
@@ -60,9 +56,8 @@ namespace Archetype.Tests.Serialization
[Test]
public void SerializeThenDeserializeComplexModelFromArchetype()
{
var json = JsonConvert.SerializeObject(_pageDetails);
var result = JsonConvert.DeserializeObject<PageDetails>(json);
{
var result = ConvertModelToArchetypeAndBack(_pageDetails);
Assert.NotNull(result);
Assert.IsInstanceOf<PageDetails>(result);
@@ -79,25 +74,21 @@ namespace Archetype.Tests.Serialization
[Test]
public void ConvertComplexNestedModelToArchetype()
{
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(_pages, Formatting.Indented);
var archetype = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
{
Assert.NotNull(ConvertModelToArchetype(_pages));
}
[Test]
public void PagesModel_Serializes_To_Archetype_Property()
{
var result = JsonConvert.SerializeObject(_pages, Formatting.Indented);
public void PagesModel_Serializes_To_Archetype_Property()
{
var result = ConvertModelToArchetypeJson(_pages, Formatting.Indented);
Assert.AreEqual(JsonTestStrings._PAGES_JSON, result);
}
[Test]
public void DeserializeComplexTreeModelFromArchetype()
{
var result = JsonConvert.DeserializeObject<PageList>(JsonTestStrings._PAGES_JSON);
{
var result = ConvertArchetypeJsonToModel<PageList>(JsonTestStrings._PAGES_JSON);
Assert.NotNull(result);
Assert.IsInstanceOf<PageList>(result);
@@ -125,9 +116,8 @@ namespace Archetype.Tests.Serialization
[Test]
public void SerializeThenDeserializeComplexTreeModelFromArchetype()
{
var json = JsonConvert.SerializeObject(_pages);
var result = JsonConvert.DeserializeObject<PageList>(json);
{
var result = ConvertModelToArchetypeAndBack(_pages);
Assert.NotNull(result);
Assert.IsInstanceOf<PageList>(result);
@@ -1,12 +1,12 @@
using System;
using Archetype.Umbraco.PropertyConverters;
using Archetype.Tests.Serialization.Base;
using Newtonsoft.Json;
using NUnit.Framework;
namespace Archetype.Tests.Serialization
{
[TestFixture]
public class ArchetypeJsonConverterTest
[TestFixture]
public class ArchetypeJsonConverterTest : ArchetypeJsonConverterTestBase
{
private ContactDetails _contactDetails;
private CompanyDetails _companyDetails;
@@ -62,21 +62,21 @@ namespace Archetype.Tests.Serialization
[Test]
public void MergerDetailsModel_Serializes_To_Archetype_Property()
{
var result = JsonConvert.SerializeObject(_mergerDetails, Formatting.Indented);
var result = ConvertModelToArchetypeJson(_mergerDetails, Formatting.Indented);
Assert.AreEqual(JsonTestStrings._MERGER_DETAILS_JSON, result);
}
[Test]
public void ContactDetailsModel_Serializes_To_Archetype_Property()
{
var result = JsonConvert.SerializeObject(_contactDetails, Formatting.Indented);
{
var result = ConvertModelToArchetypeJson(_contactDetails, Formatting.Indented);
Assert.AreEqual(JsonTestStrings._CONTACT_DETAILS_JSON, result);
}
[Test]
public void CompanyDetailsModel_Fieldset_Serializes_As_Expected()
{
var result = JsonConvert.SerializeObject(_companyDetails, Formatting.Indented);
{
var result = ConvertModelToArchetypeJson(_companyDetails, Formatting.Indented);
Assert.AreEqual(JsonTestStrings._COMPANY_DETAILS_JSON, result);
@@ -84,8 +84,8 @@ namespace Archetype.Tests.Serialization
[Test]
public void AnnualStatementModel_Fieldset_Serializes_As_Expected()
{
var result = JsonConvert.SerializeObject(_annualStatement, Formatting.Indented);
{
var result = ConvertModelToArchetypeJson(_annualStatement, Formatting.Indented);
Assert.AreEqual(JsonTestStrings._ANNUAL_STATEMENT_JSON, result);
@@ -93,37 +93,29 @@ namespace Archetype.Tests.Serialization
[Test]
public void NullValues_Serialize_To_Empty_String()
{
var result = JsonConvert.SerializeObject(new ContactDetails());
{
var result = ConvertModelToArchetypeJson(new ContactDetails());
Assert.AreEqual(JsonTestStrings._NULL_VALUES_JSON, result);
}
[Test]
public void ConvertModelToArchetype()
public void ConvertContactDetailsModelToArchetype()
{
var model = new ContactDetails
{
Address = "addr",
Email = "email"
};
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(model);
var archetype = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
Assert.NotNull(ConvertModelToArchetype(model));
}
[Test]
public void ConvertNumericAndDateModelToArchetype()
{
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(_annualStatement);
var archetype = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
{
Assert.NotNull(ConvertModelToArchetype(_annualStatement));
}
[Test]
@@ -145,13 +137,9 @@ namespace Archetype.Tests.Serialization
{
UserDetails = item1,
AdminDetails = item2
};
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
var archetype = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
};
Assert.NotNull(ConvertModelToArchetype(model));
}
[Test]
@@ -173,13 +161,9 @@ namespace Archetype.Tests.Serialization
{
item1,
item2
};
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
var archetype = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
};
Assert.NotNull(ConvertModelToArchetype(model));
}
[Test]
@@ -195,11 +179,7 @@ namespace Archetype.Tests.Serialization
}
};
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
var archetype = (Archetype.Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
Assert.NotNull(ConvertModelToArchetype(model));
}
#endregion
@@ -209,7 +189,7 @@ namespace Archetype.Tests.Serialization
[Test]
public void DeserializeModelFromArchetype()
{
var result = JsonConvert.DeserializeObject<ContactDetails>(JsonTestStrings._CONTACT_DETAILS_JSON);
var result = ConvertArchetypeJsonToModel<ContactDetails>(JsonTestStrings._CONTACT_DETAILS_JSON);
Assert.NotNull(result);
Assert.IsInstanceOf<ContactDetails>(result);
@@ -230,7 +210,7 @@ namespace Archetype.Tests.Serialization
[Test]
public void DeserializeNumericAndDateModelFromArchetype()
{
var result = JsonConvert.DeserializeObject<AnnualStatement>(JsonTestStrings._ANNUAL_STATEMENT_JSON);
var result = ConvertArchetypeJsonToModel<AnnualStatement>(JsonTestStrings._ANNUAL_STATEMENT_JSON);
Assert.NotNull(result);
Assert.IsInstanceOf<AnnualStatement>(result);
@@ -255,9 +235,8 @@ namespace Archetype.Tests.Serialization
Sales = 123456700.89,
Profit = 1123456.78m
};
var json = JsonConvert.SerializeObject(annualStatement);
var result = JsonConvert.DeserializeObject<AnnualStatement>(json);
var result = ConvertModelToArchetypeAndBack(annualStatement);
Assert.NotNull(result);
Assert.IsInstanceOf<AnnualStatement>(result);
@@ -290,9 +269,8 @@ namespace Archetype.Tests.Serialization
UserDetails = item1,
AdminDetails = item2
};
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
var result = JsonConvert.DeserializeObject<AllContactDetails>(json);
var result = ConvertModelToArchetypeAndBack(model);
Assert.NotNull(result);
Assert.IsInstanceOf<AllContactDetails>(result);
@@ -323,9 +301,8 @@ namespace Archetype.Tests.Serialization
item1,
item2
};
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
var result = JsonConvert.DeserializeObject<ContactDetailsList>(json);
var result = ConvertModelToArchetypeAndBack(model);
Assert.NotNull(result);
Assert.IsInstanceOf<ContactDetailsList>(result);
@@ -349,9 +326,8 @@ namespace Archetype.Tests.Serialization
Name = "email2"
}
};
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
var result = JsonConvert.DeserializeObject<CompanyDetails>(json);
var result = ConvertModelToArchetypeAndBack(model);
Assert.NotNull(result);
Assert.IsInstanceOf<CompanyDetails>(result);
@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Archetype.Umbraco.PropertyConverters;
using at = Archetype.Umbraco.Models;
using Newtonsoft.Json;
namespace Archetype.Tests.Serialization.Base
{
public abstract class ArchetypeJsonConverterTestBase
{
public at.Archetype ConvertModelToArchetype<T>(T model)
{
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(model);
var archetype = (Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
return archetype;
}
public string ConvertModelToArchetypeJson<T>(T model, Formatting formatting = Formatting.None)
{
return JsonConvert.SerializeObject(model, formatting);
}
public T ConvertArchetypeJsonToModel<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
public T ConvertModelToArchetypeAndBack<T>(T model)
{
var json = ConvertModelToArchetypeJson(model);
return ConvertArchetypeJsonToModel<T>(json);
}
}
}
@@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using Archetype.Tests.Serialization.Base;
using Archetype.Umbraco.PropertyConverters;
using Newtonsoft.Json;
using NUnit.Framework;
namespace Archetype.Tests.Serialization.Enumerable
{
[TestFixture]
public class ArchetypeJsonConverterTest : ArchetypeJsonConverterTestBase
{
private Feedback _feedback;
[SetUp]
public void SetUp()
{
_feedback = new Feedback
{
Testimonials = new List<String>
{
"Testimonial 1",
"Testimonial 2",
"Testimonial 3"
}
};
}
[Test]
public void Convert_FeedbackModel_To_Archetype()
{
var converter = new ArchetypeValueConverter();
var json = JsonConvert.SerializeObject(_feedback);
var archetype = (Umbraco.Models.Archetype)converter.ConvertDataToSource(null, json, false);
Assert.NotNull(archetype);
}
[Test]
public void Convert_FeedbackModel_To_ArchetypeJson()
{
var json = ConvertModelToArchetype(_feedback);
Assert.AreEqual(JsonTestStrings._FEEDBACK_JSON, json);
}
[Test]
public void Convert_ArchetypeJson_To_FeedbackModel()
{
var result = ConvertArchetypeJsonToModel<Feedback>(JsonTestStrings._FEEDBACK_JSON);
Assert.NotNull(result);
}
[Test]
public void Convert_FeedbackModel_To_Archetype_AndBack()
{
var result = ConvertModelToArchetypeAndBack(_feedback);
Assert.NotNull(result);
}
}
}
@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Archetype.Umbraco.Serialization;
using Newtonsoft.Json;
namespace Archetype.Tests.Serialization.Enumerable
{
[AsArchetype("aboutUs")]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class AboutUs
{
[AsFieldset]
[JsonProperty("contacts")]
public IEnumerable<ContactDetails> Contacts { get; set; }
[AsFieldset]
[JsonProperty("testimonials")]
public IEnumerable<String> Testimonials { get; set; }
}
[AsArchetype("feedback")]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class Feedback
{
[AsFieldset]
[JsonProperty("testimonials")]
public IEnumerable<String> Testimonials { get; set; }
}
}
@@ -0,0 +1,249 @@
namespace Archetype.Tests.Serialization.Enumerable
{
public class JsonTestStrings
{
public const string _ABOUT_US_JSON =
@"{
""fieldsets"": [
{
""alias"": ""aboutUs"",
""properties"": [
{
""alias"": ""contacts"",
""value"": {
""fieldsets"": [
{
""alias"": ""contactDetails"",
""properties"": [
{
""alias"": ""name"",
""value"": ""Test""
},
{
""alias"": ""address"",
""value"": ""Test Address""
},
{
""alias"": ""telephone"",
""value"": ""111""
},
{
""alias"": ""mobile"",
""value"": ""000""
},
{
""alias"": ""fax"",
""value"": ""000""
},
{
""alias"": ""email"",
""value"": ""test@test.com""
},
{
""alias"": ""webSite"",
""value"": {
""fieldsets"": [
{
""alias"": ""urlPicker"",
""properties"": [
{
""alias"": ""title"",
""value"": ""The Test Company""
},
{
""alias"": ""url"",
""value"": ""http://test.com""
},
{
""alias"": ""content"",
""value"": """"
},
{
""alias"": ""media"",
""value"": """"
},
{
""alias"": ""openInNewWindow"",
""value"": ""1""
}
]
}
]
}
}
]
},
{
""alias"": ""contactDetails"",
""properties"": [
{
""alias"": ""name"",
""value"": ""Test1""
},
{
""alias"": ""address"",
""value"": ""Test Address 1""
},
{
""alias"": ""telephone"",
""value"": ""222""
},
{
""alias"": ""mobile"",
""value"": ""111""
},
{
""alias"": ""fax"",
""value"": ""111""
},
{
""alias"": ""email"",
""value"": ""test1@test.com""
},
{
""alias"": ""webSite"",
""value"": {
""fieldsets"": [
{
""alias"": ""urlPicker"",
""properties"": [
{
""alias"": ""title"",
""value"": ""The Test Company 1""
},
{
""alias"": ""url"",
""value"": ""http://test1.com""
},
{
""alias"": ""content"",
""value"": """"
},
{
""alias"": ""media"",
""value"": """"
},
{
""alias"": ""openInNewWindow"",
""value"": ""1""
}
]
}
]
}
}
]
},
{
""alias"": ""contactDetails"",
""properties"": [
{
""alias"": ""name"",
""value"": ""Test 2""
},
{
""alias"": ""address"",
""value"": ""Test Address 2""
},
{
""alias"": ""telephone"",
""value"": ""333""
},
{
""alias"": ""mobile"",
""value"": ""222""
},
{
""alias"": ""fax"",
""value"": ""222""
},
{
""alias"": ""email"",
""value"": ""test2@test.com""
},
{
""alias"": ""webSite"",
""value"": {
""fieldsets"": [
{
""alias"": ""urlPicker"",
""properties"": [
{
""alias"": ""title"",
""value"": ""The Test Company 2""
},
{
""alias"": ""url"",
""value"": ""http://test2.com""
},
{
""alias"": ""content"",
""value"": """"
},
{
""alias"": ""media"",
""value"": """"
},
{
""alias"": ""openInNewWindow"",
""value"": ""0""
}
]
}
]
}
}
]
}
]
}
}
]
}
]
}";
public const string _FEEDBACK_JSON =
@"{
""fieldsets"": [
{
{
""alias"": ""feedback"",
""value"": {
""fieldsets"": [
{
""alias"": ""testimonials"",
""properties"": [
{
""alias"": ""String"",
""value"": ""Testimonial 1""
}
]
},
{
""alias"": ""testimonials"",
""properties"": [
{
""alias"": ""String"",
""value"": ""Testimonial 2""
}
]
},
{
""alias"": ""testimonials"",
""properties"": [
{
""alias"": ""String"",
""value"": ""Testimonial 3""
}
]
}
]
}
}
]
}
]
}";
}
}