Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }