From 97e23fe0313a721a2de699dac7234b8352841333 Mon Sep 17 00:00:00 2001 From: la Date: Tue, 29 May 2018 11:00:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=82=D0=B8=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20related?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/index.js | 24 ++++++---------- test/expectedOutput/relatedItem.xml | 1 + test/index.js | 44 +++++++++++++++++++++++------ 3 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 test/expectedOutput/relatedItem.xml 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()); +});