Skip to content

Commit 77b13c4

Browse files
authored
Update tests (#4)
* Update dev packages, update intendation in test file * Add tests for comments ignoring * Add tests for base64 encoded ignoring
1 parent b1b9189 commit 77b13c4

File tree

2 files changed

+102
-44
lines changed

2 files changed

+102
-44
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@
2929
"lodash": "^4.0.0"
3030
},
3131
"devDependencies": {
32-
"should": "^6.0.1",
33-
"mocha": "^2.2.4",
3432
"coveralls": "^2.11.2",
35-
"istanbul": "^0.3.7"
33+
"istanbul": "^0.4.5",
34+
"mocha": "^3.0.2",
35+
"should": "^11.1.0"
3636
}
3737
}

test/css-parser-test.js

Lines changed: 99 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,130 @@
11
var parseCssUrls = require('../index');
2+
var should = require('should');
23

3-
var should = require('should')
4-
describe('Parse css urls', function(){
5-
it('should return array of entries from url(...), @import url(...) and @import ...', function(){
4+
describe('Parse css urls', function(){
5+
it('should return array of entries from url(...), @import url(...) and @import ...', function(){
6+
var text = '\
7+
@import url("a.css"); \
8+
@import url(\'b.css\') tv; \
9+
@import url(c.css); \
10+
@import "d.css" screen; \
11+
@import \'e.css\'; \
12+
@import f.css; \
13+
.image { \
14+
background-image: url ("g.css"); \
15+
background-image: url (\'h.css\'); \
16+
background-image: url (i.css); \
17+
} \
18+
';
19+
20+
var urls = parseCssUrls(text);
21+
urls.should.be.instanceof(Array).and.have.lengthOf(9);
22+
urls.should.containEql('a.css');
23+
urls.should.containEql('b.css');
24+
urls.should.containEql('c.css');
25+
urls.should.containEql('d.css');
26+
urls.should.containEql('e.css');
27+
urls.should.containEql('f.css');
28+
urls.should.containEql('g.css');
29+
urls.should.containEql('h.css');
30+
urls.should.containEql('i.css');
31+
});
32+
33+
it('should exclude duplicated urls', function(){
34+
var text = '\
35+
@import url("a.css"); \
36+
@import a.css; \
37+
.image { background: url("a.css"); } \
38+
';
39+
40+
var urls = parseCssUrls(text);
41+
urls.should.be.instanceof(Array).and.have.lengthOf(1);
42+
urls.should.containEql('a.css');
43+
});
44+
45+
it('should ignore empty urls', function(){
46+
var text = 'div.image { background-image: url(""); } ';
47+
48+
var urls = parseCssUrls(text);
49+
urls.should.be.instanceof(Array);
50+
urls.should.have.length(0);
51+
});
52+
53+
it('should return empty array if no urls were found', function(){
54+
var text = 'no css urls should be found in this text';
55+
56+
var urls = parseCssUrls(text);
57+
urls.should.be.instanceof(Array);
58+
urls.should.have.length(0);
59+
});
60+
61+
describe('comments', function() {
62+
it('should ignore comments and return empty array if there are only comments in text', function(){
663
var text = '\
7-
@import url("a.css"); \
8-
@import url(\'b.css\') tv; \
9-
@import url(c.css); \
10-
@import "d.css" screen; \
11-
@import \'e.css\'; \
12-
@import f.css; \
13-
.image { \
14-
background-image: url ("g.css"); \
15-
background-image: url (\'h.css\'); \
16-
background-image: url (i.css); \
17-
} \
64+
/* @import url("a.css"); \
65+
@import url("b.css"); \
66+
.image { background-image: url("bg.png"); } */ \
67+
\
1868
';
1969

2070
var urls = parseCssUrls(text);
21-
urls.should.be.instanceof(Array).and.have.lengthOf(9);
22-
urls.should.containEql('a.css');
23-
urls.should.containEql('b.css');
24-
urls.should.containEql('c.css');
25-
urls.should.containEql('d.css');
26-
urls.should.containEql('e.css');
27-
urls.should.containEql('f.css');
28-
urls.should.containEql('g.css');
29-
urls.should.containEql('h.css');
30-
urls.should.containEql('i.css');
71+
urls.should.be.instanceof(Array);
72+
urls.should.have.length(0);
3173
});
3274

33-
it('should exclude duplicated urls', function(){
75+
it('should ignore comments and return only urls from rules', function(){
3476
var text = '\
35-
@import url("a.css"); \
36-
@import a.css; \
37-
.image { background: url("a.css"); } \
77+
/* @import url("a.css"); */ \
78+
@import url("b.css"); \
3879
';
3980

4081
var urls = parseCssUrls(text);
41-
urls.should.be.instanceof(Array).and.have.lengthOf(1);
42-
urls.should.containEql('a.css');
82+
urls.should.be.instanceof(Array);
83+
urls.should.have.length(1);
84+
urls.should.containEql('b.css');
4385
});
4486

45-
it('should ignore base64 encoded urls', function(){
87+
it('should ignore comments because they may be tricky', function(){
4688
var text = '\
47-
div.image { \
48-
background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACXklEQVQ4T82TX0hTYRjGZ8Oryp2j5f5l/iHKdVOjZabzSm1MnNuB0sSI1BiNLqoLt93UVTejSJ1L19of0Qs1aNG6CELmhcacZRmZkIUWhUZBF92EFc/pe7/IdEbXffDy8j7P7zy8nPMdheK/Obn7Tur1Vl9/kaMnWSIFkrubQklDczS5tyXGO82kk6+z+gYFY1vhuuXzzJ7hgqYhuahxQN7VMiwbWuOyoT0hF564yzvNpJNPXF6VN742QJlb5X2kl8LYKQVR0hhFyfEBHHLFcTE6zTvNpJNPHPEsQPk7JFusdE+uDdhmC+NSdAp0qNO8NoB49nD2nwCzJ6WTbqLA0Yfio2FopQjGnrzHnfFFPHy+DK0jguJjYe4TJzI+I6AjpbOHsMPeC40tiCMX4ph78xnG9hG8/fAFNedvQ9MQ5D5xorkjI6CiI6VlgL4hgC013egamcbQ6EsoyjuRmFhAJ5tJJ584kfHrN2CC2tYHbb0fuRY/nr3+iHNdY1DbbsAbnMDswieIlm7uaxi3MYCtpK7vhar6Ciqdg/i68h3pF0uYnF3C1NwyVr79QIVzgPlXQdxfA/Lrr0N5+DIi92bwIL2I7VY/SpvDyK/rwfjMO0QST7lP3MZ3YHY/zmfJQrUPDvcIytpiEGqvQV3n5738dD/Tb3H/V4CH7sHqZ8xSmVz3NVJM1th65c3VXbJgCcg6R0jW2kO8qyw9XCdfI/XLQtnZURawafU2KnMKanP2n0qpDrpeqQ4453mZnPOC6Qzvqxrztxpb00qx0Jr5I2cxQcuqlNWef5SBeTpWxCt+AlBhYa97xG2bAAAAAElFTkSuQmCC\'); \
49-
} \
89+
/* @import hahahaha */\
90+
@import url("a.css"); \
5091
';
5192

5293
var urls = parseCssUrls(text);
5394
urls.should.be.instanceof(Array);
54-
urls.should.be.empty;
95+
urls.should.have.length(1);
96+
urls.should.containEql('a.css');
5597
});
98+
});
5699

57-
it('should ignore empty urls', function(){
58-
var text = 'div.image { background-image: url(""); } ';
100+
describe('base64 dataURI', function() {
101+
it('should ignore base64 encoded images', function(){
102+
var text = '\
103+
div.image { \
104+
background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACXklEQVQ4T82TX0hTYRjGZ8Oryp2j5f5l/iHKdVOjZabzSm1MnNuB0sSI1BiNLqoLt93UVTejSJ1L19of0Qs1aNG6CELmhcacZRmZkIUWhUZBF92EFc/pe7/IdEbXffDy8j7P7zy8nPMdheK/Obn7Tur1Vl9/kaMnWSIFkrubQklDczS5tyXGO82kk6+z+gYFY1vhuuXzzJ7hgqYhuahxQN7VMiwbWuOyoT0hF564yzvNpJNPXF6VN742QJlb5X2kl8LYKQVR0hhFyfEBHHLFcTE6zTvNpJNPHPEsQPk7JFusdE+uDdhmC+NSdAp0qNO8NoB49nD2nwCzJ6WTbqLA0Yfio2FopQjGnrzHnfFFPHy+DK0jguJjYe4TJzI+I6AjpbOHsMPeC40tiCMX4ph78xnG9hG8/fAFNedvQ9MQ5D5xorkjI6CiI6VlgL4hgC013egamcbQ6EsoyjuRmFhAJ5tJJ584kfHrN2CC2tYHbb0fuRY/nr3+iHNdY1DbbsAbnMDswieIlm7uaxi3MYCtpK7vhar6Ciqdg/i68h3pF0uYnF3C1NwyVr79QIVzgPlXQdxfA/Lrr0N5+DIi92bwIL2I7VY/SpvDyK/rwfjMO0QST7lP3MZ3YHY/zmfJQrUPDvcIytpiEGqvQV3n5738dD/Tb3H/V4CH7sHqZ8xSmVz3NVJM1th65c3VXbJgCcg6R0jW2kO8qyw9XCdfI/XLQtnZURawafU2KnMKanP2n0qpDrpeqQ4453mZnPOC6Qzvqxrztxpb00qx0Jr5I2cxQcuqlNWef5SBeTpWxCt+AlBhYa97xG2bAAAAAElFTkSuQmCC\'); \
105+
} \
106+
';
59107

60108
var urls = parseCssUrls(text);
61109
urls.should.be.instanceof(Array);
62-
urls.should.be.empty;
110+
urls.should.have.length(0);
63111
});
64112

65-
it('should return empty array if no urls were found', function(){
66-
var text = 'no css urls should be found in this text';
113+
it('should ignore base64 encoded fonts', function(){
114+
var text = ' \
115+
@font-face { \
116+
font-family: \'icons\'; \
117+
src: url(data:application/vnd.ms-fontobject;charset=utf-8;base64,[BASE_64_STRING]); \
118+
src: url(data:application/vnd.ms-fontobject;charset=utf-8;base64,[BASE_64_STRING]) format(\'eot\'), \
119+
url(data:application/font-woff;charset=utf-8;base64,[BASE_64_STRING]) format(\'woff\'), \
120+
url(data:application/x-font-ttf;charset=utf-8;base64,[BASE_64_STRING]) format(\'truetype\'), \
121+
url(data:image/svg+xml;charset=utf-8;base64,[BASE_64_STRING]) format(\'svg\'); \
122+
} \
123+
';
67124

68125
var urls = parseCssUrls(text);
69126
urls.should.be.instanceof(Array);
70-
urls.should.be.empty;
127+
urls.should.have.length(0);
71128
});
72129
});
130+
});

0 commit comments

Comments
 (0)