/** * Module dependencies. */ var ejs = require('..') , fs = require('fs') , read = fs.readFileSync , assert = require('should'); /** * Load fixture `name`. */ function fixture(name) { return read('test/fixtures/' + name, 'utf8').replace(/\r/g, ''); } /** * User fixtures. */ var users = []; users.push({ name: 'tobi' }); users.push({ name: 'loki' }); users.push({ name: 'jane' }); describe('ejs.compile(str, options)', function(){ it('should compile to a function', function(){ var fn = ejs.compile('
yay
'); fn().should.equal('yay
'); }) it('should throw if there are syntax errors', function(){ try { ejs.compile(fixture('fail.ejs')); } catch (err) { err.message.should.include('compiling ejs'); try { ejs.compile(fixture('fail.ejs'), { filename: 'fail.ejs' }); } catch (err) { err.message.should.include('fail.ejs'); return; } } assert(false, 'compiling a file with invalid syntax should throw an exception'); }) it('should allow customizing delimiters', function(){ var fn = ejs.compile('{= name }
', { open: '{', close: '}' }); fn({ name: 'tobi' }).should.equal('tobi
'); var fn = ejs.compile('::= name ::
', { open: '::', close: '::' }); fn({ name: 'tobi' }).should.equal('tobi
'); var fn = ejs.compile('(= name )
', { open: '(', close: ')' }); fn({ name: 'tobi' }).should.equal('tobi
'); }) it('should default to using ejs.open and ejs.close', function(){ ejs.open = '{'; ejs.close = '}'; var fn = ejs.compile('{= name }
'); fn({ name: 'tobi' }).should.equal('tobi
'); var fn = ejs.compile('|= name |
', { open: '|', close: '|' }); fn({ name: 'tobi' }).should.equal('tobi
'); delete ejs.open; delete ejs.close; }) it('should have a working client option', function(){ var fn = ejs.compile('<%= foo %>
', { client: true }); var str = fn.toString(); eval('var preFn = ' + str); preFn({ foo: 'bar' }).should.equal('bar
'); }) }) describe('ejs.render(str, options)', function(){ it('should render the template', function(){ ejs.render('yay
') .should.equal('yay
'); }) it('should accept locals', function(){ ejs.render('<%= name %>
', { name: 'tobi' }) .should.equal('tobi
'); }) }) describe('ejs.renderFile(path, options, fn)', function(){ it('should render a file', function(done){ ejs.renderFile('test/fixtures/para.ejs', function(err, html){ if (err) return done(err); html.should.equal('hey
'); done(); }); }) it('should accept locals', function(done){ var options = { name: 'tj', open: '{', close: '}' }; ejs.renderFile('test/fixtures/user.ejs', options, function(err, html){ if (err) return done(err); html.should.equal('