UNPKG

client-templates

Version:

roots extension that precompiles templates for use on the client side

106 lines (75 loc) 3.27 kB
path = require 'path' fs = require 'fs' Roots = require 'roots' RootsUtil = require 'roots-util' _path = path.join(__dirname, 'fixtures') h = new RootsUtil.Helpers(base: _path) # utils compile_fixture = (fixture_name, done) -> @public = path.join(fixture_name, 'public') h.project.compile(Roots, fixture_name).done(done, ((err) -> console.error(err); done(err))) before (done) -> h.project.install_dependencies('*', done) after -> h.project.remove_folders('**/public') # tests describe 'errors', -> it 'should throw an error when base path not passed', -> @path = path.join(_path, 'error') project = new Roots(@path) (-> project.compile()).should.throw() describe 'basics', -> before (done) -> compile_fixture.call(@, 'basic', -> done()) it 'should precompile a basic template', -> p = path.join(@public, 'tpl/all.js') h.file.exists(p).should.be.ok h.file.has_content(p).should.be.ok it 'should still compile other templates normally', -> p = path.join(@public, 'index.html') h.file.exists(p).should.be.ok h.file.has_content(p).should.be.ok it 'should compile templates under their local path key', -> p = path.join(@public, 'tpl/all.js') h.file.contains(p, 'template1').should.be.ok h.file.contains(p, path.normalize('cat/dog')).should.be.ok it 'not compile templates that would break a normal jade compile', -> p = path.join(@public, 'tpl/all.js') h.file.contains(p, 'template2').should.be.ok describe 'extract', -> before (done) -> compile_fixture.call(@, 'extract', -> done()) it 'should compile a template to both client and static if extract is false', -> p1 = path.join(@public, 'tpl/all.js') h.file.exists(p1).should.be.ok h.file.has_content(p1).should.be.ok p2 = path.join(@public, 'tpl/template2.html') h.file.exists(p2).should.be.ok h.file.has_content(p2).should.be.ok describe 'concat', -> before (done) -> compile_fixture.call(@, 'concat', -> done()) it 'should compile templates separately if concat is false', -> p1 = path.join(@public, 'tpl/helper.js') h.file.exists(p1).should.be.ok h.file.has_content(p1).should.be.ok p2 = path.join(@public, 'tpl/template3.js') h.file.exists(p2).should.be.ok h.file.has_content(p2).should.be.ok p3 = path.join(@public, 'tpl/template4.js') h.file.exists(p3).should.be.ok h.file.has_content(p3).should.be.ok describe 'no_output', -> before (done) -> compile_fixture.call(@, 'no-out', -> done()) it 'should compile templates with no output specified', -> p = path.join(@public, 'js/templates.js') h.file.exists(p).should.be.ok describe 'compress', -> before (done) -> compile_fixture.call(@, 'compress', -> done()) it 'should compress templates if the option is passed', -> p = path.join(@public, 'js/templates.js') h.file.exists(p).should.be.ok h.file.contains_match(p, '\n').should.not.be.ok describe 'view_helper', -> before (done) -> compile_fixture.call(@, 'view_helper', -> done()) it 'should output the correct path from the view helper', -> p = path.join(@public, 'index.html') h.file.exists(p).should.be.ok h.file.contains(p, "<script src='tpl/all.js'></script>").should.be.ok