diff options
Diffstat (limited to 'toolkit/components/microformats/test/interface-tests/get-test.js')
-rw-r--r-- | toolkit/components/microformats/test/interface-tests/get-test.js | 605 |
1 files changed, 605 insertions, 0 deletions
diff --git a/toolkit/components/microformats/test/interface-tests/get-test.js b/toolkit/components/microformats/test/interface-tests/get-test.js new file mode 100644 index 000000000..098ff4e3d --- /dev/null +++ b/toolkit/components/microformats/test/interface-tests/get-test.js @@ -0,0 +1,605 @@ +/* +Unit test for get +*/ + +assert = chai.assert; + + +describe('Microformat.get', function() { + + + var expected = { + 'items': [{ + 'type': ['h-card'], + 'properties': { + 'name': ['Glenn Jones'], + 'url': ['http://glennjones.net'] + } + }], + 'rels': { + 'bookmark': ['http://glennjones.net'], + 'alternate': ['http://example.com/fr'], + 'home': ['http://example.com/fr'] + }, + 'rel-urls': { + 'http://glennjones.net': { + 'text': 'Glenn Jones', + 'rels': ['bookmark'] + }, + 'http://example.com/fr': { + 'media': 'handheld', + 'hreflang': 'fr', + 'text': 'French mobile homepage', + 'rels': ['alternate', 'home'] + } + } + }, + html = '<div class="h-card"><a class="p-name u-url" rel="bookmark" href="http://glennjones.net">Glenn Jones</a></div><a rel="alternate home" href="http://example.com/fr" media="handheld" hreflang="fr">French mobile homepage</a>'; + + + + + + it('get - no options.node parse this document', function(){ + var result; + + result = Microformats.get({}); + assert.deepEqual( result.items, [] ); + }); + + + it('get - standard', function(){ + + var doc, + node, + options, + result; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = html; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'baseUrl': 'http://example.com', + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, expected ); + + }); + + + it('get - doc pass to node', function(){ + + var doc, + node, + options, + result; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = html; + doc.body.appendChild(node); + + options ={ + 'node': doc, + 'baseUrl': 'http://example.com', + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, expected ); + + }); + + + it('get - pass base tag', function(){ + + var doc, + node, + options, + result; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = html + '<base href="http://example.com">'; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, expected ); + + }); + + + it('get - pass no document', function(){ + + var doc, + node, + options, + parser, + result; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = html + '<base href="http://example.com">'; + doc.body.appendChild(node); + + options ={ + 'node': doc, + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, expected ); + + }); + + + it('get - textFormat: normalised', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<a class="h-card" href="http://glennjones.net">\n'; + altHTML += ' <span class="p-given-name">Glenn</span>\n'; + altHTML += ' <span class="p-family-name">Jones</span>\n'; + altHTML += '</a>\n'; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'textFormat': 'normalised', + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.equal( result.items[0].properties.name[0], 'Glenn Jones' ); + + }); + + + it('get - textFormat: whitespace', function(){ + + var doc, + node, + options, + parser, + result; + + var altHTML = '<a class="h-card" href="http://glennjones.net">\n'; + altHTML += ' <span class="p-given-name">Glenn</span>\n'; + altHTML += ' <span class="p-family-name">Jones</span>\n'; + altHTML += '</a>\n'; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'textFormat': 'whitespace', + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.equal( result.items[0].properties.name[0], '\n Glenn\n Jones\n' ); + + }); + + + + it('get - textFormat: whitespacetrimmed', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<a class="h-card" href="http://glennjones.net">\n'; + altHTML += ' <span class="p-given-name">Glenn</span>\n'; + altHTML += ' <span class="p-family-name">Jones</span>\n'; + altHTML += '</a>\n'; + + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'textFormat': 'whitespacetrimmed', + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.equal( result.items[0].properties.name[0], 'Glenn\n Jones' ); + + }); + + + it('get - dateFormat: auto', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div>'; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'dateFormat': 'auto' + }; + + result = Microformats.get(options); + assert.equal( result.items[0].properties.start[0], '2015-07-01t17:30z' ); + + }); + + + it('get - dateFormat: w3c', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div>'; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'dateFormat': 'w3c' + }; + + result = Microformats.get(options); + assert.equal( result.items[0].properties.start[0], '2015-07-01T17:30Z' ); + + }); + + + it('get - dateFormat: html5', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div>'; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.equal( result.items[0].properties.start[0], '2015-07-01 17:30Z' ); + + }); + + + + it('get - dateFormat: rfc3339', function(){ + + var doc, + node, + options, + + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div>'; + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'dateFormat': 'rfc3339' + }; + + result = Microformats.get(options); + assert.equal( result.items[0].properties.start[0], '20150701T1730Z' ); + + }); + + + + it('get - filters h-card', function(){ + + var doc, + node, + options, + parser, + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div><a class="h-card" href="http://glennjones.net">Glenn Jones</a>'; + 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); + + // filter as an array + options ={ + 'node': node, + 'filters': ['h-card'], + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, altExpected ); + + // filter as an string + options ={ + 'node': node, + 'filters': 'h-card', + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, altExpected ); + }); + + + it('get - filters h-event', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div><a class="h-card" href="http://glennjones.net">Glenn Jones</a>'; + var altExpected = { + 'items': [{ + 'type': ['h-event'], + 'properties': { + 'name': ['Pub'], + 'start': ['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); + + options ={ + 'node': node, + 'filters': ['h-event'], + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, altExpected ); + + }); + + + it('get - filters h-card and h-event', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div><a class="h-card" href="http://glennjones.net">Glenn Jones</a>'; + var altExpected = { + 'items': [{ + 'type': ['h-event'], + 'properties': { + 'name': ['Pub'], + 'start': ['2015-07-01 17:30Z'] + } + }, + { + '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); + + options ={ + 'node': node, + 'filter': ['h-event'], + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, altExpected ); + + }); + + + it('get - filters h-card no result', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<div class="h-event"><span class="p-name">Pub</span><span class="dt-start">2015-07-01t17:30z</span></div>'; + var altExpected = { + 'items': [], + 'rels': {}, + 'rel-urls': {} + } + + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'filters': ['h-card'], + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, altExpected ); + + }); + + + it('get - filters h-card match v1 format', function(){ + + var doc, + node, + options, + parser, + result; + + var altHTML = '<a class="vcard" href="http://glennjones.net"><span class="fn">Glenn Jones</span></a>'; + var altExpected = { + 'items': [{ + 'type': ['h-card'], + 'properties': { + 'name': ['Glenn Jones'] + } + }], + 'rels': {}, + 'rel-urls': {} + } + + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'filter': ['h-card'], + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, altExpected ); + + }); + + + it('get - add new v1 format through options', function(){ + + var doc, + node, + options, + result; + + var altHTML = '<div class="hpayment">£<span class="amount">36.78</span></div>'; + var altExpected = { + 'items': [{ + 'type': ['h-payment'], + 'properties': { + 'amount': ['36.78'] + } + }], + 'rels': {}, + 'rel-urls': {} + }; + var v1Definition = { + root: 'hpayment', + name: 'h-payment', + properties: { + 'amount': {} + } + }; + + + doc = document.implementation.createHTMLDocument('New Document'); + node = document.createElement('div'); + node.innerHTML = altHTML; + doc.body.appendChild(node); + + options ={ + 'node': node, + 'maps': v1Definition, + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, altExpected ); + + }); + + + it('get - options.html', function(){ + + var options, + result; + + options ={ + 'html': html, + 'baseUrl': 'http://example.com', + 'dateFormat': 'html5' + }; + + result = Microformats.get(options); + assert.deepEqual( result, expected ); + + }); + + + + + +}); |