public void BasicStringHostTest() { var host = new RazorStringHostContainer(); // add model assembly - ie. this assembly host.AddAssemblyFromType(this); host.UseAppDomain = false; host.Start(); Person person = new Person() { Name = "Rick", Company = "West Wind", Entered = DateTime.Now, Address = new Address() { Street = "32 Kaiea", City = "Paia" } }; string result = host.RenderTemplate(Templates.BasicTemplateStringWithPersonModel,person); Console.WriteLine(result); Console.WriteLine("---"); Console.WriteLine(host.Engine.LastGeneratedCode); if (result == null) Assert.Fail(host.ErrorMessage); host.Stop(); }
public void ManualCompileAndRunTest() { RazorEngine<RazorTemplateBase> host = CreateHost(); if (host == null) Assert.Fail("Unable to create RazorEngine " + host.ErrorMessage); Person person = new Person() { Name = "Rick", Company = "West WInd", Entered = DateTime.Now, Address = new Address() { Street = "32 Kaiea", City = "Paia" } }; // we have to explicitly add a reference to the model's assembly // if we're compiling manually - the compiler doesn't know about // the model. host.AddAssemblyFromType(person); string templateId = host.CompileTemplate( Templates.BasicTemplateStringWithPersonModel, "__RazorHost", "ManualCompileAndRun"); if (templateId == null) Assert.Fail("Unable to compile Template: " + host.ErrorMessage); string result = host.RenderTemplateFromAssembly(templateId, person); if (result == null) { Assert.Fail(host.ErrorMessage); return; } Console.WriteLine(result); Console.WriteLine("--- Source Code ---"); Console.WriteLine(host.LastGeneratedCode); }
public void BasicRazorEngineToTextWriterTest() { RazorEngine<RazorTemplateBase> host = CreateHost(); if (host == null) Assert.Fail("Unable to create RazorEngine " + host.ErrorMessage); Person person = new Person() { Name = "Rick", Company = "West Wind", Entered = DateTime.Now }; var curAssemlblyPath = Path.GetFileName(typeof(Person).Assembly.CodeBase.Replace("file:///", "").Replace("/", "\\")); string outputFile = Path.Combine(Environment.CurrentDirectory,"templateoutput.txt"); File.Delete(outputFile); using (TextWriter writer = new StreamWriter(outputFile, false, Encoding.UTF8)) { // when rendering to writer result is empty (success) or null (failure) string result = host.RenderTemplate( // template to render Templates.BasicTemplateStringWithPersonModel, // Model person, // write to textwriter writer ); if (result == null) { Assert.Fail(host.ErrorMessage); return; } } Assert.IsTrue(File.Exists(outputFile),"Template output not created"); string text = File.ReadAllText(outputFile); Console.WriteLine(text); Assert.IsTrue(text.Contains("West Wind"), "Text not found in generated template"); File.Delete(outputFile); Console.WriteLine("--- Source Code ---"); Console.WriteLine(host.LastGeneratedCode); }
public void BasicRazorEngineTextReaderRenderingTest() { RazorEngine<RazorTemplateBase> host = CreateHost(); if (host == null) Assert.Fail("Unable to create RazorEngine " + host.ErrorMessage); Person person = new Person() { Name = "Rick", Company = "West WInd", Entered = DateTime.Now }; var curAssemlblyPath = Path.GetFileName(typeof(Person).Assembly.CodeBase.Replace("file:///", "").Replace("/", "\\")); TextReader reader = new StringReader(Templates.BasicTemplateStringWithPersonModel); string result = host.RenderTemplate( // template to render reader, // Model person ); if (result == null) { Assert.Fail(host.ErrorMessage); return; } Console.WriteLine(result); Console.WriteLine("--- Source Code ---"); Console.WriteLine(host.LastGeneratedCode); }
public void BasicRazorEngineStringRenderingTest() { RazorEngine<RazorTemplateBase> host = CreateHost(); if (host == null) Assert.Fail("Unable to create RazorEngine " + host.ErrorMessage); Person person = new Person() { Name = "Rick", Company = "West WInd", Entered = DateTime.Now, Address = new Address() { Street = "32 Kaiea", City = "Paia" } }; string result = host.RenderTemplate( // template to render Templates.BasicTemplateStringWithPersonModel, // Model person); if (result == null) { Assert.Fail(host.ErrorMessage); return; } Console.WriteLine(result); Console.WriteLine("--- Source Code ---"); Console.WriteLine(host.LastGeneratedCode); }
public void FolderHostWithLayoutPageTest() { using (var host = new RazorFolderHostContainer()) { host.TemplatePath = Path.GetFullPath(@"..\..\FileTemplates\"); host.BaseBinaryFolder = Environment.CurrentDirectory; Console.WriteLine(host.TemplatePath); // point at the folder where dependent assemblies can be found // this applies only to separate AppDomain hosting host.BaseBinaryFolder = Environment.CurrentDirectory; // add model assembly - ie. this assembly host.AddAssemblyFromType(typeof(Person)); // NOTE: If you use AppDomains you will need to add a /bin folder // with all dependencies OR run out of the current folder // and all models have to be serializable or MarshalByRefObj host.UseAppDomain = false; //host.Configuration.CompileToMemory = true; //host.Configuration.TempAssemblyPath = Environment.CurrentDirectory; // Always must start the host host.Start(); // create a model to pass Person person = new Person() { Name = "John Doe", Company = "Doeboy Incorporated", Entered = DateTime.Now, Address = new Address() { Street = "32 Kaiea", City = "Paia" } }; Console.WriteLine("-----Layout page only (rendered)"); // just show what a layout template looks like on its own string layout = host.RenderTemplate("~/_Layout.cshtml", person); Console.WriteLine(layout); Console.WriteLine("----- Content page In Layout Container"); // render a template and pass the model string result = host.RenderTemplate("~/LayoutPageExample.cshtml", person); //result = layout.Replace("@RenderBody", result); //Assert.True(result != null, "Template didn't return any data: " + host.ErrorMessage); Console.WriteLine("---"); Console.WriteLine(result); Console.WriteLine("---"); Assert.IsNotNull(result, host.ErrorMessage); } }
public void BasicStringHostWithInferredModelTest() { var host = new RazorStringHostContainer(); // add model assembly - ie. this assembly host.AddAssemblyFromType(this); host.UseAppDomain = false; host.Start(); Person person = new Person() { Name = "Rick", Company = "West Wind", Entered = DateTime.Now, Address = new Address() { Street = "32 Kaiea", City = "Paia" } }; string template = @" <div>@Model.Name <div> @foreach (var addr in Model.Addresses.OrderBy( ad=> ad.Street)) { <div>@addr.Street, @addr.Phone</div> } </div> "; string result = host.RenderTemplate(template, person,inferModelType: true); Console.WriteLine(result); Console.WriteLine("---"); Assert.IsNotNull(result, "Result shouldn't be null: " + host.ErrorMessage); host.Stop(); }
public void BasicStringHostRuntimeErrorlTest() { var host = new RazorStringHostContainer(); // add model assembly - ie. this assembly host.AddAssemblyFromType(this); host.UseAppDomain = false; host.Start(); Person person = new Person() { Name = "Rick", Company = "West Wind", Entered = DateTime.Now, Address = new Address() { Street = "32 Kaiea", City = "Paia" } }; string template = @" @{ Model.Name = null; } <div> Fail here with Null exception: @Model.Name.ToLower() <div> "; string result = host.RenderTemplate(template, person, inferModelType: true); Assert.IsNull(result, "Result should have failed with a runtime error."); Console.WriteLine(result); Console.WriteLine(host.ErrorMessage); host.Stop(); }
public void BasicFolderTest() { var host = new RazorFolderHostContainer(); host.TemplatePath = Path.GetFullPath(@"..\..\FileTemplates\"); host.BaseBinaryFolder = Environment.CurrentDirectory; // add model assembly - ie. this assembly host.AddAssemblyFromType(typeof(Person)); host.UseAppDomain = true; //host.Configuration.CompileToMemory = true; //host.Configuration.TempAssemblyPath = Environment.CurrentDirectory; host.Start(); Person person = new Person() { Name = "Rick", Company = "West Wind", Entered = DateTime.Now, Address = new Address() { Street = "32 Kaiea", City = "Paia" } }; string result = host.RenderTemplate("~/HelloWorld.cshtml", person); Console.WriteLine(result); Console.WriteLine("---"); Console.WriteLine(host.Engine.LastGeneratedCode); host.Stop(); if (result == null) Assert.Fail(host.ErrorMessage); Assert.IsTrue(result.Contains("West Wind")); }