From 5fb870779fa27a4ccbb7982cdf1b1d78f1bebdec Mon Sep 17 00:00:00 2001 From: Sean McArthur <sean.monstar@gmail.com> Date: Fri, 7 Sep 2012 18:04:15 -0700 Subject: [PATCH] adding /test/mocks/site-templates.js route this returns compiled site templates, similar to the dialog templates, which are needed by the test suite to test the site works! --- lib/static/views.js | 19 ++++++++++++++----- resources/static/common/js/renderer.js | 2 ++ resources/views/test.ejs | 2 ++ scripts/create_templates.js | 23 ++++++++++++++--------- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/lib/static/views.js b/lib/static/views.js index 1c1272b91..dc4a583b2 100644 --- a/lib/static/views.js +++ b/lib/static/views.js @@ -233,13 +233,22 @@ exports.setup = function(app) { // /common/js/templates.js is dynamically built each time if (!config.get('use_minified_resources')) { var generateTemplates = require('../../scripts/create_templates'); - var templatesPath = path.join(__dirname, '../../resources/static/dialog/views') - var templatesData; + var dialogTemplatesPath = path.join(__dirname, '../../resources/static/dialog/views') + var dialogTemplatesData; app.get('/common/js/templates.js', function(req, res) { - var str = generateTemplates(generateTemplates.RETURN, templatesPath); - if (str) templatesData = str; + var str = generateTemplates(generateTemplates.RETURN, dialogTemplatesPath); + if (str) dialogTemplatesData = str; - res.send(templatesData); + res.send(dialogTemplatesData); + }); + + var siteTemplatesPath = path.join(__dirname, "../../resources/views"); + var siteTemplatesData; + app.get('/test/mocks/site-templates.js', function(req, res) { + var str = generateTemplates(generateTemplates.RETURN, siteTemplatesPath, "site/"); + if (str) siteTemplatesData = str; + + res.send(siteTemplatesData); }); } diff --git a/resources/static/common/js/renderer.js b/resources/static/common/js/renderer.js index 25282c1fc..4a613d473 100644 --- a/resources/static/common/js/renderer.js +++ b/resources/static/common/js/renderer.js @@ -13,6 +13,8 @@ BrowserID.Renderer = (function() { var templateFn = bid.Templates[templateName]; vars = vars || {}; + if (!templateFn) throw "Template not found: " + templateName; + // arguments are: locals, filters (which cant be used client-side), escapeFn return templateFn.call(null, vars); } diff --git a/resources/views/test.ejs b/resources/views/test.ejs index 01012a801..1a11a48e5 100644 --- a/resources/views/test.ejs +++ b/resources/views/test.ejs @@ -84,11 +84,13 @@ <script src="mocks/mocks.js"></script> <script src="mocks/xhr.js"></script> <script src="mocks/templates.js"></script> + <script src="mocks/site-templates.js"></script> <script src="mocks/provisioning.js"></script> <script src="mocks/window.js"></script> <script src="mocks/winchan.js"></script> <script src="mocks/cachify.js"></script> + <script src="/common/js/templates.js"></script> <script src="/common/js/renderer.js"></script> <script src="/common/js/class.js"></script> <script src="/common/js/mediator.js"></script> diff --git a/scripts/create_templates.js b/scripts/create_templates.js index b98009904..19260b84b 100755 --- a/scripts/create_templates.js +++ b/scripts/create_templates.js @@ -12,14 +12,18 @@ ejs = require('ejs'); var dir = process.env.TEMPLATE_DIR || process.cwd(); var output_dir = process.env.BUILD_DIR || dir; -var templates = {}; +var bundles = {}; -var lastGen = 0; -var templateData; - -function generateTemplates(outputType, templatesDir) { +function generateTemplates(outputType, templatesDir, namePrefix) { if (templatesDir) dir = templatesDir; - var fileNames = fs.readdirSync(dir) + if (!namePrefix) namePrefix = ""; + + var bundle = bundles[templatesDir] || (bundles[templatesDir] = {}); + var lastGen = bundle.lastGen || 0; + var templateData = bundle.data; + + var fileNames = fs.readdirSync(dir); + var templates = {}; // is a regen even neccesary? try { @@ -41,7 +45,7 @@ function generateTemplates(outputType, templatesDir) { for(var index = 0, max = fileNames.length; index < max; index++) { var fileName = fileNames[index]; if(fileName.match(/\.ejs$/)) { - var templateName = fileName.replace(/\.ejs/, ''); + var templateName = namePrefix + fileName.replace(/\.ejs/, ''); var templateText = fs.readFileSync(dir + "/" + fileName, "utf8"); templates[templateName] = ejs.compile(templateText, { @@ -51,7 +55,7 @@ function generateTemplates(outputType, templatesDir) { } } - var templateData = "BrowserID.Templates = {};"; + templateData = "BrowserID.Templates = BrowserID.Templates || {};"; for (var t in templates) { if (templates.hasOwnProperty(t)) { templateData += "\nBrowserID.Templates['" + t + "'] = " + String(templates[t]); @@ -59,7 +63,8 @@ function generateTemplates(outputType, templatesDir) { } if (outputType === generateTemplates.RETURN) { - lastGen = Date.now(); + bundle.lastGen = Date.now(); + bundle.data = templateData; return templateData; } else { fs.writeFileSync(output_dir + "/templates.js", templateData, "utf8"); -- GitLab