UNPKG

rss-parser

Version:

A simple, light-weight RSS parser. Parse strings, URLs, or files and get a JS object back

70 lines (55 loc) 2 kB
var FS = require('fs'); var Parser = require('../index.js'); var Expect = require('chai').expect; var IN_DIR = __dirname + '/input'; var OUT_DIR = __dirname + '/output'; var INPUT_FILE = __dirname + '/input/reddit.rss'; var OUTPUT_FILE = __dirname + '/output/reddit.json'; describe('Parser', function() { var testParseForFile = function(name, ext, done) { Parser.parseFile(IN_DIR + '/' + name + '.' + ext, function(err, parsed) { Expect(err).to.equal(null); if (process.env.WRITE_GOLDEN) { FS.writeFileSync(OUT_DIR + '/' + name + '.json', JSON.stringify(parsed, null, 2)); } else { var expected = FS.readFileSync(OUT_DIR + '/' + name + '.json', 'utf8') expected = JSON.parse(expected); Expect(parsed).to.deep.equal(expected); } done(); }) } it('should parse Reddit', function(done) { testParseForFile('reddit', 'rss', done); }) it('should not parse craigslist (RSS 1.0)', function(done) { Parser.parseFile(__dirname + '/input/craigslist.rss', function(err, parsed) { Expect(err.indexOf('not yet implemented')).to.not.equal(-1); done(); }) }) it('should parse atom', function(done) { testParseForFile('reddit-atom', 'rss', done); }) it('should parse atom feed', function(done) { testParseForFile('gulp-atom', 'atom', done); }) it('should parse reddits new feed', function(done) { testParseForFile('reddit-home', 'rss', done); }) it('should parse with missing fields', function(done) { testParseForFile('missing-fields', 'atom', done) }) it('should parse heise', function(done) { testParseForFile('heise', 'atom', done); }) it('should parse Instant Article', function(done) { testParseForFile('instant-article', 'rss', done); }); it('should parse Feedburner', function(done) { testParseForFile('feedburner', 'atom', done); }); it('should parse podcasts', function(done) { testParseForFile('narro', 'rss', done); }); })