You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
require('./helper');
|
|
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var _files = path.join(__dirname, '_files');
|
|
|
|
function getContents(testName, ext) {
|
|
return fs.readFileSync(path.join(_files, testName + '.' + ext), 'utf8');
|
|
}
|
|
|
|
function getView(testName) {
|
|
var view = getContents(testName, 'js');
|
|
if (!view) throw new Error('Cannot find view for test "' + testName + '"');
|
|
return eval(view);
|
|
}
|
|
|
|
function getPartial(testName) {
|
|
try {
|
|
return getContents(testName, 'partial');
|
|
} catch (e) {
|
|
// No big deal. Not all tests need to test partial support.
|
|
}
|
|
}
|
|
|
|
function getTest(testName) {
|
|
var test = {};
|
|
test.view = getView(testName);
|
|
test.template = getContents(testName, 'mustache');
|
|
test.partial = getPartial(testName);
|
|
test.expect = getContents(testName, 'txt');
|
|
return test;
|
|
}
|
|
|
|
// You can put the name of a specific test to run in the TEST environment
|
|
// variable (e.g. TEST=backslashes vows test/render-test.js)
|
|
var testToRun = process.env.TEST;
|
|
|
|
var testNames;
|
|
if (testToRun) {
|
|
testNames = [testToRun];
|
|
} else {
|
|
testNames = fs.readdirSync(_files).filter(function (file) {
|
|
return (/\.js$/).test(file);
|
|
}).map(function (file) {
|
|
return path.basename(file).replace(/\.js$/, '');
|
|
});
|
|
}
|
|
|
|
describe('Mustache.render', function () {
|
|
beforeEach(function () {
|
|
Mustache.clearCache();
|
|
});
|
|
|
|
testNames.forEach(function (testName) {
|
|
var test = getTest(testName);
|
|
|
|
it('knows how to render ' + testName, function () {
|
|
var output;
|
|
if (test.partial) {
|
|
output = Mustache.render(test.template, test.view, { partial: test.partial });
|
|
} else {
|
|
output = Mustache.render(test.template, test.view);
|
|
}
|
|
|
|
assert.equal(output, test.expect);
|
|
});
|
|
});
|
|
});
|