using System; using System.Collections.Generic; using System.Web.Mvc; using System.Web.Routing; using NUnit.Framework; using Orchard.Mvc.ModelBinders; using Orchard.Mvc.Routes; using IModelBinderProvider = Orchard.Mvc.ModelBinders.IModelBinderProvider; namespace Orchard.Tests.Environment { [TestFixture] public class DefaultOrchardShellTests { static RouteDescriptor Desc(string name, string url) { return new RouteDescriptor { Name = name, Route = new Route(url, new MvcRouteHandler()) }; } static ModelBinderDescriptor BinderDesc(Type type, IModelBinder modelBinder) { return new ModelBinderDescriptor { Type = type, ModelBinder = modelBinder }; } //[Test] //public void ActivatingRuntimeCausesRoutesAndModelBindersToBePublished() { // var provider1 = new StubRouteProvider(new[] { Desc("foo1", "foo1"), Desc("foo2", "foo2") }); // var provider2 = new StubRouteProvider(new[] { Desc("foo1", "foo1"), Desc("foo2", "foo2") }); // var publisher = new StubRoutePublisher(); // var modelBinderProvider1 = new StubModelBinderProvider(new[] { BinderDesc(typeof(object), null), BinderDesc(typeof(string), null) }); // var modelBinderProvider2 = new StubModelBinderProvider(new[] { BinderDesc(typeof(int), null), BinderDesc(typeof(long), null) }); // var modelBinderPublisher = new StubModelBinderPublisher(); // var runtime = new DefaultOrchardShell( // new[] { provider1, provider2 }, // publisher, // new[] { modelBinderProvider1, modelBinderProvider2 }, // modelBinderPublisher, // new ViewEngineCollection { new WebFormViewEngine() }, // new Mock().Object); // runtime.Activate(); // Assert.That(publisher.Routes.Count(), Is.EqualTo(4)); // Assert.That(modelBinderPublisher.ModelBinders.Count(), Is.EqualTo(4)); //} public class StubRouteProvider : IRouteProvider { private readonly IEnumerable _routes; public StubRouteProvider(IEnumerable routes) { _routes = routes; } public IEnumerable GetRoutes() { return _routes; } public void GetRoutes(ICollection routes) { foreach (var routeDescriptor in GetRoutes()) routes.Add(routeDescriptor); } } public class StubRoutePublisher : IRoutePublisher { public void Publish(IEnumerable routes) { Routes = routes; } public IEnumerable Routes { get; set; } } public class StubModelBinderProvider : IModelBinderProvider { private readonly IEnumerable _binders; public StubModelBinderProvider(IEnumerable routes) { _binders = routes; } public IEnumerable GetModelBinders() { return _binders; } } public class StubModelBinderPublisher : IModelBinderPublisher { public void Publish(IEnumerable modelBinders) { ModelBinders = modelBinders; } public IEnumerable ModelBinders { get; set; } } } }