Skip to content

Commit

Permalink
Merge dda1347 into d59c365
Browse files Browse the repository at this point in the history
  • Loading branch information
relativityboy committed Mar 18, 2017
2 parents d59c365 + dda1347 commit a7f6d4a
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 6 deletions.
7 changes: 3 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
sudo: false
language: node_js
node_js:
- '0.12'
- '0.11'
- '0.10'
- iojs
- '4'
- '6'
- 'iojs'
deploy:
provider: npm
email: marcello.desales@gmail.com
Expand Down
17 changes: 15 additions & 2 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,14 @@ var XML2JS_OPTS = {
* @param {object} opt Is the option with the filePath or xmlContent and the optional format.
* @return {object} The pom object along with the timers.
*/
module.exports.parse = function(opt, callback) {
module.exports.parse = function(opt, cb) {
var resolve, reject;

const callback = (cb)? cb : function(){/*noop*/};
const promise = new Promise(function(res, rej) {
resolve = res; reject = rej;
});

if (!opt) {
throw new Error("You must provide options: opt.filePath and any other option of " +
"https://github.com/Leonidas-from-XIV/node-xml2js#options");
Expand All @@ -37,25 +44,31 @@ module.exports.parse = function(opt, callback) {
return xmlContent;

}).then(_parseWithXml2js).then(function(result) {
resolve(result);
callback(null, result);

}).catch(function(e) {
reject(e);
callback(e, null);

}).error(function (e) {
reject(e);
callback(e, null);
});

} else {
// parse the xml provided by the api client.
_parseWithXml2js(opt.xmlContent).then(function(result) {
delete result.xmlContent;
delete result.xmlContent;
resolve(result);
callback(null, result);

}).error(function (e) {
reject(e);
callback(e);
});
}
return promise;

};

Expand Down
63 changes: 63 additions & 0 deletions test/promise.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
var pomParser = require("../lib");
var expect = require('chai').expect;
var assert = require('assert');

var POM_PATH = __dirname + "/fixture/pom.xml";
var POM_PATH_BAD = __dirname + "/fixture/pom_badpath.xml";

describe('parse.then - resolve on valid input', function() {
var pomResponse = null;
var pom = null;
var xml = null;
var parseErr = null;

before(function(done) {
pomParser.parse({filePath: POM_PATH})
.then(function(response) {
pomResponse = response;
pom = pomResponse.pomObject;
xml = pomResponse.pomXml;
}, function(err) {
parseErr = err;
})
.finally(function() {
expect(parseErr).to.be.null;
expect(pomResponse).to.be.an("object");
done();
});
});

it('resolves promise on good pom & path', function(done) {
expect(pomResponse.pomXml).to.be.an("string");
expect(pomResponse.pomObject).to.be.an("object");
done();
});
});

describe('parse.then - reject on bad input', function() {
var pomResponse = null;
var pom = null;
var xml = null;
var parseErr = null;

before(function(done) {
pomParser.parse({filePath: POM_PATH_BAD})
.then(function(response) {
pomResponse = response;
pom = pomResponse.pomObject;
xml = pomResponse.pomXml;
}, function(err) {
parseErr = err;
})
.finally(function() {
expect(parseErr).to.be.Error;
expect(pomResponse).to.be.null;
done();
});
});

it('rejects promise on invalid path', function(done) {
done();
});
});

0 comments on commit a7f6d4a

Please sign in to comment.