diff --git a/index.js b/index.js index dfba8cb..0e1bce5 100644 --- a/index.js +++ b/index.js @@ -6,5 +6,6 @@ */ module.exports = { "registry" : require("./lib/registry.js"), - "utils" : require("./lib/utils.js") + "utils" : require("./lib/utils.js"), + "version" : require("./lib/version.js") }; \ No newline at end of file diff --git a/lib/version.js b/lib/version.js new file mode 100644 index 0000000..747a715 --- /dev/null +++ b/lib/version.js @@ -0,0 +1,42 @@ +"use strict"; + +let version = { + 'getLatest': (vPre, vNew) => { + if (!vPre) + return vNew; + + if (version.validate(vPre) && version.validate(vNew)) { + let vNewNb = parseFloat(vNew); + let vPreNb = parseFloat(vPre); + + if (vNewNb > vPreNb) + return vNew; + } + return vPre; + }, + + 'isLatest': (vSrc, vCom) => { + if (version.validate(vSrc) && version.validate(vCom)) { + let vSrcNb = parseFloat(vSrc); + let vComNb = parseFloat(vCom); + + if (vSrcNb > vComNb) + return true; + } + return false; + }, + + 'validate': (ver) => { + if (ver) { + if (typeof ver !== 'string') + ver = "" + ver; + let matches = ver.match(/[0-9]+(.[0-9]+)?/); + if (matches && matches.length > 0) { + return true; + } + } + return false + } +}; + +module.exports = version; \ No newline at end of file diff --git a/package.json b/package.json index f810b65..9d80641 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "soajs.core.libs", "description": "SOAJS core libraries package", - "version": "1.0.2", + "version": "1.0.3", "author": { "name": "soajs team", "email": "team@soajs.org" diff --git a/test/unit/_servers.test.js b/test/unit/_servers.test.js index 35c612b..baa041f 100644 --- a/test/unit/_servers.test.js +++ b/test/unit/_servers.test.js @@ -10,6 +10,7 @@ describe("importing sample data", function () { after(function (done) { console.log('test data imported.'); require("./lib.utils.test.js"); + require("./lib.version.test.js"); done(); }); }); \ No newline at end of file diff --git a/test/unit/lib.utils.test.js b/test/unit/lib.utils.test.js index b434bfd..012bd39 100644 --- a/test/unit/lib.utils.test.js +++ b/test/unit/lib.utils.test.js @@ -22,4 +22,16 @@ describe("testing utils", function(){ done(); }); }); + + describe("testing validProperty", function(){ + var obj1= { + "antoine" : "hage" + }; + + it("testing validProperty", function(done){ + var obj2 = utils.validProperty(obj1,"antoine"); + assert.ok(obj2); + done(); + }); + }); }); \ No newline at end of file diff --git a/test/unit/lib.version.test.js b/test/unit/lib.version.test.js new file mode 100644 index 0000000..18880d4 --- /dev/null +++ b/test/unit/lib.version.test.js @@ -0,0 +1,61 @@ +"use strict"; +let assert = require('assert'); +let helper = require("../helper.js"); + +var utils = helper.requireModule('./lib/version'); + +describe("testing version", function () { + + + let version1 = "1.0"; + let version2 = "1.2"; + let wrongVersion = "b.a.3"; + + it("testing getLatest", function (done) { + let ver = utils.getLatest(version1, version2); + assert.ok(ver); + assert.equal(ver, version2); + done(); + }); + it("testing getLatest with null version", function (done) { + let ver = utils.getLatest(null, version2); + assert.ok(ver); + assert.equal(ver, version2); + done(); + }); + it("testing getLatest with wrong version", function (done) { + let ver = utils.getLatest(wrongVersion, version2); + assert.ok(ver); + assert.equal(ver, wrongVersion); + done(); + }); + + + it("testing isLatest - false", function (done) { + let ver = utils.isLatest(version1, version2); + assert.ok(!ver); + done(); + }); + it("testing isLatest - true", function (done) { + let ver = utils.isLatest(version2, version1); + assert.ok(ver); + done(); + }); + it("testing isLatest with null", function (done) { + let ver = utils.isLatest(null, version2); + assert.ok(!ver); + done(); + }); + + + it("testing validate not string", function (done) { + let ver = utils.validate(1); + assert.ok(ver); + done(); + }); + it("testing validate null", function (done) { + let ver = utils.validate(null); + assert.ok(!ver); + done(); + }); +}); \ No newline at end of file