Files
postcss/test/root.js
T

86 lines
2.4 KiB
JavaScript

var Root = require('../lib/root');
var Rule = require('../lib/rule');
var parse = require('../lib/parse');
var Result = require('../lib/result');
var fs = require('fs');
describe('Root', () => {
describe('toString()', () => {
fs.readdirSync(__dirname + '/cases/parse/').forEach( file => {
if ( !file.match(/\.css$/) ) return;
it('stringify ' + file, () => {
var path = __dirname + '/cases/parse/' + file;
var css = fs.readFileSync(path).toString();
parse(css).toString().should.eql(css);
});
});
it('saves one line on insert', () => {
var css = parse("a {}");
css.prepend( new Rule({ selector: 'em' }) );
css.toString().should.eql("em {}a {}");
});
it('fixes spaces on insert before first', () => {
var css = parse("a {}\nb {}");
css.prepend( new Rule({ selector: 'em' }) );
css.toString().should.eql("em {}\na {}\nb {}");
});
it('fixes spaces on insert before only one fule', () => {
var css = parse("a {}\n");
css.insertBefore(css.rules[0], new Rule({ selector: 'em' }) );
css.toString().should.eql("em {}\na {}\n");
});
});
describe('append()', () => {
it('sets new line between rules in multiline files', () => {
var a = parse('a {}\n\na {}\n');
var b = parse('b {}\n');
a.append(b).toString().should.eql('a {}\n\na {}\n\nb {}\n');
});
it('sets new line between rules on last newline', () => {
var a = parse('a {}\n');
var b = parse('b {}\n');
a.append(b).toString().should.eql('a {}\nb {}\n');
});
it('saves compressed style', () => {
var a1 = parse('a{}');
var a2 = parse('a{}a{}');
var b = parse('b{}\n');
a1.append(b).toString().should.eql('a{}b{}');
a2.append(b).toString().should.eql('a{}a{}b{}');
});
});
describe('toResult()', () => {
it('generates result with map', () => {
var root = parse('a {}');
var result = root.toResult({ map: true });
result.should.be.a.instanceOf(Result);
result.css.should.eql("a {}\n/*# sourceMappingURL=to.css.map */");
result.should.have.property('map');
});
});
});