mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adding tests and placeholder implementation of TopDescCache
--HG-- branch : dev
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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" />
|
||||
|
@@ -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" />
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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" />
|
||||
|
Reference in New Issue
Block a user