public void Doesnt_Recompile_If_No_Changes_To_Builder() { var mockery = new MockRepository(); var engine = mockery.StrictMock<IEngine<Example>>(); var templateName = "doesntRecompileIfNoChange"; var template = "template"; var model = new Example(); using (mockery.Record()) { engine.Compile(template, templateName);//just once Expect.Call(engine.Run(model, templateName)).Repeat.Twice().Return("return"); } using (mockery.Playback()) { var builder = ReportBuilder<Example>.CreateWithEngineInstance(templateName, engine) .WithTemplate(template) .WithPrecompilation(); builder.BuildReport(model); model.Name = "changed"; builder.BuildReport(model); } }
public void Can_Use_Helper_Method_To_Include_Image_As_Base64() { var fakeImage = new byte[1000]; new Random(1024).NextBytes(fakeImage); var model = new Example { Image = fakeImage, Name="test" }; string helpers = @"@helper DataImage(byte[] image, string altText) { <img src=""data:image/png;base64,@System.Convert.ToBase64String(image, Base64FormattingOptions.None)"" alt=""@altText"" /> }"; string template = @"@@HELPERS@DataImage(Model.Image, Model.Name)"; var report = ReportBuilder<Example> .Create("imageTest") .WithTemplate(template) .WithHelpers(helpers) .BuildReport(model); Func<byte[], string> makeImageSrcData = b => "data:image/png;base64," + Convert.ToBase64String(b, Base64FormattingOptions.None); var expected = "<img src=\"" + makeImageSrcData(fakeImage) + "\" alt=\"test\" />"; Assert.AreEqual(expected, report.Trim().Replace(Environment.NewLine, string.Empty)); }
public void WithPdfRenderer_KeepStyles() { var mockery = new MockRepository(); var renderer = mockery.StrictMock<IPdfRenderer>(); var engine = mockery.StrictMock<IEngine<Example>>(); var templateName = "templateName"; var template = "template"; var css = "css"; var model = new Example(); var rendered = "cssrendered"; var pdf = new byte[0]; using (mockery.Record()) { engine.Compile(template, templateName); SetupResult.For(engine.Run(model, templateName)).Return(rendered); Expect.Call(renderer.RenderFromHtml(rendered)).Return(pdf); } using (mockery.Playback()) { var builder = ReportBuilder<Example>.CreateWithEngineInstance(templateName, engine) .WithTemplate(template) .WithCss(css) .WithPdfRenderer(renderer, false) .WithPrecompilation(); var output = builder.BuildPdf(model); Assert.AreEqual(output, pdf); } }
public void Recompiles_If_Template_Changed() { var mockery = new MockRepository(); var engine = mockery.StrictMock<IEngine<Example>>(); var templateName = "recompileIfChange"; var template = "template"; var newTemplate = "template2"; var model = new Example(); using (mockery.Record()) { engine.Compile(template, templateName); engine.Compile(newTemplate, templateName); Expect.Call(engine.Run(model, templateName)).Repeat.Twice().Return("return"); } using (mockery.Playback()) { var builder = ReportBuilder<Example>.CreateWithEngineInstance(templateName, engine) .WithTemplate(template) .WithPrecompilation(); builder.BuildReport(model); builder = builder.WithTemplate(newTemplate); builder.BuildReport(model); } }