Fixing issue with deserializing macros and adding some more macro related tests.

This commit is contained in:
Morten Christensen
2012-11-08 18:27:22 -01:00
parent 705fed7a5e
commit 54df4855bc
4 changed files with 169 additions and 2 deletions

View File

@@ -44,7 +44,7 @@ namespace Umbraco.Core.Persistence.Repositories
{
var name = string.Concat(id, ".macro");
Stream file = _fileSystem.OpenFile(name);
var o = _serializationService.FromStream(file, typeof(IMacro));
var o = _serializationService.FromStream(file, typeof(Macro));
var macro = o as IMacro;
if(macro != null)

View File

@@ -105,7 +105,7 @@
</system.data>
<system.web>
<trust level="Medium" originUrl=".*"/>
<!--<trust level="Medium" originUrl=".*"/>-->
<!-- Sitemap provider-->
<siteMap defaultProvider="UmbracoSiteMapProvider" enabled="true">
<providers>

View File

@@ -0,0 +1,166 @@
using System.Collections.Generic;
using System.IO;
using System.Text;
using NUnit.Framework;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
using Umbraco.Core.Serialization;
namespace Umbraco.Tests.Models
{
[TestFixture]
public class MacroTests
{
[Test]
public void Can_Create_And_Serialize_Macro()
{
// Arrange
var serviceStackSerializer = new ServiceStackJsonSerializer();
var serializationService = new SerializationService(serviceStackSerializer);
var macro = new Macro
{
Alias = "test",
CacheByPage = false,
CacheByMember = false,
DontRender = true,
Name = "Test",
Xslt = "/xslt/testMacro.xslt",
UseInEditor = false
};
macro.Properties = new List<IMacroProperty>();
macro.Properties.Add(new MacroProperty { Alias = "level", Name = "Level", SortOrder = 0, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Number() });
macro.Properties.Add(new MacroProperty { Alias = "fixedTitle", Name = "Fixed Title", SortOrder = 1, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Text() });
// Act
var json = serializationService.ToStream(macro);
string jsonString = json.ResultStream.ToJsonString();
// Assert
Assert.That(json, Is.Not.Null);
Assert.That(json.Success, Is.True);
Assert.That(jsonString, Is.Not.Empty);
Assert.That(jsonString.StartsWith("{"), Is.True);
Assert.That(jsonString.EndsWith("}"), Is.True);
}
[Test]
public void Can_Create_And_Serialize_Then_Deserialize_Macro()
{
// Arrange
var serviceStackSerializer = new ServiceStackJsonSerializer();
var serializationService = new SerializationService(serviceStackSerializer);
var macro = new Macro
{
Alias = "test",
CacheByPage = false,
CacheByMember = false,
DontRender = true,
Name = "Test",
Xslt = "/xslt/testMacro.xslt",
UseInEditor = false
};
macro.Properties = new List<IMacroProperty>();
macro.Properties.Add(new MacroProperty { Alias = "level", Name = "Level", SortOrder = 0, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Number() });
macro.Properties.Add(new MacroProperty { Alias = "fixedTitle", Name = "Fixed Title", SortOrder = 1, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Text() });
// Act
var json = serializationService.ToStream(macro);
string jsonString = json.ResultStream.ToJsonString();
var deserialized = serializationService.FromJson<Macro>(jsonString);
var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
object o = serializationService.FromStream(stream, typeof (Macro));
var deserialized2 = o as IMacro;
// Assert
Assert.That(json.Success, Is.True);
Assert.That(jsonString, Is.Not.Empty);
Assert.That(deserialized, Is.Not.Null);
Assert.That(deserialized2, Is.Not.Null);
Assert.That(deserialized.Name, Is.EqualTo(macro.Name));
Assert.That(deserialized.Alias, Is.EqualTo(macro.Alias));
Assert.That(deserialized2.Name, Is.EqualTo(macro.Name));
Assert.That(deserialized2.Alias, Is.EqualTo(macro.Alias));
}
[Test]
public void Can_Write_Serialized_Macro_To_Disc()
{
// Arrange
var serviceStackSerializer = new ServiceStackJsonSerializer();
var serializationService = new SerializationService(serviceStackSerializer);
var fileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("macros");
var macro = new Macro
{
Alias = "test",
CacheByPage = false,
CacheByMember = false,
DontRender = true,
Name = "Test",
Xslt = "/xslt/testMacro.xslt",
UseInEditor = false
};
macro.Properties = new List<IMacroProperty>();
macro.Properties.Add(new MacroProperty { Alias = "level", Name = "Level", SortOrder = 0, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Number() });
macro.Properties.Add(new MacroProperty { Alias = "fixedTitle", Name = "Fixed Title", SortOrder = 1, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Text() });
// Act
var json = serializationService.ToStream(macro);
string jsonString = json.ResultStream.ToJsonString();
fileSystem.AddFile("test-serialized-Macro.macro", json.ResultStream, true);
// Assert
Assert.That(json.Success, Is.True);
Assert.That(jsonString, Is.Not.Empty);
Assert.That(fileSystem.FileExists("test-serialized-Macro.macro"), Is.True);
}
[Test]
public void Can_Read_And_Deserialize_Macro_From_Disc()
{
// Arrange
var serviceStackSerializer = new ServiceStackJsonSerializer();
var serializationService = new SerializationService(serviceStackSerializer);
var fileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("macros");
var macro = new Macro
{
Alias = "test",
CacheByPage = false,
CacheByMember = false,
DontRender = true,
Name = "Test",
Xslt = "/xslt/testMacro.xslt",
UseInEditor = false
};
macro.Properties = new List<IMacroProperty>();
macro.Properties.Add(new MacroProperty { Alias = "level", Name = "Level", SortOrder = 0, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Number() });
macro.Properties.Add(new MacroProperty { Alias = "fixedTitle", Name = "Fixed Title", SortOrder = 1, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Text() });
// Act
var json = serializationService.ToStream(macro);
string jsonString = json.ResultStream.ToJsonString();
fileSystem.AddFile("test-serialized-Macro.macro", json.ResultStream, true);
Stream stream = fileSystem.OpenFile("test-serialized-Macro.macro");
object o = serializationService.FromStream(stream, typeof(Macro));
var deserialized = o as IMacro;
// Assert
Assert.That(json.Success, Is.True);
Assert.That(jsonString, Is.Not.Empty);
Assert.That(fileSystem.FileExists("test-serialized-Macro.macro"), Is.True);
Assert.That(deserialized, Is.Not.Null);
Assert.That(deserialized.Name, Is.EqualTo(macro.Name));
Assert.That(deserialized.Alias, Is.EqualTo(macro.Alias));
}
}
}

View File

@@ -96,6 +96,7 @@
<Compile Include="LibraryTests.cs" />
<Compile Include="Models\ContentTests.cs" />
<Compile Include="Models\ContentXmlTest.cs" />
<Compile Include="Models\MacroTests.cs" />
<Compile Include="Models\StylesheetTests.cs" />
<Compile Include="Persistence\BaseTableByTableTest.cs" />
<Compile Include="Persistence\Caching\InMemoryCacheProviderTest.cs" />