2010-05-28 13:03:57 -07:00
|
|
|
|
using System.Collections.Generic;
|
2010-07-14 00:45:14 -07:00
|
|
|
|
using System.Linq;
|
2010-09-02 22:14:07 -07:00
|
|
|
|
using System.Web;
|
2010-05-28 13:03:57 -07:00
|
|
|
|
using Autofac;
|
|
|
|
|
using Moq;
|
|
|
|
|
using NUnit.Framework;
|
2010-09-02 22:14:07 -07:00
|
|
|
|
using Orchard.Environment;
|
2010-05-28 13:03:57 -07:00
|
|
|
|
using Orchard.Environment.Configuration;
|
|
|
|
|
using Orchard.Environment.ShellBuilders;
|
|
|
|
|
using Orchard.Environment.State;
|
2010-06-11 17:28:46 -07:00
|
|
|
|
using Orchard.Environment.Descriptor.Models;
|
2010-05-28 13:03:57 -07:00
|
|
|
|
using Orchard.Events;
|
2010-09-02 22:14:07 -07:00
|
|
|
|
using Orchard.Mvc;
|
2010-05-28 13:03:57 -07:00
|
|
|
|
using Orchard.Tests.Utility;
|
|
|
|
|
|
2010-05-28 14:01:10 -07:00
|
|
|
|
namespace Orchard.Tests.Environment.State {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
[TestFixture]
|
2010-05-28 14:01:10 -07:00
|
|
|
|
public class DefaultProcessingEngineTests {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
private IContainer _container;
|
|
|
|
|
private ShellContext _shellContext;
|
|
|
|
|
|
|
|
|
|
[SetUp]
|
2010-05-28 14:01:10 -07:00
|
|
|
|
public void Init() {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
var builder = new ContainerBuilder();
|
|
|
|
|
builder.RegisterType<DefaultProcessingEngine>().As<IProcessingEngine>();
|
2010-11-24 18:57:42 -08:00
|
|
|
|
builder.RegisterType<WorkContextAccessor>().As<IWorkContextAccessor>();
|
2010-05-28 13:03:57 -07:00
|
|
|
|
builder.RegisterAutoMocking();
|
|
|
|
|
_container = builder.Build();
|
|
|
|
|
|
2010-05-28 14:01:10 -07:00
|
|
|
|
_shellContext = new ShellContext {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
Descriptor = new ShellDescriptor(),
|
|
|
|
|
Settings = new ShellSettings(),
|
|
|
|
|
LifetimeScope = _container.BeginLifetimeScope(),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
_container.Mock<IShellContextFactory>()
|
|
|
|
|
.Setup(x => x.CreateDescribedContext(_shellContext.Settings, _shellContext.Descriptor))
|
|
|
|
|
.Returns(_shellContext);
|
2010-09-02 22:14:07 -07:00
|
|
|
|
_container.Mock<IHttpContextAccessor>()
|
|
|
|
|
.Setup(x=>x.Current())
|
|
|
|
|
.Returns(default(HttpContextBase));
|
2010-05-28 13:03:57 -07:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
2010-05-28 14:01:10 -07:00
|
|
|
|
public void NoTasksPendingByDefault() {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
var engine = _container.Resolve<IProcessingEngine>();
|
|
|
|
|
var pending = engine.AreTasksPending();
|
|
|
|
|
Assert.That(pending, Is.False);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
2010-05-28 14:01:10 -07:00
|
|
|
|
public void ExecuteTaskIsSafeToCallWhenItDoesNothing() {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
var engine = _container.Resolve<IProcessingEngine>();
|
|
|
|
|
var pending1 = engine.AreTasksPending();
|
|
|
|
|
engine.ExecuteNextTask();
|
|
|
|
|
var pending2 = engine.AreTasksPending();
|
|
|
|
|
Assert.That(pending1, Is.False);
|
|
|
|
|
Assert.That(pending2, Is.False);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
2010-05-28 14:01:10 -07:00
|
|
|
|
public void CallingAddTaskReturnsResultIdentifierAndCausesPendingToBeTrue() {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
var engine = _container.Resolve<IProcessingEngine>();
|
|
|
|
|
var pending1 = engine.AreTasksPending();
|
2010-05-28 14:01:10 -07:00
|
|
|
|
var resultId = engine.AddTask(new ShellSettings {Name = "Default"}, null, null, null);
|
2010-05-28 13:03:57 -07:00
|
|
|
|
var pending2 = engine.AreTasksPending();
|
|
|
|
|
Assert.That(pending1, Is.False);
|
|
|
|
|
Assert.That(resultId, Is.Not.Null);
|
|
|
|
|
Assert.That(resultId, Is.Not.Empty);
|
|
|
|
|
Assert.That(pending2, Is.True);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
2010-05-28 14:01:10 -07:00
|
|
|
|
public void CallingExecuteCausesEventToFireAndPendingFlagToBeCleared() {
|
2010-05-28 13:03:57 -07:00
|
|
|
|
_container.Mock<IEventBus>()
|
2010-07-14 00:45:14 -07:00
|
|
|
|
.Setup(x => x.Notify(It.IsAny<string>(), It.IsAny<IDictionary<string, object>>()))
|
|
|
|
|
.Returns(Enumerable.Empty<object>());
|
2010-05-28 13:03:57 -07:00
|
|
|
|
|
|
|
|
|
var engine = _container.Resolve<IProcessingEngine>();
|
|
|
|
|
var pending1 = engine.AreTasksPending();
|
|
|
|
|
engine.AddTask(_shellContext.Settings, _shellContext.Descriptor, "foo", null);
|
|
|
|
|
var pending2 = engine.AreTasksPending();
|
|
|
|
|
engine.ExecuteNextTask();
|
|
|
|
|
var pending3 = engine.AreTasksPending();
|
|
|
|
|
Assert.That(pending1, Is.False);
|
|
|
|
|
Assert.That(pending2, Is.True);
|
|
|
|
|
Assert.That(pending3, Is.False);
|
|
|
|
|
|
|
|
|
|
_container.Mock<IEventBus>()
|
|
|
|
|
.Verify(x => x.Notify("foo", null));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|