示例#1
0
        public void ItShouldHandleNullReturnFromHelper()
        {
            var writer         = new StringWriter();
            var settings       = new RendererSettingsBuilder().BuildSettings();
            var renderSettings = new RenderSettings();
            var stringRenderer = new StringRender(writer, settings.RendererPipeline);

            var helpers = ImmutableDictionary.CreateBuilder <string, HelperRef>();

            var helper = new Func <HelperContext, object>((helperContext) =>
            {
                return(null);
            });

            helpers.Add("MyHelper", new HelperRef(helper));

            var tagRenderer = new HelperTagRenderer(helpers.ToImmutable());

            var token = new HelperToken
            {
                Name = "MyHelper",
                Args = ImmutableArray <HelperArgument> .Empty
            };

            var context = new Context(new { Count = 1.21m }, settings, renderSettings);

            tagRenderer.Write(stringRenderer, token, context);

            var res = writer.ToString();

            Assert.Equal("", res);
        }
示例#2
0
        public void ItShouldCallHelperWhenExistsWithArgumentFromParent()
        {
            var writer         = new StringWriter();
            var settings       = new RendererSettingsBuilder().BuildSettings();
            var renderSettings = new RenderSettings();
            var stringRenderer = new StringRender(writer, settings.RendererPipeline);

            var helpers = ImmutableDictionary.CreateBuilder <string, HelperRef>();

            var helper = new Func <HelperContext, int, int, string>((helperContext, count, count2) =>
            {
                return($"<{count}-{count2}>");
            });

            helpers.Add("MyHelper", new HelperRef(helper));

            var tagRenderer = new HelperTagRenderer(helpers.ToImmutable());

            var token = new HelperToken
            {
                Name = "MyHelper",
                Args = ImmutableArray.Create(new HelperArgument("Count"), new HelperArgument("Count2"))
            };

            var context = new Context(new { Count = 10 }, settings, renderSettings)
                          .Push(new { Count2 = 20 });

            tagRenderer.Write(stringRenderer, token, context);

            var res = writer.ToString();

            Assert.Equal("<10-20>", res);
        }
示例#3
0
        public void ItShouldApplyTheCultureOfTheRenderer()
        {
            var writer         = new StringWriter();
            var settings       = new RendererSettingsBuilder().BuildSettings();
            var renderSettings = new RenderSettings
            {
                CultureInfo = new CultureInfo("ru-RU")
            };
            var stringRenderer = new StringRender(writer, settings.RendererPipeline);

            var helpers = ImmutableDictionary.CreateBuilder <string, HelperRef>();

            var helper = new Func <HelperContext, decimal>((helperContext) =>
            {
                return(helperContext.Lookup <decimal>("Count"));
            });

            helpers.Add("MyHelper", new HelperRef(helper));

            var tagRenderer = new HelperTagRenderer(helpers.ToImmutable());

            var token = new HelperToken
            {
                Name = "MyHelper",
                Args = ImmutableArray <HelperArgument> .Empty
            };

            var context = new Context(new { Count = 1.21m }, settings, renderSettings);

            tagRenderer.Write(stringRenderer, token, context);

            var res = writer.ToString();

            Assert.Equal("1,21", res);
        }
示例#4
0
        public void ItShouldRenderAllowHelpersWithNoArguments()
        {
            var writer         = new StringWriter();
            var settings       = new RendererSettingsBuilder().BuildSettings();
            var renderSettings = new RenderSettings();
            var stringRenderer = new StringRender(writer, settings.RendererPipeline);

            var helpers = ImmutableDictionary.CreateBuilder <string, HelperRef>();

            var helper = new Func <HelperContext, string>((helperContext) =>
            {
                return($"<{helperContext.Lookup<int>("Count")}>");
            });

            helpers.Add("MyHelper", new HelperRef(helper));

            var tagRenderer = new HelperTagRenderer(helpers.ToImmutable());

            var token = new HelperToken
            {
                Name = "MyHelper",
                Args = ImmutableArray <HelperArgument> .Empty
            };

            var context = new Context(new { Count = 10 }, settings, renderSettings);

            tagRenderer.Write(stringRenderer, token, context);

            var res = writer.ToString();

            Assert.Equal("<10>", res);
        }
示例#5
0
        public void ItShouldRenderWhenTypesNotMatchCanBeConverted()
        {
            var writer         = new StringWriter();
            var settings       = new RendererSettingsBuilder().BuildSettings();
            var renderSettings = new RenderSettings();
            var stringRenderer = new StringRender(writer, settings.RendererPipeline);

            var helpers = ImmutableDictionary.CreateBuilder <string, HelperRef>();

            var helper = new Func <HelperContext, int, string>((helperContext, count) =>
            {
                return($"<{count}>");
            });

            helpers.Add("MyHelper", new HelperRef(helper));

            var tagRenderer = new HelperTagRenderer(helpers.ToImmutable());

            var token = new HelperToken
            {
                Name = "MyHelper",
                Args = ImmutableArray.Create(new HelperArgument("Count"))
            };

            var context = new Context(new { Count = "10" }, settings, renderSettings);

            tagRenderer.Write(stringRenderer, token, context);

            var res = writer.ToString();

            Assert.Equal("<10>", res);
        }
示例#6
0
        public void ItShouldRenderNothingWhenHelperDoesntExist()
        {
            var writer         = new StringWriter();
            var settings       = new RendererSettingsBuilder().BuildSettings();
            var renderSettings = new RenderSettings();
            var stringRenderer = new StringRender(writer, settings.RendererPipeline);

            var helpers = ImmutableDictionary.Create <string, HelperRef>();

            var tagRenderer = new HelperTagRenderer(helpers);

            var token = new HelperToken
            {
                Name = "MyHelper",
                Args = ImmutableArray <HelperArgument> .Empty
            };

            var context = new Context(new { Count = 10 }, settings, renderSettings);

            tagRenderer.Write(stringRenderer, token, context);

            var res = writer.ToString();

            Assert.Equal("", res);
        }
示例#7
0
        public void ItShouldRenderWhenTypesMatchBaseType()
        {
            var writer         = new StringWriter();
            var settings       = new RendererSettingsBuilder().BuildSettings();
            var renderSettings = new RenderSettings();
            var stringRenderer = new StringRender(writer, settings.RendererPipeline);

            var helpers = ImmutableDictionary.CreateBuilder <string, HelperRef>();

            var helper = new Func <HelperContext, object, string>((helperContext, src) =>
            {
                if (!(src is IDictionary <object, object> dic))
                {
                    return(string.Empty);
                }
                return($"<{dic["value"]}>");
            });

            helpers.Add("MyHelper", new HelperRef(helper));

            var tagRenderer = new HelperTagRenderer(helpers.ToImmutable());

            var token = new HelperToken
            {
                Name = "MyHelper",
                Args = ImmutableArray.Create(new HelperArgument("Count"))
            };

            var context = new Context(new { Count = new Dictionary <object, object> {
                                                { "value", "10" }
                                            } }, settings, renderSettings);

            tagRenderer.Write(stringRenderer, token, context);

            var res = writer.ToString();

            Assert.Equal("<10>", res);
        }