A Twitch.tv viewer reward and games system.
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

12 years ago
  1. require('./helper');
  2. var fs = require('fs');
  3. var path = require('path');
  4. var _files = path.join(__dirname, '_files');
  5. function getContents(testName, ext) {
  6. return fs.readFileSync(path.join(_files, testName + '.' + ext), 'utf8');
  7. }
  8. function getView(testName) {
  9. var view = getContents(testName, 'js');
  10. if (!view) throw new Error('Cannot find view for test "' + testName + '"');
  11. return eval(view);
  12. }
  13. function getPartial(testName) {
  14. try {
  15. return getContents(testName, 'partial');
  16. } catch (e) {
  17. // No big deal. Not all tests need to test partial support.
  18. }
  19. }
  20. function getTest(testName) {
  21. var test = {};
  22. test.view = getView(testName);
  23. test.template = getContents(testName, 'mustache');
  24. test.partial = getPartial(testName);
  25. test.expect = getContents(testName, 'txt');
  26. return test;
  27. }
  28. // You can put the name of a specific test to run in the TEST environment
  29. // variable (e.g. TEST=backslashes vows test/render-test.js)
  30. var testToRun = process.env.TEST;
  31. var testNames;
  32. if (testToRun) {
  33. testNames = [testToRun];
  34. } else {
  35. testNames = fs.readdirSync(_files).filter(function (file) {
  36. return (/\.js$/).test(file);
  37. }).map(function (file) {
  38. return path.basename(file).replace(/\.js$/, '');
  39. });
  40. }
  41. describe('Mustache.render', function () {
  42. beforeEach(function () {
  43. Mustache.clearCache();
  44. });
  45. testNames.forEach(function (testName) {
  46. var test = getTest(testName);
  47. it('knows how to render ' + testName, function () {
  48. var output;
  49. if (test.partial) {
  50. output = Mustache.render(test.template, test.view, { partial: test.partial });
  51. } else {
  52. output = Mustache.render(test.template, test.view);
  53. }
  54. assert.equal(output, test.expect);
  55. });
  56. });
  57. });