Update unit tests to use StubAppDataFolder

--HG--
branch : dev
This commit is contained in:
Renaud Paquay
2010-06-16 11:49:45 -07:00
parent ec0e452c3a
commit f8fe5a8665
5 changed files with 63 additions and 65 deletions

View File

@@ -6,25 +6,18 @@ using NUnit.Framework;
using Orchard.Environment.Descriptor;
using Orchard.Environment.Descriptor.Models;
using Orchard.FileSystems.AppData;
using Orchard.FileSystems.VirtualPath;
using Orchard.Services;
using Orchard.Tests.Environment.Configuration;
using Orchard.Tests.FileSystems.AppData;
using Orchard.Tests.Stubs;
namespace Orchard.Tests.Environment.Blueprint {
[TestFixture]
public class DefaultShellDescriptorCacheTests {
private IContainer _container;
private string _tempFolder;
private IAppDataFolder _appDataFolder;
[SetUp]
public void Init() {
_tempFolder = Path.GetTempFileName();
File.Delete(_tempFolder);
Directory.CreateDirectory(_tempFolder);
_appDataFolder = AppDataFolderTests.CreateAppDataFolder(_tempFolder);
var clock = new StubClock();
_appDataFolder = new StubAppDataFolder(clock);
var builder = new ContainerBuilder();
builder.RegisterInstance(_appDataFolder).As<IAppDataFolder>();
@@ -32,11 +25,6 @@ namespace Orchard.Tests.Environment.Blueprint {
_container = builder.Build();
}
[TearDown]
public void Term() {
Directory.Delete(_tempFolder, true);
}
[Test]
public void FetchReturnsNullForCacheMiss() {
var service = _container.Resolve<IShellDescriptorCache>();

View File

@@ -2,37 +2,28 @@
using System.Linq;
using Moq;
using NUnit.Framework;
using Orchard.Environment;
using Orchard.Environment.Configuration;
using Orchard.FileSystems.AppData;
using Orchard.FileSystems.VirtualPath;
using Orchard.Services;
using Orchard.Tests.FileSystems.AppData;
using Orchard.Tests.Stubs;
namespace Orchard.Tests.Environment.Configuration {
[TestFixture]
public class DefaultTenantManagerTests {
private string _tempFolder;
private IAppDataFolder _appData;
private StubAppDataFolder _appDataFolder;
[SetUp]
public void Init() {
_tempFolder = Path.GetTempFileName();
File.Delete(_tempFolder);
_appData = AppDataFolderTests.CreateAppDataFolder(_tempFolder);
}
[TearDown]
public void Term() {
Directory.Delete(_tempFolder, true);
var clock = new StubClock();
_appDataFolder = new StubAppDataFolder(clock);
}
[Test]
public void SingleSettingsFileShouldComeBackAsExpected() {
_appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else");
IShellSettingsManager loader = new ShellSettingsManager(_appData, new Mock<IShellSettingsManagerEventHandler>().Object);
_appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else");
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
var settings = loader.LoadSettings().Single();
Assert.That(settings, Is.Not.Null);
Assert.That(settings.Name, Is.EqualTo("Default"));
@@ -44,10 +35,10 @@ namespace Orchard.Tests.Environment.Configuration {
[Test]
public void MultipleFilesCanBeDetected() {
_appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else");
_appData.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SQLite2\r\nDataConnectionString: something else2");
_appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else");
_appDataFolder.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SQLite2\r\nDataConnectionString: something else2");
IShellSettingsManager loader = new ShellSettingsManager(_appData, new Mock<IShellSettingsManagerEventHandler>().Object);
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
var settings = loader.LoadSettings();
Assert.That(settings.Count(), Is.EqualTo(2));
@@ -64,16 +55,16 @@ namespace Orchard.Tests.Environment.Configuration {
[Test]
public void NewSettingsCanBeStored() {
_appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else");
_appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else");
IShellSettingsManager loader = new ShellSettingsManager(_appData, new Mock<IShellSettingsManagerEventHandler>().Object);
var foo = new ShellSettings {Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux"};
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
var foo = new ShellSettings { Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux" };
Assert.That(loader.LoadSettings().Count(), Is.EqualTo(1));
loader.SaveSettings(foo);
Assert.That(loader.LoadSettings().Count(), Is.EqualTo(2));
var text = File.ReadAllText(_appData.MapPath("Sites\\Foo\\Settings.txt"));
var text = _appDataFolder.ReadFile("Sites\\Foo\\Settings.txt");
Assert.That(text, Is.StringContaining("Foo"));
Assert.That(text, Is.StringContaining("Bar"));
Assert.That(text, Is.StringContaining("Quux"));

View File

@@ -7,7 +7,6 @@ using System.Web.Mvc;
using System.Web.Routing;
using Autofac;
using Autofac.Integration.Web;
using Moq;
using NUnit.Framework;
using Orchard.Caching;
using Orchard.Environment;
@@ -23,9 +22,7 @@ using Orchard.FileSystems.AppData;
using Orchard.Mvc;
using Orchard.Mvc.ModelBinders;
using Orchard.Mvc.Routes;
using Orchard.Tests.Environment.Configuration;
using Orchard.Tests.Environment.TestDependencies;
using Orchard.Tests.FileSystems.AppData;
using Orchard.Tests.Stubs;
using Orchard.Tests.Utility;
@@ -41,12 +38,9 @@ namespace Orchard.Tests.Environment {
[SetUp]
public void Init() {
var temp = Path.GetTempFileName();
File.Delete(temp);
Directory.CreateDirectory(temp);
var clock = new StubClock();
var appDataFolder = new StubAppDataFolder(clock);
var appDataFolder = AppDataFolderTests.CreateAppDataFolder(temp);
_controllerBuilder = new ControllerBuilder();
_routeCollection = new RouteCollection();
_modelBinderDictionary = new ModelBinderDictionary();
@@ -60,7 +54,7 @@ namespace Orchard.Tests.Environment {
builder.RegisterType<ModelBinderPublisher>().As<IModelBinderPublisher>();
builder.RegisterType<ShellContextFactory>().As<IShellContextFactory>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
builder.RegisterInstance(appDataFolder);
builder.RegisterInstance(appDataFolder).As<IAppDataFolder>();
builder.RegisterInstance(_controllerBuilder);
builder.RegisterInstance(_routeCollection);
builder.RegisterInstance(_modelBinderDictionary);
@@ -83,7 +77,7 @@ namespace Orchard.Tests.Environment {
.Setup(cp => cp.GetShellDescriptor()).Returns(default(ShellDescriptor));
_container.Mock<IOrchardShellEvents>()
.Setup(e=>e.Activated());
.Setup(e => e.Activated());
var updater = new ContainerUpdater();
updater.RegisterInstance(_container).SingleInstance();

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Orchard.Caching;
using Orchard.FileSystems.AppData;
using Orchard.Services;
@@ -8,27 +9,35 @@ using Orchard.Services;
namespace Orchard.Tests.Stubs {
public class StubAppDataFolder : IAppDataFolder {
private readonly IClock _clock;
private readonly StubFileSystem _stubFileSystem;
private readonly StubFileSystem _fileSystem;
public StubAppDataFolder(IClock clock) {
_clock = clock;
_stubFileSystem = new StubFileSystem(_clock);
_fileSystem = new StubFileSystem(_clock);
}
public StubFileSystem StubFileSystem {
get { return _stubFileSystem; }
public StubFileSystem FileSystem {
get { return _fileSystem; }
}
public IEnumerable<string> ListFiles(string path) {
throw new NotImplementedException();
var entry = _fileSystem.GetDirectoryEntry(path);
if (entry == null)
throw new ArgumentException();
return entry.Entries.Where(e => e is StubFileSystem.FileEntry).Select(e => Combine(path, e.Name));
}
public IEnumerable<string> ListDirectories(string path) {
throw new NotImplementedException();
var entry = _fileSystem.GetDirectoryEntry(path);
if (entry == null)
throw new ArgumentException();
return entry.Entries.Where(e => e is StubFileSystem.DirectoryEntry).Select(e => Combine(path, e.Name));
}
public bool FileExists(string path) {
return _stubFileSystem.GetFileEntry(path) != null;
return _fileSystem.GetFileEntry(path) != null;
}
public string Combine(params string[] paths) {
@@ -36,19 +45,27 @@ namespace Orchard.Tests.Stubs {
}
public void CreateFile(string path, string content) {
throw new NotImplementedException();
using(var stream = CreateFile(path)) {
using (var writer = new StreamWriter(stream)) {
writer.Write(content);
}
}
}
public Stream CreateFile(string path) {
return _stubFileSystem.CreateFile(path);
return _fileSystem.CreateFile(path);
}
public string ReadFile(string path) {
throw new NotImplementedException();
using (var stream = OpenFile(path)) {
using (var reader = new StreamReader(stream)) {
return reader.ReadToEnd();
}
}
}
public Stream OpenFile(string path) {
return _stubFileSystem.OpenFile(path);
return _fileSystem.OpenFile(path);
}
public void DeleteFile(string path) {
@@ -56,11 +73,11 @@ namespace Orchard.Tests.Stubs {
}
public void CreateDirectory(string path) {
var entry = _stubFileSystem.CreateDirectoryEntry(path);
var entry = _fileSystem.CreateDirectoryEntry(path);
}
public IVolatileToken WhenPathChanges(string path) {
return _stubFileSystem.WhenPathChanges(path);
return _fileSystem.WhenPathChanges(path);
}
public string MapPath(string path) {
@@ -68,7 +85,7 @@ namespace Orchard.Tests.Stubs {
}
public DateTime GetLastWriteTimeUtc(string path) {
var entry = _stubFileSystem.GetFileEntry(path);
var entry = _fileSystem.GetFileEntry(path);
if (entry == null)
throw new InvalidOperationException();
return entry.LastWriteTime;

View File

@@ -287,11 +287,15 @@ namespace Orchard.Tests.Stubs {
_tokens = new Dictionary<string, Weak<Token>>(StringComparer.OrdinalIgnoreCase);
}
private DirectoryEntry GetDirectoryEntry(string path) {
public DirectoryEntry GetDirectoryEntry(string path) {
// Root is a special case: it has no name.
if (string.IsNullOrEmpty(path))
return _root;
path = path.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
var current = _root;
foreach (var name in path.Split(Path.DirectorySeparatorChar)) {
current = current.GetEntry(name) as StubFileSystem.DirectoryEntry;
current = current.GetEntry(name) as DirectoryEntry;
if (current == null)
break;
}
@@ -299,6 +303,10 @@ namespace Orchard.Tests.Stubs {
}
public DirectoryEntry CreateDirectoryEntry(string path) {
// Root is a special case: it has no name.
if (string.IsNullOrEmpty(path))
return _root;
path = path.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
var current = _root;
foreach (var name in path.Split(Path.DirectorySeparatorChar)) {
@@ -307,7 +315,6 @@ namespace Orchard.Tests.Stubs {
return current;
}
public FileEntry GetFileEntry(string path) {
var directoryName = Path.GetDirectoryName(path);
var fileName = Path.GetFileName(path);
@@ -350,6 +357,7 @@ namespace Orchard.Tests.Stubs {
public Stream CreateFile(string path) {
var entry = CreateFileEntry(path);
entry.Content.Clear();
return new FileEntryWriteStream(GetToken(path), entry, _clock);
}