UNPKG

feed-validator

Version:

Simple validator for RSS, Atom or opensearch.xml that using validator.w3.org/feed and plugins

76 lines (61 loc) 2.58 kB
var Q = require('q'); var Http = require('q-io/http'); var _ = require('lodash'); var data = require('./feed-validator.data'); describe('providers/feed-validator', function () { var sandbox; var feedValidator; before(function () { feedValidator = require('../../providers/feed-validator'); }); beforeEach(function () { sandbox = sinon.sandbox.create(); }); afterEach(function () { sandbox.restore(); }); it('should return correct structure', function () { useFakeValidatorResponse(); feedValidator(data.dataJson) .then(function (data) { assert.property(data, 'xml'); assert.property(data, 'isValid'); assert.property(data, 'errors'); assert.property(data, 'warnings'); assert.property(data, 'info'); }); }); describe('#stringifyXml()', function () { it('should stringify correct data', function () { var res = feedValidator.stringifyXml(data.dataJson); assert.include(res, '<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">'); }); }); describe('#makeValidationRequest()', function () { it('should provide validator response as JSON', function () { useFakeValidatorResponse(); return feedValidator.makeValidationRequest(data.correctXml) .then(function (data) { assert.deepPropertyVal(data, 'env:Envelope.env:Body.0.m:feedvalidationresponse.0.m:uri.0', 'http://www.w3.org/QA/news.rss'); }); }); }); describe('#extractSenseFromResponse()', function () { it('should throw error when no container', function () { assert.throws(_.partial(feedValidator.extractSenseFromResponse, {}), /No container/); }); it('should extract errors from JSON representation os SOAP response', function () { var res = feedValidator.extractSenseFromResponse(data.validatorResponseJson); assert.propertyVal(res, 'isValid', false); assert.deepPropertyVal(res, 'errors.0.level', 'error'); assert.deepPropertyVal(res, 'warnings.0.level', 'warning'); assert.deepPropertyVal(res, 'info.0.level', 'info'); }); }); function useFakeValidatorResponse() { sandbox.stub(Http, 'request', function () { return Q(_.set({}, 'body.read', _.constant(data.validatorResponse))); }); } });