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(); }
public void FileNotFoundException() { var folder = new InMemoryViewFolder(); folder.Add(Path.Combine("Home", "Index.spark"), "stuff"); Assert.That(() => folder.GetViewSource(Path.Combine("Home", "List.spark")), Throws.TypeOf<FileNotFoundException>()); }
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 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 PartialsInCascadingBaseFoldersAndSharedFoldersAreDiscovered() { var viewFolder = new InMemoryViewFolder { { "area1\\controller2\\view3.spark", "" }, { "area1\\controller2\\Shared\\_alpha.spark", "" }, { "area1\\Shared\\_beta.spark", "" }, { "Shared\\_gamma.spark", "" }, { "area1\\controller2\\_epsilon.spark", "" }, { "area1\\_zeta.spark", "" }, { "_eta.spark", "" }, { "area1\\controller4\\_dontfind1.spark", "" }, { "area1\\controller4\\Shared\\_dontfind2.spark", "" }, { "area2\\Shared\\_dontfind3.spark", "" }, }; var viewLoader = new ViewLoader { ViewFolder = viewFolder }; var partials = viewLoader.FindPartialFiles("area1\\controller2\\view3.spark"); Assert.That(partials, Has.Some.EqualTo("alpha")); Assert.That(partials, Has.Some.EqualTo("beta")); Assert.That(partials, Has.Some.EqualTo("gamma")); Assert.That(partials, Has.Some.EqualTo("epsilon")); Assert.That(partials, Has.Some.EqualTo("zeta")); Assert.That(partials, Has.Some.EqualTo("eta")); Assert.That(partials, Has.None.EqualTo("dontfind1")); Assert.That(partials, Has.None.EqualTo("dontfind2")); Assert.That(partials, Has.None.EqualTo("dontfind3")); }
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 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); }
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())); }
public void ShouldReturnNameOfPartialsFound() { var viewFolder = new InMemoryViewFolder { { "Shared\\Application.spark", "<html><body><use content=\"main\" /></body></html>" }, { "Shared\\_PartialMustBeFound.spark", "This partial should always be found" }, { "Home\\index.spark", "Home Page" }, { "Home\\_HomePartial.spark", "This Partial should only be found from Home" }, { "Other\\index.spark", "Home Page" }, { "Other\\_OtherPartial.spark", "This Partial should only be found from Other" }, }; _mockProjectExplorer.Expect(x => x.GetViewFolder()).Return(viewFolder); var homeExplorer = new ViewExplorer(_mockProjectExplorer, "Home\\index.spark"); var homePartials = homeExplorer.GetRelatedPartials(); var otherExplorer = new ViewExplorer(_mockProjectExplorer, "Other\\index.spark"); var otherPartials = otherExplorer.GetRelatedPartials(); Assert.That(homePartials.Count, Is.EqualTo(2)); Assert.That(homePartials[0], Is.EqualTo("HomePartial")); Assert.That(homePartials[1], Is.EqualTo("PartialMustBeFound")); Assert.That(otherPartials.Count, Is.EqualTo(2)); Assert.That(otherPartials[0], Is.EqualTo("OtherPartial")); Assert.That(otherPartials[1], Is.EqualTo("PartialMustBeFound")); }
public void PartialsInCascadingBaseFoldersAndSharedFoldersAreDiscovered() { var viewFolder = new InMemoryViewFolder { { Path.Combine("area1", "controller2", "view3.spark"), "" }, { Path.Combine("area1", "controller2", "Shared", "_alpha.spark"), "" }, { Path.Combine("area1", "Shared", "_beta.spark"), "" }, { Path.Combine("Shared", "_gamma.spark"), "" }, { Path.Combine("area1", "controller2", "_epsilon.spark"), "" }, { Path.Combine("area1", "_zeta.spark"), "" }, { "_eta.spark", "" }, { Path.Combine("area1", "controller4", "_dontfind1.spark"), "" }, { Path.Combine("area1", "controller4", "Shared", "_dontfind2.spark"), "" }, { Path.Combine("area2", "Shared", "_dontfind3.spark"), "" }, }; var viewLoader = new ViewLoader { ViewFolder = viewFolder }; var partials = viewLoader.FindPartialFiles(Path.Combine("area1", "controller2", "view3.spark")); Assert.That(partials, Has.Some.EqualTo("alpha")); Assert.That(partials, Has.Some.EqualTo("beta")); Assert.That(partials, Has.Some.EqualTo("gamma")); Assert.That(partials, Has.Some.EqualTo("epsilon")); Assert.That(partials, Has.Some.EqualTo("zeta")); Assert.That(partials, Has.Some.EqualTo("eta")); Assert.That(partials, Has.None.EqualTo("dontfind1")); Assert.That(partials, Has.None.EqualTo("dontfind2")); Assert.That(partials, Has.None.EqualTo("dontfind3")); }
public void ShouldReturnNameOfPartialsFound() { var viewFolder = new InMemoryViewFolder { {"Shared\\Application.spark","<html><body><use content=\"main\" /></body></html>"}, {"Shared\\_PartialMustBeFound.spark","This partial should always be found"}, {"Home\\index.spark","Home Page"}, {"Home\\_HomePartial.spark","This Partial should only be found from Home"}, {"Other\\index.spark","Home Page"}, {"Other\\_OtherPartial.spark","This Partial should only be found from Other"}, }; var homeExplorer = new ViewExplorer(viewFolder, "Home\\index.spark"); var homePartials = homeExplorer.GetRelatedPartials(); var otherExplorer = new ViewExplorer(viewFolder, "Other\\index.spark"); var otherPartials = otherExplorer.GetRelatedPartials(); Assert.That(homePartials.Count, Is.EqualTo(2)); Assert.That(homePartials[0], Is.EqualTo("HomePartial")); Assert.That(homePartials[1], Is.EqualTo("PartialMustBeFound")); Assert.That(otherPartials.Count, Is.EqualTo(2)); Assert.That(otherPartials[0], Is.EqualTo("OtherPartial")); Assert.That(otherPartials[1], Is.EqualTo("PartialMustBeFound")); }
public void HashCanBeUsedToDeclareStatementsInsteadOfOutputExpressions() { var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>#bar;</start><end>#quux;</end></element></bindings>" } }; var provider = new DefaultBindingProvider(); var bindings = provider.GetBindings(viewFolder).ToList(); Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Statement)); }
public void FileNotFoundException() { var folder = new InMemoryViewFolder(); folder.Add("Home\\Index.spark", "stuff"); folder.GetViewSource("Home\\List.spark"); }
public void Init() { _folder = new InMemoryViewFolder { { "Home\\Index.spark", "alpha" } }; _adapter = new LanguageKit.Folder(_folder); }
public void FileNotFoundException() { var folder = new InMemoryViewFolder(); folder.Add(Path.Combine("Home", "Index.spark"), "stuff"); Assert.That(() => folder.GetViewSource(Path.Combine("Home", "List.spark")), Throws.TypeOf <FileNotFoundException>()); }
public void Init() { _folder = new InMemoryViewFolder { {string.Format("Home{0}Index.spark", Path.DirectorySeparatorChar), "alpha"} }; _adapter = new LanguageKit.Folder(_folder); }
public void MissingFileDoesNotCauseException() { var viewFolder = new InMemoryViewFolder(); var provider = new DefaultBindingProvider(); var bindings = provider.GetBindings(new BindingRequest(viewFolder)).ToList(); Assert.That(bindings.Count, Is.EqualTo(0)); }
public void Init() { _folder = new InMemoryViewFolder { {"Home\\Index.spark", "alpha"} }; _adapter = new LanguageKit.Folder(_folder); }
public void MissingFileDoesNotCauseException() { var viewFolder = new InMemoryViewFolder(); var provider = new DefaultBindingProvider(); var bindings = provider.GetBindings(viewFolder).ToList(); Assert.That(bindings.Count, Is.EqualTo(0)); }
public void Init() { _folder = new InMemoryViewFolder { { string.Format("Home{0}Index.spark", Path.DirectorySeparatorChar), "alpha" } }; _adapter = new LanguageKit.Folder(_folder); }
public void Init() { _factory = new SparkViewFactory(null); _viewFolder = new InMemoryViewFolder(); _factory.ViewFolder = _viewFolder; var controller = new StubController(); _actionContext = new ActionContext(controller.GetType().Namespace, "Bar"); }
public void ChildReferenceMayNotAppearInEndPhrase() { var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>foo</start><end>child::*</end></element></bindings>" } }; var provider = new DefaultBindingProvider(); Assert.That(() => provider.GetBindings(new BindingRequest(viewFolder)).ToList(), Throws.TypeOf <CompilerException>()); }
public void ChildReferenceMayNotAppearInEndPhrase() { var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>foo</start><end>child::*</end></element></bindings>" } }; var provider = new DefaultBindingProvider(); provider.GetBindings(viewFolder).ToList(); }
public DescriptorBuildingFixture() { this.viewFolder = new InMemoryViewFolder(); this.engine = new SparkViewEngine(null) { ViewFolder = viewFolder }; this.actionContext = new ActionContext(A.Fake <HttpContextBase>(), "Bar"); }
private static InMemoryViewFolder GetMemoryViewMap(IEnumerable <ViewLocationResult> viewLocationResults) { var memoryViewMap = new InMemoryViewFolder(); foreach (var viewLocationResult in viewLocationResults) { memoryViewMap.Add(viewLocationResult.Location, viewLocationResult.Contents.Invoke().ReadToEnd()); } return(memoryViewMap); }
public void HashCanBeUsedToDeclareStatementsInsteadOfOutputExpressions() { var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>#bar;</start><end>#quux;</end></element></bindings>" } }; var provider = new DefaultBindingProvider(); var bindings = provider.GetBindings(new BindingRequest(viewFolder)).ToList(); Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Statement)); }
public void HasViewCaseInsensitive() { var folder = new InMemoryViewFolder(); Assert.IsFalse(folder.HasView(Path.Combine("Home", "Index.spark"))); folder.Add(Path.Combine("Home", "Index.spark"), "stuff"); Assert.IsTrue(folder.HasView(Path.Combine("Home", "Index.spark"))); Assert.IsFalse(folder.HasView(Path.Combine("Home", "Index"))); Assert.IsTrue(folder.HasView(Path.Combine("Home", "index.spark"))); Assert.IsTrue(folder.HasView(Path.Combine("home", "INDEX.SPARK"))); }
private IViewFolder GetViewFolder() { var folder = new InMemoryViewFolder(); foreach (var c in this) { folder.Add(c.TemplateKey, c.InnerHtml); } return(folder); }
public void HasViewCaseInsensitive() { var folder = new InMemoryViewFolder(); Assert.IsFalse(folder.HasView("Home\\Index.spark")); folder.Add("Home\\Index.spark", "stuff"); Assert.IsTrue(folder.HasView("Home\\Index.spark")); Assert.IsFalse(folder.HasView("Home\\Index")); Assert.IsTrue(folder.HasView("Home\\index.spark")); Assert.IsTrue(folder.HasView("home\\INDEX.SPARK")); }
public void HasTemplate() { var first = new InMemoryViewFolder { { "one.txt", "one" } }; var second = new InMemoryViewFolder { { "two.txt", "two" } }; var viewFolder = new CombinedViewFolder(first, second); Assert.IsTrue(viewFolder.HasView("one.txt")); Assert.IsTrue(viewFolder.HasView("two.txt")); Assert.IsFalse(viewFolder.HasView("three.txt")); }
public void BindingTableCanLoadFromViewFolder() { var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'>bar</element></bindings>" } }; var provider = new DefaultBindingProvider(); var bindings = provider.GetBindings(viewFolder).ToList(); Assert.That(bindings.Count, Is.EqualTo(1)); Assert.That(bindings[0].ElementName, Is.EqualTo("foo")); Assert.That(bindings[0].Nodes.Count, Is.EqualTo(1)); Assert.That(((BindingLiteral)bindings[0].Nodes[0]).Text, Is.EqualTo("bar")); }
public void InMemoryViewFolderUsedByEngine() { var folder = new InMemoryViewFolder(); folder.Add("home\\index.spark", "<p>Hello world</p>"); var engine = new SparkViewEngine(new SparkSettings().SetPageBaseType(typeof (StubSparkView))){ViewFolder = folder}; var descriptor = new SparkViewDescriptor(); descriptor.Templates.Add("home\\index.spark"); var view = engine.CreateInstance(descriptor); var contents = view.RenderView(); Assert.AreEqual("<p>Hello world</p>", contents); }
public HtmlGenerator(IEnumerable <KeyValuePair <string, string> > templates) : this() { var viewFolder = new InMemoryViewFolder(); foreach (var pair in templates) { viewFolder.Add(pair.Key, pair.Value); } engine.ViewFolder = viewFolder; }
public HtmlGenerator(IEnumerable<KeyValuePair<string, string>> templates) : this() { var viewFolder = new InMemoryViewFolder(); foreach (var pair in templates) { viewFolder.Add(pair.Key, pair.Value); } engine.ViewFolder = viewFolder; }
public void Init() { 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 OpenFromFirstViewFolder() { var first = new InMemoryViewFolder { { "one.txt", "one" } }; var second = new InMemoryViewFolder { { "one.txt", "two" } }; var viewFolder = new CombinedViewFolder(first, second); using (var reader = new StreamReader(viewFolder.GetViewSource("one.txt").OpenViewStream())) { var content = reader.ReadToEnd(); Assert.AreEqual("one", content); } }
public void OpenMissingFile() { var first = new InMemoryViewFolder { { "one.txt", "one" } }; var second = new InMemoryViewFolder { { "two.txt", "two" } }; var viewFolder = new CombinedViewFolder(first, second); viewFolder.GetViewSource("three.txt"); }
public void ListFilesWithDedupe() { var first = new InMemoryViewFolder { { "home\\three.txt", "three" }, { "home\\one.txt", "one" } }; var second = new InMemoryViewFolder { { "home\\two.txt", "two" }, { "home\\three.txt", "three" } }; var viewFolder = new CombinedViewFolder(first, second); var views = viewFolder.ListViews("home"); Assert.AreEqual(3, views.Count); Assert.Contains("home\\one.txt", views.ToArray()); Assert.Contains("home\\two.txt", views.ToArray()); Assert.Contains("home\\three.txt", views.ToArray()); }
public void OpenMissingFile() { var first = new InMemoryViewFolder { { "one.txt", "one" } }; var second = new InMemoryViewFolder { { "two.txt", "two" } }; var viewFolder = new CombinedViewFolder(first, second); Assert.That(() => viewFolder.GetViewSource("three.txt"), Throws.TypeOf <FileNotFoundException>()); }
private static HtmlResponse GetViewResponse <T>(byte[] viewTemplate, IEnumerable <string> namespaces, Action <T> populateView = null) where T : AbstractSparkView { return(new HtmlResponse( () => { Type viewType = typeof(T); SparkSettings settings = new SparkSettings() .SetPageBaseType(viewType) .SetDebug(false); foreach (string @namespace in namespaces.Distinct()) { settings.AddNamespace(@namespace); } var container = new SparkServiceContainer(settings); var viewFolder = new InMemoryViewFolder(); container.SetServiceBuilder <IViewFolder>(arg => viewFolder); var viewEngine = container.GetService <ISparkViewEngine>(); string viewKey = viewType.Name.Replace("View", "") + ".spark"; const string applicationKey = @"Layouts\application.spark"; viewFolder.AddLayoutsPath("Layouts"); viewFolder.Add(viewKey, viewTemplate); viewFolder.Add(applicationKey, ResponseResources.Application); SparkViewDescriptor descriptor = new SparkViewDescriptor() .AddTemplate(viewKey) .AddTemplate(applicationKey); var view = (T)viewEngine.CreateInstance(descriptor); try { if (populateView != null) { populateView(view); } var writer = new StringWriter(); view.RenderView(writer); return writer.ToString(); } finally { viewEngine.ReleaseInstance(view); } })); }
public HtmlGenerator(IEnumerable <KeyValuePair <string, string> > templates) : this() { var viewFolder = new InMemoryViewFolder(); foreach (var pair in templates) { viewFolder.Add(pair.Key, pair.Value); } engine.ViewFolder = viewFolder; // CompiledViewHolder.= null; // reset the cached views }
public PageGenerator(IResourceManager resourceManager) { var template = resourceManager.GetStringFromAssemblyOf<PageGenerator>("Forseti.Pages.Spark.Harness.spark"); var settings = new SparkSettings().SetPageBaseType(typeof(HarnessView)); var templates = new InMemoryViewFolder(); _engine = new SparkViewEngine(settings) { ViewFolder = templates }; templates.Add(TemplateName, template); _descriptor = new SparkViewDescriptor().AddTemplate(TemplateName); }
public void Init() { _factory = new SparkViewFactory(); _viewFolder = new InMemoryViewFolder(); _factory.ViewFolder = _viewFolder; var httpContext = MockRepository.GenerateStub <HttpContextBase>(); _routeData = new RouteData(); var controller = MockRepository.GenerateStub <ControllerBase>(); _controllerContext = new ControllerContext(httpContext, _routeData, controller); }
public void Init(bool automaticEncoding) { _settings = new SparkSettings() .SetPageBaseType(typeof(StubSparkView)) .SetAutomaticEncoding(automaticEncoding); var container = new SparkServiceContainer(_settings); _viewFolder = new InMemoryViewFolder(); container.SetServiceBuilder <IViewFolder>(c => _viewFolder); _engine = container.GetService <ISparkViewEngine>(); }
public HtmlGenerator(IEnumerable<KeyValuePair<string, string>> templates) : this() { var viewFolder = new InMemoryViewFolder(); foreach (var pair in templates) { viewFolder.Add(pair.Key, pair.Value); } engine.ViewFolder = viewFolder; CompiledViewHolder.Current = null; // reset the cached views }
public void ShouldRecogniseVariablesDeclaredInTheSameFile() { var filePath = "test\\TwoVars.spark"; var fileContent = "<var theNumberFive=\"5\" theNumberThree=\"3\" />"; var viewFolder = new InMemoryViewFolder { { filePath, fileContent } }; var viewExplorer = new ViewExplorer(viewFolder, filePath); IList<string> vars = viewExplorer.GetLocalVariables(); Assert.That(vars.Count, Is.EqualTo(2)); Assert.That(vars[0], Is.EqualTo("theNumberFive")); Assert.That(vars[1], Is.EqualTo("theNumberThree")); }
public PageGenerator(IResourceManager resourceManager, IFramework framework) { var template = resourceManager.GetStringFromAssemblyOf<PageGenerator>("Forseti.Pages.Spark.Harness.spark"); _framework = framework; var settings = new SparkSettings().SetPageBaseType(typeof(HarnessView)); var templates = new InMemoryViewFolder(); _engine = new SparkViewEngine(settings) { ViewFolder = templates }; templates.Add(TemplateName, template); //"<for each=\"var s in Stuff\"><p>${s}</p></for>"); _descriptor = new SparkViewDescriptor().AddTemplate(TemplateName); }
public void ShouldRecogniseMacrosDeclaredInTheSameFile() { var filePath = "test\\TwoMacros.spark"; var fileContent = "<div><macro name=\"Macro1\">one</macro></div><div><macro name=\"Macro2\">two</macro></div>"; var viewFolder = new InMemoryViewFolder { { filePath, fileContent } }; _mockProjectExplorer.Expect(x => x.GetViewFolder()).Return(viewFolder); var viewExplorer = new ViewExplorer(_mockProjectExplorer, filePath); IList<string> macros = viewExplorer.GetLocalMacros(); Assert.That(macros.Count, Is.EqualTo(2)); Assert.That(macros[0], Is.EqualTo("Macro1")); Assert.That(macros[1], Is.EqualTo("Macro2")); }
public void TwoPartBindingsAreRecognized() { var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>bar</start><end>quux</end></element></bindings>" } }; var provider = new DefaultBindingProvider(); var bindings = provider.GetBindings(viewFolder).ToList(); Assert.That(bindings.Count, Is.EqualTo(1)); Assert.That(bindings[0].ElementName, Is.EqualTo("foo")); Assert.That(bindings[0].Phrases.Count(), Is.EqualTo(2)); Assert.That(bindings[0].Phrases.First().Nodes.Count, Is.EqualTo(1)); Assert.That(bindings[0].Phrases.Last().Nodes.Count, Is.EqualTo(1)); Assert.That(((BindingLiteral)bindings[0].Phrases.First().Nodes[0]).Text, Is.EqualTo("bar")); Assert.That(((BindingLiteral)bindings[0].Phrases.Last().Nodes[0]).Text, Is.EqualTo("quux")); Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Expression)); }
public void ShouldRecogniseMacroParameters() { var filePath = "test\\TwoMacrosSecondWithParam.spark"; var fileContent = "<div><macro name=\"Macro1\">one</macro></div><div><macro name=\"Macro2\" param1=\"string\">two</macro></div>"; var viewFolder = new InMemoryViewFolder { { filePath, fileContent } }; _mockProjectExplorer.Expect(x => x.GetViewFolder()).Return(viewFolder); var viewExplorer = new ViewExplorer(_mockProjectExplorer, filePath); IList<string> macroParams = viewExplorer.GetMacroParameters("Macro1"); Assert.That(macroParams.Count, Is.EqualTo(0)); macroParams = viewExplorer.GetMacroParameters("Macro2"); Assert.That(macroParams.Count, Is.EqualTo(1)); Assert.That(macroParams[0], Is.EqualTo("param1")); }
public PageGenerator(IResourceManager resourceManager) { var template = resourceManager.GetStringFromAssemblyOf<PageGenerator>("Forseti.Pages.Spark.Harness.spark"); _jqueryJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.jquery.min.js"); _forsetiJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.forseti.js"); _requireJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.require.js"); _forsetiBootstrapperJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.forseti.bootstrapper.js"); var settings = new SparkSettings().SetPageBaseType(typeof(HarnessView)); var templates = new InMemoryViewFolder(); _engine = new SparkViewEngine(settings) { ViewFolder = templates }; templates.Add(TemplateName, template); _descriptor = new SparkViewDescriptor().AddTemplate(TemplateName); }
public void IterationInPartialFile() { var viewFolder = new InMemoryViewFolder { {"home\\index.spark", "<Guts items='new[]{1,2,3}'><section:each>${xIndex}</section:each></Guts>"}, {"home\\_Guts.spark", "<for each='var x in items'><render:each/></for>"} }; var loader = new ViewLoader { SyntaxProvider = new DefaultSyntaxProvider(ParserSettings.DefaultBehavior), ViewFolder = viewFolder }; var chunks = loader.Load("home\\index.spark"); var detectCode = new DetectCodeExpressionVisitor(null); var index = detectCode.Add("xIndex"); var count = detectCode.Add("xCount"); detectCode.Accept(chunks); Assert.IsTrue(index.Detected); Assert.IsFalse(count.Detected); }
public void LastModifiedChanges() { var folder = new InMemoryViewFolder(); folder.Add("Home\\Index.spark", "this is the file contents"); var source1 = folder.GetViewSource("Home\\Index.spark"); var lastModified1 = source1.LastModified; folder.Set("Home\\Index.spark", "this is the file contents"); var source2 = folder.GetViewSource("Home\\Index.spark"); var lastModified2 = source2.LastModified; Assert.AreNotEqual(lastModified1, lastModified2); var lastModified1b = source1.LastModified; var lastModified2b = source1.LastModified; Assert.AreNotEqual(lastModified1, lastModified1b); Assert.AreEqual(lastModified1b, lastModified2b); }
public void ForwardAndBackSlashAreInterchangeable() { var viewsFolder = new InMemoryViewFolder { {@"Home\Index.spark", "1"}, {@"Shared\_global.spark", "2"}, {@"Collision\Home\Baaz.spark", "6"} }; var extraFolder = new InMemoryViewFolder { {@"Home\Foo.spark", "3"}, {@"Home\Bar.spark", "4"}, {@"Home\Quux.spark", "5"}, }; Assert.AreEqual(1, viewsFolder.ListViews(@"Collision/Home").Count); Assert.AreEqual(1, viewsFolder.ListViews(@"Collision\Home").Count); Assert.AreEqual(3, extraFolder.ListViews(@"Home").Count); var combinedFolder = viewsFolder .Append(new SubViewFolder(extraFolder, @"Extra/One")) .Append(new SubViewFolder(extraFolder, @"Extra\Two")) .Append(new SubViewFolder(extraFolder, @"Collision")); Assert.AreEqual(1, combinedFolder.ListViews("Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/One/Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\One/Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/One\Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\One\Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/Two/Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\Two/Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/Two\Home").Count); Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\Two\Home").Count); Assert.AreEqual(4, combinedFolder.ListViews(@"Collision/Home").Count); Assert.AreEqual(4, combinedFolder.ListViews(@"Collision\Home").Count); Assert.IsTrue(combinedFolder.HasView(@"Extra/One/Home/Bar.spark")); Assert.IsTrue(combinedFolder.HasView(@"Extra\One\Home\Bar.spark")); Assert.IsTrue(combinedFolder.HasView(@"Extra/Two/Home/Bar.spark")); Assert.IsTrue(combinedFolder.HasView(@"Extra\Two\Home\Bar.spark")); }
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()); }
private static void Stub(FileSystemInfo source, FileSystemInfo destination) { if (source.FullName.EndsWith(".spark")) { // At this time the destination is already copied and processed by // 'simple' text substitution, so destination should be processed. var settings = new SparkSettings(); settings.AddNamespace("System"); var engine = new SparkViewEngine(settings) {DefaultPageBaseType = typeof(Template).FullName}; var folder = new InMemoryViewFolder {{source.Name, File.ReadAllText(destination.FullName)}}; engine.ViewFolder = folder; var descriptor = new SparkViewDescriptor(); descriptor.AddTemplate(source.Name); var view = (Template) engine.CreateInstance(descriptor); var builder = new StringBuilder(); using (var output = new StringWriter(builder)) { view.RenderView(output); File.WriteAllText(destination.FullName, output.ToString()); } engine.ReleaseInstance(view); } else if (source.FullName.EndsWith(".tt")) { var generator = new TemplateGenerator(); if (!generator.ProcessTemplate(source.FullName, destination.FullName)) { var exception = new TemplateException(source.FullName); foreach (CompilerError error in generator.Errors) { exception.AddError(error.ErrorText); } throw exception; } } }
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>(); }