public void Should_replace_sections_in_master_page() { const string input = "@Master['myMaster']\r\n@Section['Header'];\r\nHeader\r\n@EndSection\r\n@Section['Footer']\r\nFooter\r\n@EndSection"; const string master = @"<div id='header'>@Section['Header'];</div><div id='footer'>@Section['Footer'];</div>"; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.GetTemplateCallback = (s, m) => master; var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, null, fakeViewEngineHost); Assert.Equal("<div id='header'>\r\nHeader\r\n</div><div id='footer'>\r\nFooter\r\n</div>", result); }
public void Should_try_to_locate_master_page_if_one_specified() { const string input = "@Master['myMaster']\r\n@Section['Header'];\r\nHeader\r\n@EndSection\r\n@Section['Footer']\r\nFooter\r\n@EndSection"; var called = false; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.GetTemplateCallback = (s, m) => { called = (s == "myMaster"); return ""; }; var viewEngine = new SuperSimpleViewEngine(); viewEngine.Render(input, null, fakeViewEngineHost); Assert.True(called); }
public void Should_expand_partial_content_with_specified_model_property_if_specified() { const string input = @"<html><head></head><body>@Partial['testing', Model.User];</body></html>"; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.GetTemplateCallback = (s, m) => "Hello @Model.Name"; dynamic model = new ExpandoObject(); dynamic subModel = new ExpandoObject(); model.Name = "Jim"; subModel.Name = "Bob"; model.User = subModel; var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, model, fakeViewEngineHost); Assert.Equal(@"<html><head></head><body>Hello Bob</body></html>", result); }
public void Should_handle_master_page_hierarchies() { const string input = "@Master['middle']\r\n@Section['MiddleContent']Middle@EndSection"; const string middle = "@Master['top']\r\n@Section['TopContent']Top\r\n@Section['MiddleContent']@EndSection"; const string top = "Top! @Section['TopContent']"; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.GetTemplateCallback = (s, m) => s == "middle" ? middle : top; var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, null, fakeViewEngineHost); Assert.Equal("Top! Top\r\nMiddle", result); }
public void Should_expand_anti_forgery_tokens() { const string input = "<html><body><form>@AntiForgeryToken</form><body></html>"; var fakeViewEngineHost = new FakeViewEngineHost(); var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, null, fakeViewEngineHost); Assert.Equal("<html><body><form>CSRF</form><body></html>", result); }
public void Should_expand_partial_content_even_with_no_model() { const string input = @"<html><head></head><body>@Partial['testing'];</body></html>"; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.GetTemplateCallback = (s, m) => "Test partial content"; var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, null, fakeViewEngineHost); Assert.Equal(@"<html><head></head><body>Test partial content</body></html>", result); }
public void Should_also_expand_master_page_with_same_model() { const string input = "@Master['myMaster']\r\n@Section['Header'];\r\nHeader\r\n@EndSection\r\n@Section['Footer']\r\nFooter\r\n@EndSection"; const string master = @"Hello @Model.Name!<div id='header'>@Section['Header'];</div><div id='footer'>@Section['Footer'];</div>"; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.GetTemplateCallback = (s, m) => master; var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, new { Name = "Bob" }, fakeViewEngineHost); Assert.Equal("Hello Bob!<div id='header'>\r\nHeader\r\n</div><div id='footer'>\r\nFooter\r\n</div>", result); }
public void Should_call_to_expand_paths() { const string input = @"<script src='@Path['~/scripts/test.js']'></script>"; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.ExpandPathCallBack = s => s.Replace("~/", "/BasePath/"); var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, null, fakeViewEngineHost); Assert.Equal("<script src='/BasePath/scripts/test.js'></script>", result); }
public void Should_invoke_all_matchers() { // Given var extension1 = A.Fake<ISuperSimpleViewEngineMatcher>(); A.CallTo(() => extension1.Invoke(A<string>._, A<object>._, A<IViewEngineHost>._)).Returns("Foo"); var extension2 = A.Fake<ISuperSimpleViewEngineMatcher>(); A.CallTo(() => extension2.Invoke(A<string>._, A<object>._, A<IViewEngineHost>._)).ReturnsLazily(x => (string)x.Arguments[0] + "Bar"); const string input = @"<html><head></head><body></body></html>"; var engine = new SuperSimpleViewEngine(new[] {extension1, extension2}); // When var output = engine.Render(input, null, this.fakeHost); // Then Assert.Equal("FooBar", output); }
public void Shoud_pass_view_engine_host_to_matchers() { // Given const string input = @"<html><head></head><body></body></html>"; var extension = A.Fake<ISuperSimpleViewEngineMatcher>(); var engine = new SuperSimpleViewEngine(new[] { extension }); // When engine.Render(input, null, this.fakeHost); // Then A.CallTo(() => extension.Invoke(A<string>._, A<object>._, this.fakeHost)).MustHaveHappened(); }
public void Should_support_being_passed_null_matchers() { // Given const string input = @"<html><head></head><body></body></html>"; var engine = new SuperSimpleViewEngine(null); // When var output = engine.Render(input, null, this.fakeHost); // Then Assert.Equal(input, output); }
public void Should_pass_context_nested_dictionary_to_matchers() { // Given const string keyConst = "TestKey"; const string valueConst = "testvalue"; var dict = new Dictionary<string, object> { { keyConst, valueConst } }; var context = this.fakeHost.Context as FakeViewEngineHost.FakeContext; context.ViewBag.Nested = new { Dictionary = dict }; var input = string.Format(@"<html><head></head><body>@Context.ViewBag.Nested.Dictionary.{0}</body></html>", keyConst); var engine = new SuperSimpleViewEngine(); // When var result = engine.Render(input, null, this.fakeHost); // Then Assert.Equal(string.Format("<html><head></head><body>{0}</body></html>", valueConst), result); }
public void Should_expand_partial_content_with_context() { const string input = @"<html><head></head><body>@Partial['testing'];</body></html>"; var fakeViewEngineHost = new FakeViewEngineHost(); fakeViewEngineHost.GetTemplateCallback = (s, m) => "Hello @Context.Name"; var viewEngine = new SuperSimpleViewEngine(); var result = viewEngine.Render(input, null, fakeViewEngineHost); Assert.Equal(@"<html><head></head><body>Hello Frank</body></html>", result); }