diff --git a/lib/index.js b/lib/index.js index 34967c4..ee830a2 100755 --- a/lib/index.js +++ b/lib/index.js @@ -43,22 +43,16 @@ function generateXML(data) { let fullContent = '
' + img + '

' + item.title + '

' + menu + '
' + item.content; item_values.push({'turbo:content': {_cdata: fullContent}}); - - let relatedLink = function(related) { - return ( - '' + - related.text + - '' - ); - }; - ifTruePush(item.related, item_values, { - 'yandex:related': item.related.map(relatedLink).join('') - }); + if (typeof item.related !== "undefined") { + ifTruePush(item.related, item_values, { + 'yandex:related': item.related.map( + function (related) { + return '' + related.text + ''; + } + ).join('') + }); + } channel.push({item: item_values}); }); diff --git a/test/expectedOutput/relatedItem.xml b/test/expectedOutput/relatedItem.xml new file mode 100644 index 0000000..651e107 --- /dev/null +++ b/test/expectedOutput/relatedItem.xml @@ -0,0 +1 @@ +<![CDATA[title]]>http://example.com/rss.xmlruhttp://example.com/article4?this&thathttp://example.com/article4?this&thatSat, 26 May 2012 21:00:00 GMTLightAir

item title

hello

]]>
<link url="http://example.com/related/post1" img="http://example.com/i/img1.jpg">related link text 1</link><link url="http://example.com/related/post2" img="http://example.com/i/img2.jpg">related link text 2</link>
diff --git a/test/index.js b/test/index.js index 136eaa8..0b5e815 100644 --- a/test/index.js +++ b/test/index.js @@ -1,27 +1,25 @@ // prova is a wrapper for tape // use npm run test:browser to run tests in a browser -var test = require('tape'); +const test = require('tape'); -var YTurbo = require('..'); +const YTurbo = require('..'); -var includeFolder = require('include-folder'); -var expectedOutput = includeFolder(__dirname + '/expectedOutput', /.*\.xml$/); +const includeFolder = require('include-folder'); +const expectedOutput = includeFolder(__dirname + '/expectedOutput', /.*\.xml$/); require('mockdate').set('Wed, 10 Dec 2014 19:04:57 GMT'); test('empty feed', function(t) { t.plan(2); - var feed = new YTurbo(); + let feed = new YTurbo(); t.equal(feed.xml(), expectedOutput.default.trim()); feed.item(); t.equal(feed.xml(), expectedOutput.defaultOneItem.trim()); }); test('default item', function(t) { - t.plan(1); - - var feed = new YTurbo({ + let feed = new YTurbo({ title: 'title', description: 'description', link: 'http://example.com/rss.xml', @@ -32,3 +30,33 @@ test('default item', function(t) { t.equal(feed.xml(), expectedOutput.defaultItem.trim()); }); + +test('related item', function(t) { + t.plan(1); + let feed = new YTurbo({ + title: 'title', + description: 'description', + link: 'http://example.com/rss.xml', + site_url: 'http://example.com' + }); + + feed.item({ + title: 'item title', + image_url: 'http://example.com/example.png', + url: 'http://example.com/article4?this&that', + author: 'LightAir', + date: 'May 27, 2012', + content: '

hello

', + related: [{ + link: 'http://example.com/related/post1', + image_url: 'http://example.com/i/img1.jpg', + text: 'related link text 1' + }, { + link: 'http://example.com/related/post2', + image_url: 'http://example.com/i/img2.jpg', + text: 'related link text 2' + }] + }); + + t.equal(feed.xml(), expectedOutput.relatedItem.trim()); +});