public void PdfResultShouldWriteToOutputStream() { var settings = new SparkSettings(); var viewFolder = new InMemoryViewFolder { { "foo/bar.spark", HelloWorldXml } }; var factory = new SparkViewFactory(settings) { ViewFolder = viewFolder }; var stream = new MemoryStream(); var controllerContext = GetControllerContext(stream); var result = new PdfViewResult { ViewEngineCollection = new ViewEngineCollection(new[] { factory }) }; result.ExecuteResult(controllerContext); Assert.That(stream.Length, Is.Not.EqualTo(0)); }
public void SettingsAreMergedRightToLeft() { var left = new SparkSettings(); var right = new SparkSettings(); right.NullBehaviour = NullBehaviour.Strict; right.PageBaseType = "test"; right.Prefix = "test"; right.StatementMarker = "T"; right.AutomaticEncoding = true; right.AddResourceMapping("test", "test"); right.AddAssembly("test"); right.AddNamespace("test"); right.AddViewFolder(typeof (int), new Dictionary<string, string>()); Merger.Merge(left, right); left.NullBehaviour.ShouldEqual(right.NullBehaviour); left.NullBehaviour.ShouldEqual(right.PageBaseType); left.NullBehaviour.ShouldEqual(right.Prefix); left.NullBehaviour.ShouldEqual(right.StatementMarker); left.NullBehaviour.ShouldEqual(right.AutomaticEncoding); left.ResourceMappings.ShouldEqual(right.ResourceMappings); left.UseAssemblies.ShouldEqual(right.UseAssemblies); left.UseNamespaces.ShouldEqual(right.UseNamespaces); }
static void Main(string[] args) { // following are one-time steps // create engine var settings = new SparkSettings() .SetPageBaseType(typeof(EmailView)); var templates = new InMemoryViewFolder(); var engine = new SparkViewEngine(settings) { ViewFolder = templates }; // add templates templates.Add("sample.spark", @"Dear ${user.Name}, This is an email.Sincerely, Spark View Engine http://constanto.org/unsubscribe/${user.Id}"); // following are per-render steps // render template var descriptor = new SparkViewDescriptor() .AddTemplate("sample.spark"); var view = (EmailView)engine.CreateInstance(descriptor); view.user = new User { Id = 655321, Name = "Alex" }; view.RenderView(Console.Out); Console.ReadLine(); }
private static ViewContext CompileView(string viewContents) { var settings = new SparkSettings(); var container = SparkRubyEngineStarter.CreateContainer(settings); var viewFolder = new InMemoryViewFolder { { string.Format("stub{0}index.spark", Path.DirectorySeparatorChar), viewContents } }; container.SetServiceBuilder <IViewFolder>(c => viewFolder); var viewEngine = container.GetService <IViewEngine>(); var httpContext = new StubHttpContext(); var routeData = new RouteData(); routeData.Values.Add("controller", "stub"); routeData.Values.Add("action", "index"); var controller = new StubController(); var controllerContext = new ControllerContext(httpContext, routeData, controller); var result = viewEngine.FindPartialView(controllerContext, "index", false); return(new ViewContext(controllerContext, result.View, new ViewDataDictionary(), new TempDataDictionary(), new StringWriter())); }
private static IMvcCoreBuilder AddFhirFormatters( this IServiceCollection services, SparkSettings settings, Action <MvcOptions> setupAction = null) { return(settings == null ? throw new ArgumentNullException(nameof(settings)) : services.AddMvcCore( options => { options.InputFormatters.Insert(0, new AsyncResourceJsonInputFormatter(new FhirJsonParser(settings.ParserSettings))); options.InputFormatters.Insert(0, new AsyncResourceXmlInputFormatter(new FhirXmlParser(settings.ParserSettings))); options.InputFormatters.Insert(0, new BinaryFhirInputFormatter()); options.OutputFormatters.Insert(0, new AsyncResourceJsonOutputFormatter(new FhirJsonSerializer(settings.SerializerSettings))); options.OutputFormatters.Insert(0, new AsyncResourceXmlOutputFormatter(new FhirXmlSerializer(settings.SerializerSettings))); options.OutputFormatters.Insert(0, new BinaryFhirOutputFormatter()); options.RespectBrowserAcceptHeader = true; setupAction?.Invoke(options); })); }
public static void RegisterViewEngine(ViewEngineCollection engines) { var settings = new SparkSettings(); settings.SetDebug(true); engines.Add(new SparkViewFactory(settings)); }
public void SectionAsSegmentAndRenderPrefixes() { var settings = new SparkSettings() .SetPageBaseType(typeof(StubSparkView)) .SetParseSectionTagAsSegment(true); var engine = new SparkViewEngine(settings) { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") }; var view = (StubSparkView) engine.CreateInstance(new SparkViewDescriptor().AddTemplate("Prefix\\section-render-prefix.spark")); var output = new StringWriter(); view.RenderView(output); ContainsInOrder(output.ToString(), "<p>one</p>", "<p>two</p>", "<p>three</p>", "<macro:ignored>ignored</macro:ignored>", "<content:ignored>ignored</content:ignored>", "<use:ignored>ignored</use:ignored>", "<render:ignored>ignored</render:ignored>", "<section:ignored>ignored</section:ignored>" ); }
public string Render <TViewData>(string template, TViewData data) { var settings = new SparkSettings(); settings.AddNamespace("Topshelf.Dashboard"); settings.PageBaseType = typeof(TopshelfView).FullName; var engine = new SparkViewEngine(settings) { ViewFolder = _viewFolder, }; ISparkView instance = engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template)); var view = (TopshelfView <TViewData>)instance; view.SetModel(data); var sb = new StringBuilder(); using (var writer = new StringWriter(sb)) view.RenderView(writer); return(sb.ToString()); }
/// <summary> /// Initializes a new instance of the <see cref="SparkEngine"/> class. /// </summary> /// <exception cref="ArgumentNullException"><c>viewBaseType</c> or <c>handler</c> is <c>null</c>.</exception> public SparkEngine(Type viewBaseType, InitializeViewHandler handler) { if (viewBaseType == null) { throw new ArgumentNullException("viewBaseType"); } if (handler == null) { throw new ArgumentNullException("handler"); } _viewBaseType = viewBaseType; _handler = handler; _currentEngine = this; SparkSettings settings = new SparkSettings(); settings.AddNamespace("System.Collections.Generic"); settings.AddNamespace("HttpServer.Mvc.Views"); settings.AddNamespace("HttpServer.ViewEngine.Spark"); settings.AddAssembly(GetType().Assembly); settings.AddAssembly(typeof(Server).Assembly); _engine = new SparkViewEngine(settings) { ViewFolder = new MyViewFolder(), DefaultPageBaseType = viewBaseType.FullName }; }
public static string RenderTemplate(string template, ViewDataDictionary viewData) { // Set up your spark engine goodness. var settings = new SparkSettings().SetPageBaseType(typeof(SparkView)); var engine = new SparkViewEngine(settings) { ViewFolder = new FileSystemViewFolder(AppDomain.CurrentDomain.BaseDirectory + @"\..\..\..\IntegrationTestingViews\Views") }; // "Describe" the view (the template, it is a template after all), and its details. var descriptor = new SparkViewDescriptor().AddTemplate(template); // Create a spark view engine instance var view = (SparkView)engine.CreateInstance(descriptor); try { // Merge the view data. viewData.Keys.ToList().ForEach(x => view.ViewData[x] = viewData[x]); // Render the view to a text writer. var writer = new StringWriter(); view.RenderView(writer); return(writer.ToString()); } finally { engine.ReleaseInstance(view); } }
public void EmptyMasterPreventsDefaultLayout() { var settings = new SparkSettings() .SetPageBaseType(typeof(StubSparkView)); var container = new SparkServiceContainer(settings); var viewFolder = new InMemoryViewFolder { { "Home\\Index.spark", "<use master=\"\"/><p>Hello world</p><content:title>bar</content:title>" }, { "Layouts\\Application.spark", "<h1>alpha</h1><use:view/><p>beta</p>" } }; container.SetServiceBuilder <IViewFolder>(c => viewFolder); var engine = container.GetService <ISparkViewEngine>(); var descriptor = new SparkViewDescriptor() .AddTemplate("Home\\Index.spark") .AddTemplate("Layouts\\Application.spark"); var view = engine.CreateInstance(descriptor); var contents = view.RenderView(); engine.ReleaseInstance(view); Assert.AreEqual("<p>Hello world</p>", contents); }
public void UseAssemblyAndNamespaceFromSettings() { var settings = new SparkSettings() .AddNamespace("System.Web") .AddAssembly("System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a") .SetPageBaseType(typeof(StubSparkView)); var views = new InMemoryViewFolder { { Path.Combine("home", "index.spark"), "<div>${ProcessStatus.Alive}</div>" } }; var engine = new SparkViewEngine(settings) { ViewFolder = views }; var descriptor = new SparkViewDescriptor(); descriptor.Templates.Add(Path.Combine("home", "index.spark")); var contents = engine.CreateInstance(descriptor).RenderView(); Assert.AreEqual("<div>Alive</div>", contents); }
public DefaultMessageBuilder() { SparkSettings settings = new SparkSettings(); settings.SetPageBaseType(typeof(TemplateBase)); _engine = new SparkViewEngine(settings); }
private static void AddViewFolder(SparkSettings result) { result.AddViewFolder(ViewFolderType.VirtualPathProvider, new Dictionary <string, string> { { "virtualBaseDir", "~/views/" } }); }
public SparkViewEngine Engine() { if (engine != null) { return(engine); } var settings = new SparkSettings() .SetPageBaseType(typeof(WebFormsSparkView)) .SetNullBehaviour(NullBehaviour.Strict); foreach (var ns in namespaces) { settings = settings.AddNamespace(ns); } foreach (var a in assemblies) { settings = settings.AddAssembly(a); } engine = new SparkViewEngine(settings); engine.ViewFolder = GetViewFolder(); engine.BatchCompilation(GetViewDescriptors()); return(engine); }
public void Install(IWindsorContainer container, IConfigurationStore store) { ViewEngines.Engines.Clear(); var settings = new SparkSettings() .SetAutomaticEncoding(true) .AddNamespace("Microsoft.Web.Mvc") .AddNamespace("System") .AddNamespace("System.Collections.Generic") .AddNamespace("System.Linq") .AddNamespace("System.Web.Mvc") .AddNamespace("System.Web.Mvc.Html") .AddNamespace("WhoCanHelpMe.Framework.Extensions") .AddNamespace("WhoCanHelpMe.Web.Code"); // Add all namespaces from controllers project. typeof(HomeController).Assembly .GetExportedTypes() .Select(t => t.Namespace) .Distinct() .ToList() .ForEach(n => settings.AddNamespace(n)); var services = SparkEngineStarter.CreateContainer(settings); SparkEngineStarter.RegisterViewEngine(services); }
public static SparkSettings CreateSparkSettings() { var settings = new SparkSettings(); settings.Debug = true; settings.AddAssembly("Newtonsoft.Json"); settings.AddAssembly("RedBranch.Hammock"); settings.AddAssembly("Ascend.Core"); settings.AddAssembly("Ascend.Infrastructure"); settings.AddAssembly("Ascend.Web.Admin"); settings.AddNamespace("System"); settings.AddNamespace("System.Collections.Generic"); settings.AddNamespace("System.Linq"); settings.AddNamespace("System.Web"); settings.AddNamespace("System.Web.Routing"); settings.AddNamespace("System.Web.Mvc"); settings.AddNamespace("System.Web.Mvc.Html"); settings.AddNamespace("Newtonsoft.Json"); settings.AddNamespace("RedBranch.Hammock"); settings.AddNamespace("Ascend.Core"); settings.AddNamespace("Ascend.Core.Repositories"); settings.AddNamespace("Ascend.Core.Services"); settings.AddNamespace("Ascend.Infrastructure"); settings.AddNamespace("Ascend.Infrastructure.Web"); settings.AddNamespace("Ascend.Web.Admin"); return(settings); }
public void PrefixFromSettings() { var settings = new SparkSettings() .SetPageBaseType(typeof(StubSparkView)) .SetPrefix("s"); var engine = new SparkViewEngine(settings) { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") }; var view = (StubSparkView)engine.CreateInstance(new SparkViewDescriptor().AddTemplate("Prefix\\prefix-from-settings.spark")); view.ViewData["Names"] = new[] { "alpha", "beta", "gamma" }; var output = new StringWriter(); view.RenderView(output); ContainsInOrder(output.ToString(), "<li", "alpha", "</li>", "<li", "beta", "</li>", "<li", "gamma", "</li>", "<var x=\"1/0\">element ignored</var>", "<p each=\"5\">attribute ignored</p>" ); }
public virtual void Init() { mocks = new MockRepository(); var services = new StubMonoRailServices(); services.ViewSourceLoader = new FileAssemblyViewSourceLoader("MonoRail.Tests.Views"); services.AddService(typeof(IViewSourceLoader), services.ViewSourceLoader); viewComponentFactory = new DefaultViewComponentFactory(); viewComponentFactory.Initialize(); services.AddService(typeof(IViewComponentFactory), viewComponentFactory); services.AddService(typeof(IViewComponentRegistry), viewComponentFactory.Registry); var settings = new SparkSettings(); engine = new SparkViewEngine(settings); services.AddService(typeof(ISparkViewEngine), engine); factory = new SparkViewFactory(); factory.Service(services); controller = MockRepository.GenerateMock <IController>(); controllerContext = new ControllerContext(); var request = new StubRequest(); request.FilePath = ""; var response = new StubResponse(); engineContext = new StubEngineContext(request, response, new UrlInfo("", "Home", "Index", "/", "castle")); engineContext.AddService(typeof(IViewComponentFactory), viewComponentFactory); engineContext.AddService(typeof(IViewComponentRegistry), viewComponentFactory.Registry); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Bind to settings from appSettings.json, for example purposes SparkSettings sparkSettings = new SparkSettings(); Configuration.Bind("SparkSettings", sparkSettings); StoreSettings storeSettings = new StoreSettings(); Configuration.Bind("StoreSettings", storeSettings); // Set up a default policy for CORS that accepts any origin, method and header. // only for test purposes. services.AddCors(options => options.AddDefaultPolicy(policy => { policy.AllowAnyOrigin(); policy.AllowAnyMethod(); policy.AllowAnyHeader(); })); // Sets up the MongoDB store services.AddMongoFhirStore(storeSettings); // AddFhir also calls AddMvcCore services.AddFhir(sparkSettings); // AddMvc needs to be called since we are using a Home page that is reliant on the full MVC framework services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); }
public void EmptyMasterPreventsDefaultLayout() { var settings = new SparkSettings() .SetPageBaseType(typeof(StubSparkView)); var container = new SparkServiceContainer(settings); var viewFolder = new InMemoryViewFolder { {"Home\\Index.spark", "<use master=\"\"/><p>Hello world</p><content:title>bar</content:title>"}, {"Layouts\\Application.spark", "<h1>alpha</h1><use:view/><p>beta</p>"} }; container.SetServiceBuilder<IViewFolder>(c => viewFolder); var engine = container.GetService<ISparkViewEngine>(); var descriptor = new SparkViewDescriptor() .AddTemplate("Home\\Index.spark") .AddTemplate("Layouts\\Application.spark"); var view = engine.CreateInstance(descriptor); var contents = view.RenderView(); engine.ReleaseInstance(view); Assert.AreEqual("<p>Hello world</p>", contents); }
public void CreatedSettingsUsedWhenProvided() { var settings = new SparkSettings().SetPrefix("foo"); var container = new SparkServiceContainer(settings); var settings2 = container.GetService<ISparkViewEngine>().Settings; Assert.AreSame(settings, settings2); }
public void SetUp() { _settings = new SparkSettings(); _policies = new List<ISparkPolicy>(); _visitors = new List<ISparkDescriptorVisitor>(); _expression = new ConfigureSparkExpression(_settings, _policies, _visitors); }
public void SetUp() { _settings = new SparkSettings(); _policies = new List <ISparkPolicy>(); _visitors = new List <ISparkDescriptorVisitor>(); _expression = new ConfigureSparkExpression(_settings, _policies, _visitors); }
public static IMvcCoreBuilder AddFhir( this IServiceCollection services, SparkSettings settings, Action <MvcOptions> setupAction = null) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } services.AddFhirHttpSearchParameters(); services.SetContentTypeAsFhirMediaTypeOnValidationError(); services.TryAddSingleton(settings); services.TryAddTransient <ElementIndexer>(); services.TryAddTransient <IReferenceNormalizationService, ReferenceNormalizationService>(); services.TryAddTransient <IIndexService, IndexService>(); services.AddSingleton <ILocalhost>(new Localhost(settings.Endpoint)); services.AddSingleton <IFhirModel>(new FhirModel(ModelInfo.SearchParameters)); services.TryAddTransient(provider => new FhirPropertyIndex(provider.GetRequiredService <IFhirModel>())); services.TryAddTransient <ITransfer, Transfer>(); services.TryAddTransient <ConditionalHeaderFhirResponseInterceptor>(); services.TryAddTransient( provider => new IFhirResponseInterceptor[] { provider.GetRequiredService <ConditionalHeaderFhirResponseInterceptor>() }); services.TryAddTransient <IFhirResponseInterceptorRunner, FhirResponseInterceptorRunner>(); services.TryAddTransient <IFhirResponseFactory, FhirResponseFactory>(); services.TryAddTransient <IIndexRebuildService, IndexRebuildService>(); services.TryAddTransient <ISnapshotPaginationProvider, SnapshotPaginationProvider>(); services.TryAddTransient <ISnapshotPaginationCalculator, SnapshotPaginationCalculator>(); services.TryAddTransient <IServiceListener, SearchService>(); // searchListener services.TryAddTransient(provider => new[] { provider.GetRequiredService <IServiceListener>() }); services.TryAddTransient <ISearchService, SearchService>(); // search services.TryAddTransient <ITransactionService, TransactionService>(); // transaction //services.TryAddTransient<HistoryService>(); // history services.TryAddTransient <IPagingService, PagingService>(); // paging services.TryAddTransient <IResourceStorageService, ResourceStorageService>(); // storage services.TryAddTransient <ICapabilityStatementService, CapabilityStatementService>(); // conformance services.TryAddTransient <ICompositeServiceListener, ServiceListener>(); //services.TryAddTransient<AsyncResourceJsonInputFormatter>(); //services.TryAddTransient<AsyncResourceJsonOutputFormatter>(); //services.TryAddTransient<AsyncResourceXmlInputFormatter>(); //services.TryAddTransient<AsyncResourceXmlOutputFormatter>(); //services.TryAddSingleton(_ => new TestFhirJsonParser(settings.ParserSettings)); //services.TryAddSingleton(_ => new FhirXmlParser(settings.ParserSettings)); //services.TryAddSingleton(_ => new FhirJsonSerializer(settings.SerializerSettings)); //services.TryAddSingleton(_ => new FhirXmlSerializer(settings.SerializerSettings)); services.TryAddSingleton <IAsyncFhirService, AsyncFhirService>(); var builder = services.AddFhirFormatters(settings, setupAction); return(builder); }
public static void Start() { var settings = new SparkSettings(); settings.SetAutomaticEncoding(true); // Note: you can change the list of namespace and assembly // references in Views\Shared\_global.spark SparkEngineStarter.RegisterViewEngine(settings); }
public void Init() { var settings = new SparkSettings(); _factory = new SparkViewFactory(settings) { ViewFolder = new FileSystemViewFolder("AspNetMvc.Tests.Views") }; }
public void CreatedSettingsUsedWhenProvided() { var settings = new SparkSettings().SetPrefix("foo"); var container = new SparkServiceContainer(settings); var settings2 = container.GetService <ISparkViewEngine>().Settings; Assert.AreSame(settings, settings2); }
public void SetUp() { var settings = new SparkSettings(); _factory = new SparkViewFactory(settings) { ViewFolder = new FileSystemViewFolder("FubuMVC.Tests.Views") }; }
public void Init() { _settings = new SparkSettings() .SetPageBaseType(typeof(StubSparkView)); _engine = new SparkViewEngine(_settings) { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") }; }
public static IMvcCoreBuilder AddFhir(this IServiceCollection services, SparkSettings settings, Action <MvcOptions> setupAction = null) { services.AddFhirHttpSearchParameters(); services.TryAddSingleton <SparkSettings>(settings); services.TryAddTransient <ILocalhost>((provider) => new Localhost(settings.Endpoint)); services.TryAddTransient <IFhirModel>((provider) => new FhirModel(SparkModelInfo.SparkSearchParameters)); services.TryAddTransient((provider) => new FhirPropertyIndex(provider.GetRequiredService <IFhirModel>())); services.TryAddTransient <ITransfer, Transfer>(); services.TryAddTransient <ConditionalHeaderFhirResponseInterceptor>(); services.TryAddTransient((provider) => new IFhirResponseInterceptor[] { provider.GetRequiredService <ConditionalHeaderFhirResponseInterceptor>() }); services.TryAddTransient <IFhirResponseInterceptorRunner, FhirResponseInterceptorRunner>(); services.TryAddTransient <IFhirResponseFactory, FhirResponseFactory.FhirResponseFactory>(); services.TryAddTransient <ISearchService, SearchService>(); services.TryAddTransient <ISnapshotPaginationProvider, SnapshotPaginationProvider>(); services.TryAddTransient <ISnapshotPaginationCalculator, SnapshotPaginationCalculator>(); services.TryAddTransient <IServiceListener, SearchService>(); // searchListener services.TryAddTransient((provider) => new IServiceListener[] { provider.GetRequiredService <IServiceListener>() }); services.TryAddTransient <SearchService>(); // search services.TryAddTransient <TransactionService>(); // transaction services.TryAddTransient <HistoryService>(); // history services.TryAddTransient <PagingService>(); // paging services.TryAddTransient <ResourceStorageService>(); // storage services.TryAddTransient <ConformanceService>(); // conformance services.TryAddTransient <ICompositeServiceListener, ServiceListener>(); services.TryAddTransient <ResourceJsonInputFormatter>(); services.TryAddTransient <ResourceJsonOutputFormatter>(); services.TryAddTransient <ResourceXmlInputFormatter>(); services.TryAddTransient <ResourceXmlOutputFormatter>(); services.AddTransient((provider) => new IFhirServiceExtension[] { provider.GetRequiredService <SearchService>(), provider.GetRequiredService <TransactionService>(), provider.GetRequiredService <HistoryService>(), provider.GetRequiredService <PagingService>(), provider.GetRequiredService <ResourceStorageService>(), provider.GetRequiredService <ConformanceService>(), }); services.TryAddSingleton((provider) => new FhirJsonParser(settings.ParserSettings)); services.TryAddSingleton((provider) => new FhirXmlParser(settings.ParserSettings)); services.TryAddSingleton((provder) => new FhirJsonSerializer(settings.SerializerSettings)); services.TryAddSingleton((provder) => new FhirXmlSerializer(settings.SerializerSettings)); services.TryAddSingleton <IFhirService, FhirService>(); IMvcCoreBuilder builder = services.AddFhirFormatters(setupAction); services.RemoveAll <OutputFormatterSelector>(); services.TryAddSingleton <OutputFormatterSelector, FhirOutputFormatterSelector>(); return(builder); }
public void Init() { // reset routes RouteTable.Routes.Clear(); RouteTable.Routes.Add(new Route("{controller}/{action}/{id}", new MvcRouteHandler()) { Defaults = new RouteValueDictionary(new { action = "Index", id = "" }) }); httpContext = MockHttpContextBase.Generate("/", new StringWriter()); //_requestBase = MockRepository.GenerateStub<HttpRequestBase>(); //_responseBase = MockRepository.GenerateStub<HttpResponseBase>(); //_sessionStateBase = MockRepository.GenerateStub<HttpSessionStateBase>(); //_serverUtilityBase = MockRepository.GenerateStub<HttpServerUtilityBase>(); //httpContext.Stub(x => x.Request).Return(_requestBase); //httpContext.Stub(x => x.Response).Return(_responseBase); //httpContext.Stub(x => x.Session).Return(_sessionStateBase); //httpContext.Stub(x => x.Server).Return(_serverUtilityBase); //_responseBase.Stub(x => x.OutputStream).Return(new MemoryStream()); //_responseBase.Stub(x => x.Output).Return(new StringWriter()); //_requestBase.Stub(x => x.ApplicationPath).Return("/"); //_requestBase.Stub(x => x.Path).Return("/"); //_responseBase.Stub(x => x.ApplyAppPathModifier(null)) // .IgnoreArguments() // .Do(new Func<string, string>(path => path)); response = httpContext.Response; output = response.Output; controller = MockRepository.GenerateStub <ControllerBase>(); routeData = new RouteData(); routeData.Values.Add("controller", "Home"); routeData.Values.Add("action", "Index"); controllerContext = new ControllerContext(httpContext, routeData, controller); var settings = new SparkSettings().AddNamespace("System.Web.Mvc.Html").SetAutomaticEncoding(true); factory = new SparkViewFactory(settings) { ViewFolder = new FileSystemViewFolder("AspNetMvc.Tests.Views") }; ControllerBuilder.Current.SetControllerFactory(new DefaultControllerFactory()); ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(factory); }
private ISparkView CreateView(IViewFolder viewFolder, string template) { var settings = new SparkSettings().SetPageBaseType(typeof(StubSparkView)); var engine = new SparkViewEngine(settings) { ViewFolder = viewFolder }; return(engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template))); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); var settings = new SparkSettings() .SetAutomaticEncoding(true); SparkEngineStarter.RegisterViewEngine(settings); }
public void ApplySettings() { var settings = new SparkSettings() .AddViewFolder(ViewFolderType.VirtualPathProvider, new Dictionary<string, string> { { "virtualBaseDir", "~/MoreViews/" } }); var engine = new SparkViewEngine(settings); var folder = engine.ViewFolder; Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder); var combined = (CombinedViewFolder)folder; Assert.IsAssignableFrom(typeof(VirtualPathProviderViewFolder), combined.Second); var vpp = (VirtualPathProviderViewFolder)combined.Second; Assert.AreEqual("~/MoreViews/", vpp.VirtualBaseDir); }
public void ReplacingJustSomePrefixesThatHaveTildeNoStop() { var settings = new SparkSettings() .AddResourceMapping("~/content/js", "http://my.cdn.com/myaccount/content/js", false); var manager = new DefaultResourcePathManager(settings); var path = manager.GetResourcePath("/my/webapp", "~/content/js/jquery.1.2.6.js"); Assert.AreEqual("http://my.cdn.com/myaccount/content/js/jquery.1.2.6.js", path); var path2 = manager.GetResourcePath("/my/webapp", "~/content/css/yadda.css"); Assert.AreEqual("/my/webapp/content/css/yadda.css", path2); }
public void AssemblyParameter() { var settings = new SparkSettings() .AddViewFolder(ViewFolderType.EmbeddedResource, new Dictionary<string, string> { { "assembly", "Spark.Tests" }, { "resourcePath", "Spark.Tests.Views" } }); var engine = new SparkViewEngine(settings); var folder = engine.ViewFolder; Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder); var combined = (CombinedViewFolder)folder; Assert.IsAssignableFrom(typeof(EmbeddedViewFolder), combined.Second); var embeddedViewFolder = (EmbeddedViewFolder)combined.Second; Assert.AreEqual(Assembly.Load("spark.tests"), embeddedViewFolder.Assembly); }
public void CustomViewFolder() { var settings = new SparkSettings() .AddViewFolder(typeof(MyViewFolder), new Dictionary<string, string> { { "foo", "quux" }, { "bar", "42" } }); var engine = new SparkViewEngine(settings); var folder = engine.ViewFolder; Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder); var combined = (CombinedViewFolder)folder; Assert.IsAssignableFrom(typeof(MyViewFolder), combined.Second); var customFolder = (MyViewFolder)combined.Second; Assert.AreEqual("quux", customFolder.Foo); Assert.AreEqual(42, customFolder.Bar); }
private SparkSettings CreateSparkSettings() { var settings = new SparkSettings() .SetPageBaseType(typeof(SparkResourceView).Name) .SetAutomaticEncoding(true) .AddNamespace("OpenRasta.Web.Markup") .AddNamespace("OpenRasta.Web") .AddNamespace("OpenRasta.Codecs.Spark") .AddNamespace("System.Linq") .AddNamespace("OpenRasta.Codecs.Spark.Extensions") .AddViewFolder(ViewFolderType.VirtualPathProvider, new Dictionary<string, string> { { "virtualBaseDir", "~/views/" } }); return settings; }
public void CreateSettingsFluentInterface() { var settings = new SparkSettings() .SetDebug(true) .SetNullBehaviour(NullBehaviour.Lenient) .AddNamespace("System") .AddNamespace("System.Collections.Generic") .AddNamespace("System.Linq") .AddAssembly(typeof(TestAttribute).Assembly) .AddAssembly("Spark.Tests"); Assert.IsTrue(settings.Debug); Assert.AreEqual(NullBehaviour.Lenient, settings.NullBehaviour); Assert.AreEqual(3, settings.UseNamespaces.Count()); Assert.AreEqual(2, settings.UseAssemblies.Count()); }
protected override void Configure() { var settings = new SparkSettings(); settings.SetNullBehaviour(NullBehaviour.Strict); var sparkViewEngine = new SparkViewEngine(settings); serviceProvider.AddService(typeof(ISparkViewEngine), sparkViewEngine); factory = new SparkViewFactory(); factory.Service(serviceProvider); manager = new DefaultViewEngineManager(); manager.Service(serviceProvider); serviceProvider.ViewEngineManager = manager; serviceProvider.AddService(typeof(IViewEngineManager), manager); manager.RegisterEngineForExtesionLookup(factory); manager.RegisterEngineForView(factory); factory.Service(serviceProvider); }
private void SetTemplateSource(string templateSource) { var settings = new SparkSettings { PageBaseType = typeof (SparkResourceView).Name }; settings.AddViewFolder(typeof (TestingViewFolder), new Dictionary<string, string> { {"templateSource", templateSource} }); settings.AddNamespace("OpenRasta.Codecs.Spark"); settings.AddNamespace("OpenRasta.Web.Markup"); settings.AddNamespace("OpenRasta.Web"); settings.AddNamespace("OpenRasta.Codecs.Spark.Tests.TestObjects"); settings.AddNamespace("System.Collections.Generic"); settings.AddNamespace("OpenRasta.Codecs.Spark.Extensions"); sparkConfiguration .Container .SetService<ISparkSettings>(settings); }
private static ViewContext CompileView(string viewContents) { var settings = new SparkSettings(); var container = SparkRubyEngineStarter.CreateContainer(settings); var viewFolder = new InMemoryViewFolder { { "stub\\index.spark", viewContents } }; container.SetServiceBuilder<IViewFolder>(c => viewFolder); var viewEngine = container.GetService<IViewEngine>(); var httpContext = new StubHttpContext(); var routeData = new RouteData(); routeData.Values.Add("controller", "stub"); routeData.Values.Add("action", "index"); var controller = new StubController(); var controllerContext = new ControllerContext(httpContext, routeData, controller); var result = viewEngine.FindPartialView(controllerContext, "index", false); return new ViewContext(controllerContext, result.View, new ViewDataDictionary(), new TempDataDictionary(), new StringWriter()); }
public static FubuRegistry Spark(this FubuRegistry registry, Action<ConfigureSparkExpression> configure) { var settings = new SparkSettings() .AddAssembly(typeof (HtmlTag).Assembly) .AddAssembly(typeof(FubuPageExtensions).Assembly) .AddNamespace(typeof(FubuRegistryExtensions).Namespace) // Spark.Web.FubuMVC .AddNamespace(typeof(FubuPageExtensions).Namespace) // FubuMVC.Core.UI .AddNamespace(typeof(HtmlTag).Namespace); // HtmlTags var policies = new List<ISparkPolicy>(); var visitors = new List<ISparkDescriptorVisitor>(); var expression = new ConfigureSparkExpression(settings, policies, visitors); // TODO -- this shouldn't be assuming the location of the package folder. // go through the front end and get this out of the package PackageRegistry.Packages.Each(package => registerViewFolder(expression, package)); configure(expression); var factory = new SparkViewFactory(settings); var resolver = new SparkPolicyResolver(policies); var visitorRegistry = new SparkDescriptorVisitorRegistry(visitors); registry .Services(c => { c.SetServiceIfNone<ISparkViewFactory>(factory); c.SetServiceIfNone(factory.Settings); c.SetServiceIfNone(typeof(ISparkViewRenderer<>), typeof(SparkViewRenderer<>)); }); registry .Views .Facility(new SparkViewFacility(factory, resolver)) .TryToAttach(x => x.by(new ActionAndViewMatchedBySparkViewDescriptors(resolver, visitorRegistry))); return registry; }
public void EngineGetsCustomServiceAndViewFolderSettings() { var settings = new SparkSettings(); settings.AddViewFolder(typeof(TestViewFolder), new Dictionary<string, string> { { "testpath", "hello\\world.spark" } }); var container = new SparkServiceContainer(settings); container.SetServiceBuilder<IViewActivatorFactory>(c=>new TestActivatorFactory()); var engine = container.GetService<ISparkViewEngine>(); Assert.IsInstanceOfType(typeof(TestActivatorFactory), engine.ViewActivatorFactory); Assert.IsTrue(engine.ViewFolder.HasView("hello\\world.spark")); }
public void Init() { CompiledViewHolder.Current = new CompiledViewHolder(); var settings = new SparkSettings() .SetPageBaseType(typeof(StubSparkView)); var container = new SparkServiceContainer(settings); _viewFolder = new InMemoryViewFolder(); container.SetServiceBuilder<IViewFolder>(c => _viewFolder); _engine = container.GetService<ISparkViewEngine>(); }
public void Init() { var settings = new SparkSettings() .SetPageBaseType(typeof(Stubs.StubSparkView)); engine = new SparkViewEngine(settings) { ViewFolder = new InMemoryViewFolder { {"Home\\Index.spark", "<p>Hello world</p>"}, {"Home\\List.spark", "<ol><li>one</li><li>two</li></ol>"} } }; }
public void WhenResourceMappingWithNoStopAttributeThenNextMatchOrDefaultMatchWillBeProcessedWithItOutput() { var settings = new SparkSettings() .AddResourceMapping("/js", "~/content/js", false); var manager = new DefaultResourcePathManager(settings); var path = manager.GetResourcePath("/my/webapp", "/js/jquery.1.2.6.js"); Assert.AreEqual("/my/webapp/content/js/jquery.1.2.6.js", path); settings.AddResourceMapping("/ftpmirror", "/ftp/mymyrror.com", false); settings.AddResourceMapping("/ftp/", "ftp://"); var path2 = manager.GetResourcePath("/my/webapp", "/ftpmirror/1.zip"); Assert.AreEqual("ftp://mymyrror.com/1.zip", path2); }
public ISparkSettings Merge(SparkSettings left, SparkSettings right) { var merged = new SparkSettings(); return merged; }
private ISparkView CreateView(IViewFolder viewFolder, string template) { CompiledViewHolder.Current = new CompiledViewHolder(); var settings = new SparkSettings().SetPageBaseType(typeof(StubSparkView)); var engine = new SparkViewEngine(settings) { ViewFolder = viewFolder }; return engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template)); }
public void TypeFileSystemCreatesFileSystemViewFolder() { var settings = new SparkSettings() .AddViewFolder(ViewFolderType.FileSystem, new Dictionary<string, string> { {"basePath", @"e:\no\such\path"} }); var engine = new SparkViewEngine(settings); var folder = engine.ViewFolder; Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder); var combined = (CombinedViewFolder)folder; Assert.IsAssignableFrom(typeof(FileSystemViewFolder), combined.Second); var fileSystemViewFolder = (FileSystemViewFolder)combined.Second; Assert.AreEqual(@"e:\no\such\path", fileSystemViewFolder.BasePath); }
public void SectionAsSegmentAndRenderPrefixes() { var settings = new SparkSettings() .SetPageBaseType(typeof (StubSparkView)) .SetParseSectionTagAsSegment(true); var engine = new SparkViewEngine(settings) { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") }; var view = (StubSparkView) engine.CreateInstance(new SparkViewDescriptor().AddTemplate("Prefix\\section-render-prefix.spark")); var output = new StringWriter(); view.RenderView(output); ContainsInOrder(output.ToString(), "<p>one</p>", "<p>two</p>", "<p>three</p>", "<macro:ignored>ignored</macro:ignored>", "<content:ignored>ignored</content:ignored>", "<use:ignored>ignored</use:ignored>", "<render:ignored>ignored</render:ignored>", "<section:ignored>ignored</section:ignored>" ); }
public TestSparkSettingsFactory() { _settings = new SparkSettings(); }
public void Init() { settings = new SparkSettings().SetPageBaseType("Spark.Tests.Stubs.StubSparkView"); engine = new SparkViewEngine(settings) { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") }; factory = new StubViewFactory { Engine = engine }; sb = new StringBuilder(); mocks = new MockRepository(); }
public void SetUp() { var settings = new SparkSettings(); var serviceLocator = MockRepository.GenerateStub<IServiceLocator>(); _factory = new SparkViewFactory(settings, serviceLocator) { ViewFolder = new FileSystemViewFolder("FubuMVC.Tests.Views") }; _getActionName = action => action.RemoveSuffix("Controller"); }
public void Init() { // clears cache CompiledViewHolder.Current = null; // reset routes RouteTable.Routes.Clear(); RouteTable.Routes.Add(new Route("{controller}/{action}/{id}", new MvcRouteHandler()) { Defaults = new RouteValueDictionary(new { action = "Index", id = "" }) }); httpContext = MockHttpContextBase.Generate("/", new StringWriter()); //_requestBase = MockRepository.GenerateStub<HttpRequestBase>(); //_responseBase = MockRepository.GenerateStub<HttpResponseBase>(); //_sessionStateBase = MockRepository.GenerateStub<HttpSessionStateBase>(); //_serverUtilityBase = MockRepository.GenerateStub<HttpServerUtilityBase>(); //httpContext.Stub(x => x.Request).Return(_requestBase); //httpContext.Stub(x => x.Response).Return(_responseBase); //httpContext.Stub(x => x.Session).Return(_sessionStateBase); //httpContext.Stub(x => x.Server).Return(_serverUtilityBase); //_responseBase.Stub(x => x.OutputStream).Return(new MemoryStream()); //_responseBase.Stub(x => x.Output).Return(new StringWriter()); //_requestBase.Stub(x => x.ApplicationPath).Return("/"); //_requestBase.Stub(x => x.Path).Return("/"); //_responseBase.Stub(x => x.ApplyAppPathModifier(null)) // .IgnoreArguments() // .Do(new Func<string, string>(path => path)); response = httpContext.Response; output = response.Output; controller = MockRepository.GenerateStub<ControllerBase>(); routeData = new RouteData(); routeData.Values.Add("controller", "Home"); routeData.Values.Add("action", "Index"); controllerContext = new ControllerContext(httpContext, routeData, controller); var settings = new SparkSettings().AddNamespace("System.Web.Mvc.Html"); factory = new SparkViewFactory(settings) { ViewFolder = new FileSystemViewFolder("AspNetMvc.Tests.Views") }; ControllerBuilder.Current.SetControllerFactory(new DefaultControllerFactory()); ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(factory); }
public void CreatingViewEngineWithSimpleContainer() { var settings = new SparkSettings().AddNamespace("System.Web.Mvc.Html"); var container = SparkEngineStarter.CreateContainer(settings); var viewFactory = (SparkViewFactory)container.GetService<IViewEngine>(); var viewEngine = container.GetService<ISparkViewEngine>(); var viewFolder = container.GetService<IViewFolder>(); var descriptorBuilder = container.GetService<IDescriptorBuilder>(); var cacheServiceProvider = container.GetService<ICacheServiceProvider>(); var viewActivatorFactory = container.GetService<IViewActivatorFactory>(); Assert.AreSame(settings, viewFactory.Settings); Assert.AreSame(settings, viewEngine.Settings); Assert.AreSame(viewEngine, viewFactory.Engine); Assert.AreSame(viewFolder, viewEngine.ViewFolder); Assert.AreSame(viewFolder, viewFactory.ViewFolder); Assert.AreSame(descriptorBuilder, viewFactory.DescriptorBuilder); Assert.AreSame(cacheServiceProvider, viewFactory.CacheServiceProvider); Assert.AreSame(viewActivatorFactory, viewFactory.ViewActivatorFactory); }