/* Unit test for getParent */ assert = chai.assert; describe('Microformat.getParent', function() { var HTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div>'; var emptyExpected = { "items": [], "rels": {}, "rel-urls": {} }; var expected = { "items": [ { "type": [ "h-event" ], "properties": { "name": [ "Pub" ], "start": [ "2015-07-01 17:30Z" ] } } ], "rels": {}, "rel-urls": {} }; var options = {'dateFormat': 'html5'}; it('getParent with parent', function(){ var doc, node, span, result; doc = document.implementation.createHTMLDocument('New Document'); node = document.createElement('div'); node.innerHTML = HTML; doc.body.appendChild(node); span = doc.querySelector('.dt-start'); result = Microformats.getParent(span,options); assert.deepEqual( result, expected ); }); it('getParent without parent', function(){ var doc, node, parser, result; doc = document.implementation.createHTMLDocument('New Document'); node = document.createElement('div'); node.innerHTML = HTML; doc.body.appendChild(node); result = Microformats.getParent(node,options); assert.deepEqual( result, emptyExpected ); }); it('getParent found with option.filters', function(){ var doc, node, span, result; doc = document.implementation.createHTMLDocument('New Document'); node = document.createElement('div'); node.innerHTML = HTML; doc.body.appendChild(node); span = doc.querySelector('.dt-start'); result = Microformats.getParent( span, {'filters': ['h-event'], 'dateFormat': 'html5'} ); assert.deepEqual( result, expected ); }); it('getParent not found with option.filters', function(){ var doc, node, span, result; doc = document.implementation.createHTMLDocument('New Document'); node = document.createElement('div'); node.innerHTML = HTML; doc.body.appendChild(node); span = doc.querySelector('.dt-start'); result = Microformats.getParent( span, {'filters': ['h-card'], 'dateFormat': 'html5'} ); assert.deepEqual( result, emptyExpected ); }); it('getParent use option.filters to up through h-*', function(){ var doc, node, span, result; var altHTML = '<div class="h-entry"><h1 class="p-name">test</h1><div class="e-content">this</div><a class="p-author h-card" href="http://glennjones.net"><span class="p-name">Glenn Jones</span></a><span class="dt-publish">2015-07-01t17:30z</span></div>'; var altExpected = { "items": [ { "type": [ "h-entry" ], "properties": { "name": [ "test" ], "content": [ { "value": "this", "html": "this" } ], "author": [ { "value": "Glenn Jones", "type": [ "h-card" ], "properties": { "name": [ "Glenn Jones" ], "url": [ "http://glennjones.net" ] } } ], "publish": [ "2015-07-01 17:30Z" ] } } ], "rels": {}, "rel-urls": {} }; doc = document.implementation.createHTMLDocument('New Document'); node = document.createElement('div'); node.innerHTML = altHTML; doc.body.appendChild(node); span = doc.querySelector('.h-card .p-name'); result = Microformats.getParent( span, {'filters': ['h-entry'], 'dateFormat': 'html5'} ); assert.deepEqual( result, altExpected ); }); it('getParent stop at first h-* parent', function(){ var doc, node, span, result; var altHTML = '<div class="h-entry"><h1 class="p-name">test</h1><div class="e-content">this</div><a class="p-author h-card" href="http://glennjones.net"><span class="p-name">Glenn Jones</span></a><span class="dt-publish">2015-07-01t17:30z</span></div>'; var altExpected = { "items": [ { "type": [ "h-card" ], "properties": { "name": [ "Glenn Jones" ], "url": [ "http://glennjones.net" ] } } ], "rels": {}, "rel-urls": {} }; doc = document.implementation.createHTMLDocument('New Document'); node = document.createElement('div'); node.innerHTML = altHTML; doc.body.appendChild(node); span = doc.querySelector('.h-card .p-name'); result = Microformats.getParent( span, options ); assert.deepEqual( result, altExpected ); }); });