Files
Orchard/src/Orchard.Tests.Packages/DatabaseEnabledTestsBase.cs
loudej 8d99ca8bee Partially complete refactoring. Adding transactions. Adjusting template locations. CURRENTLY BROKEN
--HG--
extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4044385
2009-12-21 01:30:24 +00:00

70 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Autofac;
using Autofac.Builder;
using Autofac.Modules;
using NHibernate;
using NUnit.Framework;
using Orchard.Data;
using Orchard.Services;
using Orchard.Tests.Data;
using Orchard.Tests.Stubs;
namespace Orchard.Tests.Packages {
public abstract class DatabaseEnabledTestsBase {
protected IContainer _container;
protected ISession _session;
protected string _databaseFilePath;
protected ISessionFactory _sessionFactory;
protected StubClock _clock;
[TestFixtureSetUp]
public void InitFixture() {
_databaseFilePath = Path.GetTempFileName();
}
[TestFixtureTearDown]
public void TearDownFixture() {
File.Delete(_databaseFilePath);
}
[SetUp]
public virtual void Init() {
_sessionFactory = DataUtility.CreateSessionFactory(_databaseFilePath, DatabaseTypes.ToArray());
_session = _sessionFactory.OpenSession();
_clock = new StubClock();
var builder = new ContainerBuilder();
builder.RegisterModule(new ImplicitCollectionSupportModule());
builder.Register(new StubLocator(_session)).As<ISessionLocator>();
builder.Register(_clock).As<IClock>();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
Register(builder);
_container = builder.Build();
}
[TearDown]
public void Cleanup() {
_container.Dispose();
_session.Close();
}
public abstract void Register(ContainerBuilder builder);
protected virtual IEnumerable<Type> DatabaseTypes {
get {
return Enumerable.Empty<Type>();
}
}
protected void ClearSession() {
_session.Flush();
_session.Clear();
}
}
}