cssify
Version:
A simple Browserify transform for adding required styles to the browser.
87 lines (75 loc) • 2.56 kB
JavaScript
var test = require('tape-catch')
var assign = require('lodash.assign')
var processCss = require('../../lib/process-css')
var defaultOptions = { _flags: {} }
var fileName = 'test.css'
var hashedFilename = '_nu4uke'
var css = '.test-class { font-family: "Times New Roman", sans-serif; }'
var escapedCss = '.test-class { font-family: \\"Times New Roman\\", sans-serif; }'
// var devMap = '{\n\t\'test-class\': \'_test___test-class\'\n}'
// var devCss = '._test___test-class { font-family: \\"Times New Roman\\", sans-serif; }'
var prodMap = '{\n\t\'test-class\': \'_1j9q0wu\'\n}'
var prodCss = '._1j9q0wu { font-family: \\"Times New Roman\\", sans-serif; }'
test('processCss', function (t) {
processCss(fileName, css, assign({}, defaultOptions))
.then(function (moduleSource) {
t.equal(
moduleSource,
'module.exports = "' + escapedCss + '";\n',
'without injection'
)
return processCss(fileName, css, assign({}, defaultOptions, {
'auto-inject': true
}))
})
.then(function (moduleSource) {
t.equal(
moduleSource, [
'var inject = require(\'./\');',
'var css = "' + escapedCss + '";',
'inject(css, undefined, \'' + hashedFilename + '\');',
'module.exports = css;'
].join('\n') + '\n',
'with injection'
)
return processCss(fileName, css, assign({}, defaultOptions, {
modules: true
}))
})
.then(function (moduleSource) {
t.equal(
moduleSource,
'module.exports = { css: "' + prodCss + '", map: ' + prodMap + ' };\n',
'with modules'
)
return processCss(fileName, css, assign({}, defaultOptions, {
'auto-inject': true,
modules: true
}))
})
.then(function (moduleSource) {
t.equal(
moduleSource, [
'var inject = require(\'./\');',
'var css = "' + prodCss + '";',
'inject(css, undefined, \'' + hashedFilename + '\');',
'module.exports = ' + prodMap + ';'
].join('\n') + '\n',
'with modules and injection'
)
return processCss(fileName, css, assign({}, defaultOptions, {
modules: true,
_flags: assign({}, defaultOptions._flags, { debug: true })
}))
})
.then(function (moduleSource) {
// t.equal(
// moduleSource,
// 'module.exports = { css: "' + devCss + '", map: ' + devMap + ' };\n',
// 'with debug'
// )
})
.then(t.end)
.catch(t.fail)
})