void TestRequest(Action <Request> action, string template, string expected) { ExoWeb.Model(new { request = ExoWeb.Query <Request>((string)null) }, action); string output = Accessors.Render(template); template = template.Replace("\"", "'"); output = Regex.Replace(Regex.Replace(output.Replace("\"", "'"), "exo[0-9]+", "__id__"), "item:s\\d*\\-\\-", "item:s#--"); output.Should().Match( // template markup converted into an element embedded to be used as a Sys.UI.Template Regex.Replace(template, "sys\\-template(\"|')[^\\>]*\\>", "sys-template$1 id='__id__'>") + expected + linkScript ); }
protected virtual string Render(Action <Request> action, string templateMarkup, string pageMarkup) { ExoWeb.Model(new { request = ExoWeb.Query <Request>(null) }, (Request request) => { request.Description = "Something doesn't work"; request.User = new User() { UserName = "******", IsActive = true }; request.User.Requests.Add(request); if (action != null) { action(request); } }); if (!string.IsNullOrEmpty(templateMarkup)) { Accessors.AddTemplates(templateMarkup); } var outputMarkup = Accessors.Render(pageMarkup); // Wrap the xml in a container to provide namespace aliases for supported controls var xml = @"<output xmlns:sys='javascript:Sys' xmlns:dataview='javascript:Sys.UI.DataView' xmlns:content='javascript:ExoWeb.UI.Content' xmlns:template='javascript:ExoWeb.UI.Template' xmlns:toggle='javascript:ExoWeb.UI.Toggle' xmlns:behavior='javascript:ExoWeb.UI.Behavior' xmlns:html='javascript:ExoWeb.UI.Html' xmlns:togglegroup='javascript:ExoWeb.UI.ToggleGroup'>" + outputMarkup + "</output>"; return(PrettyPrintXml(xml)); }