Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/test/parse.js |
diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/test/parse.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/test/parse.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e180921f646439929ee16999af61e3750fe043bb |
--- /dev/null |
+++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/test/parse.js |
@@ -0,0 +1,336 @@ |
+var expect = require('expect.js'), |
+ parse = require('../lib/parse'); |
+ |
+ |
+// Tags |
+var basic = '<html></html>'; |
+var siblings = '<h2></h2><p></p>'; |
+ |
+// Single Tags |
+var single = '<br/>'; |
+var singleWrong = '<br>'; |
+ |
+// Children |
+var children = '<html><br/></html>'; |
+var li = '<li class="durian">Durian</li>'; |
+ |
+// Attributes |
+var attributes = '<img src="hello.png" alt="man waving">'; |
+var noValueAttribute = '<textarea disabled></textarea>'; |
+ |
+// Comments |
+var comment = '<!-- sexy -->'; |
+var conditional = '<!--[if IE 8]><html class="no-js ie8" lang="en"><![endif]-->'; |
+ |
+// Text |
+var text = 'lorem ipsum'; |
+ |
+// Script |
+var script = '<script type="text/javascript">alert("hi world!");</script>'; |
+var scriptEmpty = '<script></script>'; |
+ |
+// Style |
+var style = '<style type="text/css"> h2 { color:blue; } </style>'; |
+var styleEmpty = '<style></style>'; |
+ |
+// Directives |
+var directive = '<!doctype html>'; |
+ |
+ |
+describe('parse', function() { |
+ |
+ describe('.eval', function() { |
+ |
+ it('should parse basic empty tags: ' + basic, function() { |
+ var tag = parse.evaluate(basic)[0]; |
+ expect(tag.type).to.equal('tag'); |
+ expect(tag.name).to.equal('html'); |
+ expect(tag.children).to.be.empty(); |
+ }); |
+ |
+ it('should handle sibling tags: ' + siblings, function() { |
+ var dom = parse.evaluate(siblings), |
+ h2 = dom[0], |
+ p = dom[1]; |
+ |
+ expect(dom).to.have.length(2); |
+ expect(h2.name).to.equal('h2'); |
+ expect(p.name).to.equal('p'); |
+ }); |
+ |
+ it('should handle single tags: ' + single, function() { |
+ var tag = parse.evaluate(single)[0]; |
+ expect(tag.type).to.equal('tag'); |
+ expect(tag.name).to.equal('br'); |
+ expect(tag.children).to.be.empty(); |
+ }); |
+ |
+ it('should handle malformatted single tags: ' + singleWrong, function() { |
+ var tag = parse.evaluate(singleWrong)[0]; |
+ expect(tag.type).to.equal('tag'); |
+ expect(tag.name).to.equal('br'); |
+ expect(tag.children).to.be.empty(); |
+ }); |
+ |
+ it('should handle tags with children: ' + children, function() { |
+ var tag = parse.evaluate(children)[0]; |
+ expect(tag.type).to.equal('tag'); |
+ expect(tag.name).to.equal('html'); |
+ expect(tag.children).to.be.ok(); |
+ expect(tag.children).to.have.length(1); |
+ }); |
+ |
+ it('should handle tags with children: ' + li, function() { |
+ var tag = parse.evaluate(li)[0]; |
+ expect(tag.children).to.have.length(1); |
+ expect(tag.children[0].data).to.equal('Durian'); |
+ }); |
+ |
+ it('should handle tags with attributes: ' + attributes, function() { |
+ var attrs = parse.evaluate(attributes)[0].attribs; |
+ expect(attrs).to.be.ok(); |
+ expect(attrs.src).to.equal('hello.png'); |
+ expect(attrs.alt).to.equal('man waving'); |
+ }); |
+ |
+ it('should handle value-less attributes: ' + noValueAttribute, function() { |
+ var attrs = parse.evaluate(noValueAttribute)[0].attribs; |
+ expect(attrs).to.be.ok(); |
+ expect(attrs.disabled).to.equal(''); |
+ }); |
+ |
+ it('should handle comments: ' + comment, function() { |
+ var elem = parse.evaluate(comment)[0]; |
+ expect(elem.type).to.equal('comment'); |
+ expect(elem.data).to.equal(' sexy '); |
+ }); |
+ |
+ it('should handle conditional comments: ' + conditional, function() { |
+ var elem = parse.evaluate(conditional)[0]; |
+ expect(elem.type).to.equal('comment'); |
+ expect(elem.data).to.equal(conditional.replace('<!--', '').replace('-->', '')); |
+ }); |
+ |
+ it('should handle text: ' + text, function() { |
+ var text_ = parse.evaluate(text)[0]; |
+ expect(text_.type).to.equal('text'); |
+ expect(text_.data).to.equal('lorem ipsum'); |
+ }); |
+ |
+ it('should handle script tags: ' + script, function() { |
+ var script_ = parse.evaluate(script)[0]; |
+ expect(script_.type).to.equal('script'); |
+ expect(script_.name).to.equal('script'); |
+ expect(script_.attribs.type).to.equal('text/javascript'); |
+ expect(script_.children).to.have.length(1); |
+ expect(script_.children[0].type).to.equal('text'); |
+ expect(script_.children[0].data).to.equal('alert("hi world!");'); |
+ }); |
+ |
+ it('should handle style tags: ' + style, function() { |
+ var style_ = parse.evaluate(style)[0]; |
+ expect(style_.type).to.equal('style'); |
+ expect(style_.name).to.equal('style'); |
+ expect(style_.attribs.type).to.equal('text/css'); |
+ expect(style_.children).to.have.length(1); |
+ expect(style_.children[0].type).to.equal('text'); |
+ expect(style_.children[0].data).to.equal(' h2 { color:blue; } '); |
+ }); |
+ |
+ it('should handle directives: ' + directive, function() { |
+ var elem = parse.evaluate(directive)[0]; |
+ expect(elem.type).to.equal('directive'); |
+ expect(elem.data).to.equal('!doctype html'); |
+ expect(elem.name).to.equal('!doctype'); |
+ }); |
+ |
+ }); |
+ |
+ describe('.connect', function() { |
+ |
+ var create = function(html) { |
+ var dom = parse.evaluate(html); |
+ return parse.connect(dom); |
+ }; |
+ |
+ it('should fill in empty attributes: ' + basic, function() { |
+ var tag = create(basic)[0]; |
+ |
+ // Should exist but be null |
+ expect(tag.parent).to.be(null); |
+ expect(tag.next).to.be(null); |
+ expect(tag.prev).to.be(null); |
+ |
+ // Should exist but be empty |
+ expect(tag.children).to.be.empty(); |
+ expect(tag.attribs).to.be.ok(); |
+ }); |
+ |
+ it('should should fill in empty attributes for scripts: ' + scriptEmpty, function() { |
+ var script = create(scriptEmpty)[0]; |
+ |
+ // Should exist but be null |
+ expect(script.parent).to.be(null); |
+ expect(script.next).to.be(null); |
+ expect(script.prev).to.be(null); |
+ |
+ // Should exist but be empty |
+ expect(script.children).to.be.empty(); |
+ expect(script.attribs).to.be.ok(); |
+ }); |
+ |
+ it('should should fill in empty attributes for styles: ' + styleEmpty, function() { |
+ var style = create(styleEmpty)[0]; |
+ |
+ // Should exist but be null |
+ expect(style.parent).to.be(null); |
+ expect(style.next).to.be(null); |
+ expect(style.prev).to.be(null); |
+ |
+ // Should exist but be empty |
+ expect(style.children).to.be.empty(); |
+ expect(style.attribs).to.be.ok(); |
+ }); |
+ |
+ it('should have next and prev siblings: ' + siblings, function() { |
+ var dom = create(siblings), |
+ h2 = dom[0], |
+ p = dom[1]; |
+ |
+ // No parents |
+ expect(h2.parent).to.be(null); |
+ expect(p.parent).to.be(null); |
+ |
+ // Neighbors |
+ expect(h2.next.name).to.equal('p'); |
+ expect(p.prev.name).to.equal('h2'); |
+ |
+ // Should exist but be empty |
+ expect(h2.children).to.be.empty(); |
+ expect(h2.attribs).to.be.ok(); |
+ expect(p.children).to.be.empty(); |
+ expect(p.attribs).to.be.ok(); |
+ }); |
+ |
+ it('should connect child with parent: ' + children, function() { |
+ var html = create(children)[0], |
+ br = html.children[0]; |
+ |
+ // html has 1 child and it's <br> |
+ expect(html.children).to.have.length(1); |
+ expect(html.children[0].name).to.equal('br'); |
+ |
+ // br's parent is html |
+ expect(br.parent.name).to.equal('html'); |
+ }); |
+ |
+ it('should fill in some empty attributes for comments: ' + comment, function() { |
+ var elem = create(comment)[0]; |
+ |
+ // Should exist but be null |
+ expect(elem.parent).to.be(null); |
+ expect(elem.next).to.be(null); |
+ expect(elem.prev).to.be(null); |
+ |
+ // Should not exist at all |
+ expect(elem.children).to.not.be.ok(); |
+ expect(elem.attribs).to.not.be.ok(); |
+ }); |
+ |
+ it('should fill in some empty attributes for text: ' + text, function() { |
+ var text = create(text)[0]; |
+ |
+ // Should exist but be null |
+ expect(text.parent).to.be(null); |
+ expect(text.next).to.be(null); |
+ expect(text.prev).to.be(null); |
+ |
+ // Should not exist at all |
+ expect(text.children).to.not.be.ok(); |
+ expect(text.attribs).to.not.be.ok(); |
+ }); |
+ |
+ it('should fill in some empty attributes for directives: ' + directive, function() { |
+ var elem = create(directive)[0]; |
+ |
+ // Should exist but be null |
+ expect(elem.parent).to.be(null); |
+ expect(elem.next).to.be(null); |
+ expect(elem.prev).to.be(null); |
+ |
+ // Should not exist at all |
+ expect(elem.children).to.not.be.ok(); |
+ expect(elem.attribs).to.not.be.ok(); |
+ }); |
+ |
+ }); |
+ |
+ describe('.parse', function() { |
+ |
+ // root test utility |
+ function rootTest(root) { |
+ expect(root.name).to.equal('root'); |
+ |
+ // Should exist but be null |
+ expect(root.next).to.be(null); |
+ expect(root.prev).to.be(null); |
+ expect(root.parent).to.be(null); |
+ |
+ var child = root.children[0]; |
+ expect(child.parent).to.equal(root); |
+ } |
+ |
+ it('should add root to: ' + basic, function() { |
+ var root = parse(basic); |
+ rootTest(root); |
+ expect(root.children).to.have.length(1); |
+ expect(root.children[0].name).to.equal('html'); |
+ }); |
+ |
+ it('should add root to: ' + siblings, function() { |
+ var root = parse(siblings); |
+ rootTest(root); |
+ expect(root.children).to.have.length(2); |
+ expect(root.children[0].name).to.equal('h2'); |
+ expect(root.children[1].name).to.equal('p'); |
+ expect(root.children[1].parent.name).to.equal('root'); |
+ }); |
+ |
+ it('should add root to: ' + comment, function() { |
+ var root = parse(comment); |
+ rootTest(root); |
+ expect(root.children).to.have.length(1); |
+ expect(root.children[0].type).to.equal('comment'); |
+ }); |
+ |
+ it('should add root to: ' + text, function() { |
+ var root = parse(text); |
+ rootTest(root); |
+ expect(root.children).to.have.length(1); |
+ expect(root.children[0].type).to.equal('text'); |
+ }); |
+ |
+ it('should add root to: ' + scriptEmpty, function() { |
+ var root = parse(scriptEmpty); |
+ rootTest(root); |
+ expect(root.children).to.have.length(1); |
+ expect(root.children[0].type).to.equal('script'); |
+ }); |
+ |
+ it('should add root to: ' + styleEmpty, function() { |
+ var root = parse(styleEmpty); |
+ rootTest(root); |
+ expect(root.children).to.have.length(1); |
+ expect(root.children[0].type).to.equal('style'); |
+ }); |
+ |
+ it('should add root to: ' + directive, function() { |
+ var root = parse(directive); |
+ rootTest(root); |
+ expect(root.children).to.have.length(1); |
+ expect(root.children[0].type).to.equal('directive'); |
+ }); |
+ |
+ }); |
+ |
+}); |