co-assets-compiler
Version:
Assets compiler for CompoundJS
157 lines (114 loc) • 4.42 kB
JavaScript
var fs = require('fs')
, path = require('path')
, request = require('supertest')
, express = require('express')
, should = require('should')
, utils = require('./utils');
describe('assets-compiler', function() {
describe('compilers', function() {
/*
* Stylus Compiler
*/
it('should compile stylus stylesheets', function (done) {
utils.invalidateRequireCache(); // To get a fresh compound app
var app = getApp();
var compound = app.compound;
// App settings
app.set('cssEngine', 'stylus');
app.set('cssDirectory', '/stylesheets');
app.use(express.static(app.root + '/public'));
// Make sure previously precompiled assets are deleted
var cssDir = app.root + '/public/stylesheets';
utils.ensureDirClean(cssDir);
// Fake a stylesheet request
request(app)
.get('/stylesheets/application.css')
.end(function (err, res) {
should.not.exist(err);
res.headers['content-type'].should.match(/^text\/css/);
res.headers['content-length'].should.equal('29');
res.text.should.equal(fs.readFileSync(app.root + '/public/stylesheets/application.css').toString());
utils.ensureDirClean(cssDir);
done();
});
});
/*
* SASS Compiler
*/
it('should compile SASS stylesheets', function (done) {
utils.invalidateRequireCache(); // To get a fresh compound app
var app = getApp();
var compound = app.compound;
// App settings
app.set('cssEngine', 'sass');
app.set('cssDirectory', '/stylesheets');
app.use(express.static(app.root + '/public'));
// Make sure previously precompiled assets are deleted
var cssDir = app.root + '/public/stylesheets';
// utils.ensureDirClean(cssDir);
// Fake a stylesheet request
request(app)
.get('/stylesheets/application.css')
.end(function (err, res) {
should.not.exist(err);
res.headers['content-type'].should.match(/^text\/css/);
res.headers['content-length'].should.equal('30');
res.text.should.equal(fs.readFileSync(app.root + '/public/stylesheets/application.css').toString());
utils.ensureDirClean(cssDir);
done();
});
});
/*
* Node SASS compiler for SCSS support
*/
it('should compile SCSS stylesheets', function (done) {
utils.invalidateRequireCache(); //To get a fresh compound app
var app = getApp();
var compound = app.compound;
// App settings
app.set('cssEngine', 'scss');
app.set('cssDirectory', '/stylesheets');
app.use(express.static(app.root + '/public'));
// Make sure previously precompiled assets are deleted
var cssDir = app.root + '/public/stylesheets';
utils.ensureDirClean(cssDir);
// Fake a stylesheet request
request(app)
.get('/stylesheets/application.css')
.end(function (err, res) {
should.not.exist(err);
res.headers['content-type'].should.match(/^text\/css/);
res.headers['content-length'].should.equal('30');
res.text.should.equal(fs.readFileSync(app.root + '/public/stylesheets/application.css').toString());
utils.ensureDirClean(cssDir);
done();
});
});
/*
* LESS Compiler
*/
it('should compile LESS stylesheets', function (done) {
utils.invalidateRequireCache(); // To get a fresh compound app
var app = getApp();
var compound = app.compound;
// App settings
app.set('cssEngine', 'less');
app.set('cssDirectory', '/stylesheets');
app.use(express.static(app.root + '/public'));
// Make sure previously precompiled assets are deleted
var cssDir = app.root + '/public/stylesheets';
utils.ensureDirClean(cssDir);
// Fake a stylesheet request
request(app)
.get('/stylesheets/application.css')
.end(function (err, res) {
should.not.exist(err);
res.headers['content-type'].should.match(/^text\/css/);
res.headers['content-length'].should.equal('32');
res.text.should.equal(fs.readFileSync(app.root + '/public/stylesheets/application.css').toString());
utils.ensureDirClean(cssDir);
done();
});
});
});
});