Skip to content
This repository was archived by the owner on Jan 28, 2020. It is now read-only.

Commit 849e03b

Browse files
committed
Add tests, gulpfile.js.
1 parent c02118b commit 849e03b

File tree

5 files changed

+93
-2
lines changed

5 files changed

+93
-2
lines changed

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ npm install --save css-rules
1616
var parseCSS = require('css-rules');
1717

1818
var rules = parseCSS(css);
19+
20+
rules.forEach(function (rule) {
21+
console.log(rule[0]);
22+
console.log(rule[1]);
23+
});
1924
```
2025

2126
## Credit

gulpfile.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict';
2+
var gulp = require('gulp'),
3+
jshint = require('gulp-jshint'),
4+
mocha = require('gulp-mocha');
5+
6+
var paths = {
7+
scripts: ['./*.js', '!./gulpfile.js']
8+
};
9+
10+
gulp.task('lint', function() {
11+
return gulp.src(paths.scripts)
12+
.pipe(jshint())
13+
.pipe(jshint.reporter('default'));
14+
});
15+
16+
gulp.task('test', function() {
17+
return gulp.src('./test/*.js')
18+
.pipe(mocha({reporter: 'dot'}));
19+
});
20+
21+
gulp.task('watch', function () {
22+
gulp.watch(paths.scripts, ['lint', 'test']);
23+
});
24+
25+
gulp.task('default', ['lint', 'test', 'watch']);

package.json

+10-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
"description": "Returns a parse tree for a CSS source.",
55
"main": "index.js",
66
"scripts": {
7-
"test": "echo \"Error: no test specified\" && exit 1"
7+
"test": "gulp test"
88
},
99
"repository": {
1010
"type": "git",
1111
"url": "https://github.com/jonkemp/parse-css"
1212
},
1313
"keywords": [
1414
"inline",
15-
"css"
15+
"css",
16+
"parse",
17+
"rules",
18+
"styles"
1619
],
1720
"author": "Jonathan Kemp <kempdogg@gmail.com> (http://jonkemp.com/)",
1821
"license": "MIT",
@@ -22,5 +25,10 @@
2225
"homepage": "https://github.com/jonkemp/parse-css",
2326
"dependencies": {
2427
"cssom": "^0.3.0"
28+
},
29+
"devDependencies": {
30+
"gulp": "^3.8.10",
31+
"gulp-jshint": "^1.9.1",
32+
"gulp-mocha": "^2.0.0"
2533
}
2634
}

test/fixtures/file.css

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
body {
2+
font-family: Arial;
3+
}
4+
h1 {
5+
color: blue;
6+
}
7+
.headline {
8+
font-size: 24px;
9+
}
10+
11+
td {
12+
padding: 5px;
13+
}

test/main.js

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/* jshint node: true */
2+
/* global describe, it */
3+
4+
'use strict';
5+
6+
var assert = require('assert'),
7+
fs = require('fs'),
8+
path = require('path'),
9+
parseCSS = require('../index');
10+
11+
describe('css-rules', function() {
12+
it('Should return a parse tree for a CSS source', function(done) {
13+
var css = String(fs.readFileSync(path.join('test', 'fixtures', 'file.css')));
14+
var rules = parseCSS(css);
15+
16+
assert.ok(rules);
17+
assert.equal(rules.length, 4);
18+
rules.forEach(function (rule) {
19+
assert.ok(rule);
20+
assert.equal(rule.length, 2);
21+
22+
assert.equal(typeof rule[0], 'string');
23+
24+
assert.ok(rule[1].hasOwnProperty('0'));
25+
assert.ok(rule[1].hasOwnProperty('length'));
26+
assert.ok(rule[1].hasOwnProperty('parentRule'));
27+
assert.ok(rule[1].hasOwnProperty('_importants'));
28+
assert.ok(rule[1].hasOwnProperty('__starts'));
29+
assert.ok(rule[1].hasOwnProperty(rule[1]['0']));
30+
31+
assert.equal(typeof rule[1]['0'], 'string');
32+
assert.equal(typeof rule[1].length, 'number');
33+
assert.equal(typeof rule[1].parentRule, 'object');
34+
assert.equal(typeof rule[1]._importants, 'object');
35+
assert.equal(typeof rule[1].__starts, 'number');
36+
assert.equal(typeof rule[1][rule[1]['0']], 'string');
37+
});
38+
done();
39+
});
40+
});

0 commit comments

Comments
 (0)