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); }
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); }
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); }
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); }
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); }
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); }
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); }