mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-12-03 12:03:51 +08:00
Update unit tests to use StubAppDataFolder
--HG-- branch : dev
This commit is contained in:
@@ -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>();
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user