Adding tests and placeholder implementation of TopDescCache

--HG--
branch : dev
This commit is contained in:
Louis DeJardin
2010-04-14 15:53:28 -07:00
parent 1c00ffb3b6
commit c319bf2e6b
6 changed files with 150 additions and 0 deletions

View File

@@ -0,0 +1,113 @@
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
using Autofac;
using NUnit.Framework;
using Orchard.Environment.Configuration;
using Orchard.Environment.Topology;
using Orchard.Environment.Topology.Models;
namespace Orchard.Tests.Environment.Topology {
[TestFixture]
public class DefaultTopologyDescriptorCacheTests {
private IContainer _container;
[SetUp]
public void Init() {
var builder = new ContainerBuilder();
builder.RegisterType<DefaultTopologyDescriptorCache>().As<ITopologyDescriptorCache>();
_container = builder.Build();
}
[Test]
public void FetchReturnsNullForCacheMiss() {
var service = _container.Resolve<ITopologyDescriptorCache>();
var descriptor = service.Fetch("No such shell");
Assert.That(descriptor, Is.Null);
}
[Test]
public void StoreCanBeCalledMoreThanOnceOnTheSameName() {
var service = _container.Resolve<ITopologyDescriptorCache>();
var descriptor = new ShellTopologyDescriptor { SerialNumber = 6655321 };
service.Store("Hello", descriptor);
service.Store("Hello", descriptor);
var result = service.Fetch("Hello");
Assert.That(result, Is.Not.Null);
Assert.That(result.SerialNumber, Is.EqualTo(6655321));
}
[Test]
public void SecondCallUpdatesData() {
var service = _container.Resolve<ITopologyDescriptorCache>();
var descriptor1 = new ShellTopologyDescriptor { SerialNumber = 6655321 };
service.Store("Hello", descriptor1);
var descriptor2 = new ShellTopologyDescriptor { SerialNumber = 42 };
service.Store("Hello", descriptor2);
var result = service.Fetch("Hello");
Assert.That(result, Is.Not.Null);
Assert.That(result.SerialNumber, Is.EqualTo(42));
}
[Test]
public void StoreNullWillClearEntry() {
var service = _container.Resolve<ITopologyDescriptorCache>();
var descriptor1 = new ShellTopologyDescriptor { SerialNumber = 6655321 };
service.Store("Hello", descriptor1);
var result1 = service.Fetch("Hello");
Assert.That(result1, Is.Not.Null);
service.Store("Hello", null);
var result2 = service.Fetch("Hello");
Assert.That(result2, Is.Null);
}
[Test]
public void AllDataWillRoundTrip() {
var service = _container.Resolve<ITopologyDescriptorCache>();
var descriptor = new ShellTopologyDescriptor {
SerialNumber = 6655321,
Settings = new ShellSettings {
Name = "Testing",
DataProvider = "s1",
DataConnectionString = "s2",
DataPrefix = "s3"
},
EnabledFeatures = new[] {
new TopologyFeature {ExtensionName = "f1", FeatureName = "f2"},
new TopologyFeature {ExtensionName = "f3", FeatureName = "f4"},
},
Parameters = new[] {
new TopologyParameter {Component = "p1", Name = "p2",Value = "p3"},
new TopologyParameter {Component = "p4",Name = "p5", Value = "p6"},
},
};
var descriptorInfo = descriptor.ToDataString();
service.Store("Hello", descriptor);
var result = service.Fetch("Hello");
var resultInfo = result.ToDataString();
Assert.That(descriptorInfo, Is.StringContaining("Testing"));
Assert.That(resultInfo, Is.StringContaining("Testing"));
Assert.That(descriptorInfo, Is.EqualTo(resultInfo));
}
}
static class DataContractExtensions {
public static string ToDataString<T>(this T obj) {
var serializer = new DataContractSerializer(typeof(ShellTopologyDescriptor));
var writer = new StringWriter();
using (var xmlWriter = XmlWriter.Create(writer)) {
serializer.WriteObject(xmlWriter, obj);
}
return writer.ToString();
}
}
}

View File

@@ -90,6 +90,9 @@
<HintPath>..\..\lib\sqlite\System.Data.SQLite.DLL</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Serialization">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Web.Abstractions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -162,6 +165,7 @@
<Compile Include="Environment\OrchardStarterTests.cs" />
<Compile Include="Environment\ShellBuilders\SetupShellContainerFactoryTests.cs" />
<Compile Include="Environment\TestDependencies\TestDependency.cs" />
<Compile Include="Environment\Topology\DefaultTopologyDescriptorCacheTests.cs" />
<Compile Include="EventsTests.cs" />
<Compile Include="Extensions\ExtensionFoldersTests.cs" />
<Compile Include="Extensions\ExtensionManagerTests.cs" />

View File

@@ -123,6 +123,7 @@
<Compile Include="Scheduling\Models\Task.cs" />
<Compile Include="Settings\Drivers\SiteSettingsDriver.cs" />
<Compile Include="Settings\Permissions.cs" />
<Compile Include="Settings\Services\TopologyDescriptorProvider.cs" />
<Compile Include="Themes\DesignerNotes\ZoneManagerEvents.cs" />
<Compile Include="Themes\Preview\IPreviewTheme.cs" />
<Compile Include="Themes\Preview\PreviewThemeFilter.cs" />

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Orchard.Environment.Topology;
using Orchard.Environment.Topology.Models;
namespace Orchard.Core.Settings.Services {
public class TopologyDescriptorProvider : ITopologyDescriptorProvider {
public ShellTopologyDescriptor GetTopologyDescriptor() {
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,17 @@
using System.Collections.Generic;
using Orchard.Environment.Topology.Models;
namespace Orchard.Environment.Topology {
public class DefaultTopologyDescriptorCache : ITopologyDescriptorCache {
readonly IDictionary<string, ShellTopologyDescriptor> _cache= new Dictionary<string, ShellTopologyDescriptor>();
public ShellTopologyDescriptor Fetch(string name) {
ShellTopologyDescriptor value;
return _cache.TryGetValue(name, out value) ? value : null;
}
public void Store(string name, ShellTopologyDescriptor descriptor) {
_cache[name] = descriptor;
}
}
}

View File

@@ -167,6 +167,7 @@
<Compile Include="Environment\Configuration\DefaultTenantManager.cs" />
<Compile Include="Environment\Configuration\ITenantManager.cs" />
<Compile Include="Environment\AutofacUtil\ContainerUpdater.cs" />
<Compile Include="Environment\Topology\DefaultTopologyDescriptorCache.cs" />
<Compile Include="Environment\Topology\ICompositionStrategy.cs" />
<Compile Include="Environment\Topology\ITopologyDescriptorProvider.cs" />
<Compile Include="Environment\Topology\ITopologyDescriptorCache.cs" />