Пример #1
0
        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));
        }
Пример #2
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);
        }
Пример #3
0
    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();
    }
Пример #4
0
        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()));
        }
Пример #5
0
        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);
            }));
        }
Пример #6
0
        public static void RegisterViewEngine(ViewEngineCollection engines)
        {
            var settings = new SparkSettings();

            settings.SetDebug(true);
            engines.Add(new SparkViewFactory(settings));
        }
Пример #7
0
        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>"
                            );
        }
Пример #8
0
        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());
        }
Пример #9
0
        /// <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
            };
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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/" }
     });
 }
Пример #15
0
        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);
        }
Пример #17
0
        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);
        }
Пример #18
0
        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>"
                            );
        }
Пример #19
0
        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);
        }
Пример #20
0
        // 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);
        }
Пример #21
0
        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);
        }
Пример #22
0
        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 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);
        }
Пример #25
0
        public void SetUp()
        {
            _settings = new SparkSettings();
            _policies = new List <ISparkPolicy>();
            _visitors = new List <ISparkDescriptorVisitor>();

            _expression = new ConfigureSparkExpression(_settings, _policies, _visitors);
        }
Пример #26
0
        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);
        }
Пример #27
0
        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")
            };
        }
Пример #29
0
        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")
            };
        }
Пример #31
0
        public void Init()
        {
            _settings = new SparkSettings()
                        .SetPageBaseType(typeof(StubSparkView));

            _engine = new SparkViewEngine(_settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };
        }
Пример #32
0
        public void Init()
        {
            _settings = new SparkSettings()
                .SetPageBaseType(typeof(StubSparkView));

            _engine = new SparkViewEngine(_settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };
        }
Пример #33
0
        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);
        }
Пример #34
0
        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);
        }
Пример #35
0
        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)));
        }
Пример #36
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);

            var settings = new SparkSettings()
                           .SetAutomaticEncoding(true);

            SparkEngineStarter.RegisterViewEngine(settings);
        }
Пример #37
0
        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);
        }
Пример #39
0
        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);
        }
Пример #40
0
        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;
 }
Пример #42
0
        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);
 }
Пример #45
0
        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());
        }
Пример #46
0
        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"));
        }
Пример #48
0
        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>();
        }
Пример #49
0
        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);
        }
Пример #51
0
        public ISparkSettings Merge(SparkSettings left, SparkSettings right)
        {
            var merged = new SparkSettings();

            return merged;
        }
Пример #52
0
        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));
        }
Пример #53
0
 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);
 }
Пример #54
0
        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>"
                );
        }
Пример #55
0
        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 TestSparkSettingsFactory()
 {
     _settings = new SparkSettings();
 }
Пример #57
0
        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");
        }
Пример #59
0
        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);
        }
Пример #60
0
        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);
        }