|
| 1 | +var parseCssUrls = require('../index'); |
| 2 | + |
| 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(){ |
| 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 base64 encoded urls', function(){ |
| 46 | + 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 | + } \ |
| 50 | + '; |
| 51 | + |
| 52 | + var urls = parseCssUrls(text); |
| 53 | + urls.should.be.empty; |
| 54 | + }); |
| 55 | + }); |
0 commit comments