diff --git a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj index 261c3f9..6cf6061 100644 --- a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj +++ b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj @@ -1,249 +1,257 @@ - - - - - Debug - AnyCPU - {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B} - Library - Properties - Archetype.Tests - Archetype.Tests - v4.5 - 512 - ..\ - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll - - - ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\businesslogic.dll - - - ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll - - - ..\packages\ClientDependency-Mvc.1.7.0.4\lib\ClientDependency.Core.Mvc.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\cms.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\controls.dll - - - ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\Examine.dll - - - ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll - - - ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll - - - ..\packages\ImageProcessor.1.8.7.0\lib\ImageProcessor.dll - - - ..\packages\ImageProcessor.Web.3.2.1.0\lib\net45\ImageProcessor.Web.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\interfaces.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\log4net.dll - - - ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.ApplicationBlocks.Data.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.Web.Helpers.dll - - - True - ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll - - - ..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.1\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll - - - ..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll - - - ..\packages\Moq.4.2.1312.1622\lib\net40\Moq.dll - - - ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll - - - False - ..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll - - - ..\packages\NUnit.2.6.3\lib\nunit.framework.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\SQLCE4Umbraco.dll - - - - - True - ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.dll - - - True - ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.Entity.dll - - - - ..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll - - - - True - ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll - - - ..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll - - - ..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll - - - True - ..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll - - - False - ..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll - True - - - True - ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll - - - True - ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll - - - True - ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll - - - - - - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\TidyNet.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Core.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.DataLayer.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.editorControls.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.MacroEngines.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.providers.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Web.UI.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.XmlSerializers.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\UmbracoExamine.dll - - - False - ..\packages\UmbracoCms.Core.7.1.1\lib\UrlRewritingNet.UrlRewriter.dll - - - - - - - - - - - - - - - - - - - {7D185D41-4228-4978-ACB8-83F9A48AD94F} - Archetype.Umbraco - - - - - + + + + + Debug + AnyCPU + {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B} + Library + Properties + Archetype.Tests + Archetype.Tests + v4.5 + 512 + ..\ + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll + + + ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\businesslogic.dll + + + ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll + + + ..\packages\ClientDependency-Mvc.1.7.0.4\lib\ClientDependency.Core.Mvc.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\cms.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\controls.dll + + + ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Examine.dll + + + ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll + + + ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll + + + ..\packages\ImageProcessor.1.8.7.0\lib\ImageProcessor.dll + + + ..\packages\ImageProcessor.Web.3.2.1.0\lib\net45\ImageProcessor.Web.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\interfaces.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\log4net.dll + + + ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.ApplicationBlocks.Data.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.Web.Helpers.dll + + + True + ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + ..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.1\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll + + + ..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll + + + ..\packages\Moq.4.2.1312.1622\lib\net40\Moq.dll + + + ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll + + + False + ..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll + + + ..\packages\NUnit.2.6.3\lib\nunit.framework.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\SQLCE4Umbraco.dll + + + + + True + ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.dll + + + True + ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.Entity.dll + + + + ..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll + + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll + + + ..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll + + + ..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll + + + True + ..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll + + + False + ..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll + True + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll + + + + + + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\TidyNet.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Core.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.DataLayer.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.editorControls.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.MacroEngines.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.providers.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Web.UI.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.XmlSerializers.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\UmbracoExamine.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\UrlRewritingNet.UrlRewriter.dll + + + + + + + + + + + + + + + + + + + + {7D185D41-4228-4978-ACB8-83F9A48AD94F} + Archetype.Umbraco + + + + + + + + + + + xcopy $(ProjectDir)SupportingFiles\config\* $(TargetDir)config /I /O /X /E /K /D + + --> \ No newline at end of file diff --git a/app/Umbraco/Archetype.Tests/Serialization/ArchetypeJsonConverterTest.cs b/app/Umbraco/Archetype.Tests/Serialization/ArchetypeJsonConverterTest.cs index f5ad6bb..27de22a 100644 --- a/app/Umbraco/Archetype.Tests/Serialization/ArchetypeJsonConverterTest.cs +++ b/app/Umbraco/Archetype.Tests/Serialization/ArchetypeJsonConverterTest.cs @@ -1,8 +1,8 @@ -using System; +using System; using Archetype.Umbraco.PropertyConverters; using Newtonsoft.Json; -using NUnit.Framework; - +using NUnit.Framework; + namespace Archetype.Tests.Serialization { [TestFixture] @@ -228,7 +228,7 @@ namespace Archetype.Tests.Serialization } [Test] - public void DeserializeNumericAndDateModelFromArchetype() + public void DeserializeNumericAndDateModelFromArchetype() { var result = JsonConvert.DeserializeObject(JsonTestStrings._ANNUAL_STATEMENT_JSON); diff --git a/app/Umbraco/Archetype.Tests/SupportingFiles/config/umbracoSettings.config b/app/Umbraco/Archetype.Tests/SupportingFiles/config/umbracoSettings.config new file mode 100644 index 0000000..2ccc8a5 --- /dev/null +++ b/app/Umbraco/Archetype.Tests/SupportingFiles/config/umbracoSettings.config @@ -0,0 +1,109 @@ + + + + + + + + + 1 + + + + + + your@email.here + + + + text + + + In Preview Mode - click to end]]> + + + + 1800 + + + inline + + + ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd + + + Textstring + + + + + false + + false + + + + + false + + true + + + + + Mvc + + + + + + + + + + + + 0 + + + + + + + + + + + + + diff --git a/app/Umbraco/Archetype.Tests/app.config b/app/Umbraco/Archetype.Tests/app.config index 72cac16..786460d 100644 --- a/app/Umbraco/Archetype.Tests/app.config +++ b/app/Umbraco/Archetype.Tests/app.config @@ -1,6 +1,14 @@  - + + +
+ + + + + + diff --git a/app/Umbraco/Umbraco.Archetype.sln b/app/Umbraco/Umbraco.Archetype.sln index 88272ac..68ebc7d 100644 --- a/app/Umbraco/Umbraco.Archetype.sln +++ b/app/Umbraco/Umbraco.Archetype.sln @@ -1,33 +1,33 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Archetype.Umbraco", "Umbraco.Archetype\Archetype.Umbraco.csproj", "{7D185D41-4228-4978-ACB8-83F9A48AD94F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D84AA4ED-85A6-484F-9E72-BE7AC9835821}" - ProjectSection(SolutionItems) = preProject - .nuget\NuGet.Config = .nuget\NuGet.Config - .nuget\NuGet.exe = .nuget\NuGet.exe - .nuget\NuGet.targets = .nuget\NuGet.targets - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Archetype.Tests", "Archetype.Tests\Archetype.Tests.csproj", "{21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Release|Any CPU.Build.0 = Release|Any CPU - {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Archetype.Umbraco", "Umbraco.Archetype\Archetype.Umbraco.csproj", "{7D185D41-4228-4978-ACB8-83F9A48AD94F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D84AA4ED-85A6-484F-9E72-BE7AC9835821}" + ProjectSection(SolutionItems) = preProject + .nuget\NuGet.Config = .nuget\NuGet.Config + .nuget\NuGet.exe = .nuget\NuGet.exe + .nuget\NuGet.targets = .nuget\NuGet.targets + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Archetype.Tests", "Archetype.Tests\Archetype.Tests.csproj", "{21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D185D41-4228-4978-ACB8-83F9A48AD94F}.Release|Any CPU.Build.0 = Release|Any CPU + {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/app/Umbraco/Umbraco.Archetype/Serialization/ArchetypeJsonConverter.cs b/app/Umbraco/Umbraco.Archetype/Serialization/ArchetypeJsonConverter.cs index 618b9aa..21c1b42 100644 --- a/app/Umbraco/Umbraco.Archetype/Serialization/ArchetypeJsonConverter.cs +++ b/app/Umbraco/Umbraco.Archetype/Serialization/ArchetypeJsonConverter.cs @@ -5,7 +5,8 @@ using System.Dynamic; using System.IO; using System.Linq; using System.Reflection; -using System.Text; +using System.Text; +using Archetype.Umbraco.Models; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -173,7 +174,7 @@ namespace Archetype.Umbraco.Serialization return IsValueArchetypeDatatype(propertyInfo.PropertyType) ? JsonConvert.DeserializeObject(propJToken["value"].ToString(), propertyInfo.PropertyType, GetArchetypeDatatypeConverter()) - : GetDeserializedPropertyValue(propJToken["value"], propertyInfo.PropertyType); + : GetDeserializedPropertyValue(propJToken, propertyInfo.PropertyType); } private bool PropertyLayoutHasFieldsets(IEnumerable properties) @@ -329,19 +330,21 @@ namespace Archetype.Umbraco.Serialization return String.Format("{0}", propValue); } - private object GetDeserializedPropertyValue(JToken jToken, Type type) - { - if (String.IsNullOrEmpty(jToken.ToString())) - return GetDefault(type); - - var localType = Nullable.GetUnderlyingType(type) ?? type; - - if (localType == typeof(bool)) - return jToken.ToString() == "1"; - - return localType == typeof(DateTime) - ? Convert.ToDateTime(jToken.ToString()) - : jToken.ToObject(localType); + private object GetDeserializedPropertyValue(JToken jToken, Type type) + { + return String.IsNullOrEmpty(jToken.ToString()) + ? GetDefault(type) + : GetTypedValue(jToken, type); + } + + private object GetTypedValue(JToken jToken, Type type) + { + var property = JsonConvert.DeserializeObject(jToken.ToString()); + + var method = typeof(Property).GetMethod("GetValue"); + var getValue = method.MakeGenericMethod(type); + + return getValue.Invoke(property, null); } private object GetDefault(Type type)