diff --git a/test/dataset/in/test.XML.json b/test/dataset/in/test.XML.json index f1069f8..2bef16c 100644 --- a/test/dataset/in/test.XML.json +++ b/test/dataset/in/test.XML.json @@ -16,14 +16,18 @@ "select": [{ "label": "Devrait trouver l'identifiant ISSN dans le fichier xml", "path": "./dataset/in/file.mods.xml", - "query": ".type:val(\"ISSN\") ~ .$t", + "arguments": { + "selector": ".type:val(\"ISSN\") ~ .$t" + }, "result": { "value": "0000000000000000000000000000000000000000" } }, { "label": "Ne devrait pas trouver d'identifiant ISBN dans le fichier xml", "path": "./dataset/in/file.mods.xml", - "query": ".type:val(\"ISBN\") ~ .$t", + "arguments": { + "selector": ".type:val(\"ISBN\") ~ .$t" + }, "result": {} }] } \ No newline at end of file diff --git a/test/dataset/in/test.files.json b/test/dataset/in/test.files.json index 9a87e14..2bdae09 100644 --- a/test/dataset/in/test.files.json +++ b/test/dataset/in/test.files.json @@ -1,48 +1,56 @@ { "selectAll": [{ "label": "Devrait trouver 3 images dans les annexes (avec une RegExp)", - "container": "annexes", "regExp": ["mime"], - "options": [{ - "mime": "image", - "original": true - }], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "image", + "original": true + }] + }, "result": { "length": true, "value": 3 } }, { "label": "Ne devrait rien trouver dans les annexes (avec une RegExp)", - "container": "annexes", "regExp": ["mime"], - "options": [{ - "mime": "text", - "original": true - }], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "text", + "original": true + }] + }, "result": { "length": true, "value": 0 } }, { "label": "Devrait trouver 2 images (jpeg) dans les annexes (sans RegExp)", - "container": "annexes", "regExp": ["mime"], - "options": [{ - "mime": "image/jpeg", - "original": true - }], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "image/jpeg", + "original": true + }] + }, "result": { "length": true, "value": 2 } }, { "label": "Ne devrait rien trouver dans les annexes (sans RegExp)", - "container": "annexes", "regExp": ["mime"], - "options": [{ - "mime": "text/plain", - "original": true - }], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "text/plain", + "original": true + }] + }, "result": { "length": true, "value": 0 @@ -51,25 +59,29 @@ "select": [{ "label": "Devrait trouver un fichier texte dans les données fulltext", "container": "fulltext", - "options": [{ - "mime": "text/plain", - "original": false - }, { - "mime": "text/plain", - "original": true - }], + "arguments": { + "options": [{ + "mime": "text/plain", + "original": false + }, { + "mime": "text/plain", + "original": true + }] + }, "result": { "not": true, "value": null } }, { "label": "Devrait trouver une image dans les annexes (avec une RegExp)", - "container": "annexes", "regExp": ["mime"], - "options": [{ - "mime": "image", - "original": true - }], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "image", + "original": true + }] + }, "result": { "not": true, "value": null @@ -77,9 +89,11 @@ }, { "label": "Ne devrait pas trouver un fichier texte dans les annexes", "container": "annexes", - "options": [{ - "mime": "text/plain" - }], + "arguments": { + "options": [{ + "mime": "text/plain" + }] + }, "result": { "value": null } @@ -87,8 +101,10 @@ "get": [{ "label": "Devrait trouver un fichier mods dans les metadata", "container": "metadata", - "options": { - "mime": "application/mods+xml" + "arguments": { + "options": { + "mime": "application/mods+xml" + } }, "result": { "not": true, @@ -97,20 +113,24 @@ }, { "label": "Ne devrait pas trouver un fichier mods dans les metadata", "container": "metadata", - "options": { - "mime": "application/mods+xml", - "original": true + "arguments": { + "options": { + "mime": "application/mods+xml", + "original": true + } }, "result": { "value": null } }, { "label": "Devrait trouver un fichier mods dans les metadata (avec une RegExp)", - "container": "metadata", "regExp": ["mime"], - "options": { - "mime": "mods", - "original": false + "container": "metadata", + "arguments": { + "options": { + "mime": "mods", + "original": false + } }, "result": { "not": true, @@ -118,11 +138,13 @@ } }, { "label": "Ne devrait pas trouver un fichier mods dans les metadata (avec une RegExp)", - "container": "metadata", "regExp": ["mime"], - "options": { - "mime": "mods+xml", - "original": true + "container": "metadata", + "arguments": { + "options": { + "mime": "mods+xml", + "original": true + } }, "result": { "value": null @@ -130,7 +152,7 @@ }], "createPath": [{ "label": "Devrait retourner un chemin correctement construit (non null)", - "options": { + "arguments": { "corpusPath": "/my/path/", "id": "0000000000000000000000000000000000000000", "type": "enrichments", @@ -143,7 +165,7 @@ } }, { "label": "Devrait retourner null", - "options": { + "arguments": { "corpusPath": "/my/path/", "type": "enrichments", "label": "mymodule", diff --git a/test/run.js b/test/run.js index a332585..2d46da2 100644 --- a/test/run.js +++ b/test/run.js @@ -4,19 +4,22 @@ var pkg = require('../package.json'), myObject = require('../index.js'), docObject = require('./dataset/in/docObject.sample.json'), + TU = require('rd-tu'), fs = require('fs'), - path = require('path'), - async = require('async'), - chai = require('chai'), - expect = chai.expect; + path = require('path'); -// Mapping indiquant quelle fonction de test utiliser pour chaque fonction -var mapTests = { +// Données de test +var dataset = { + files: require('./dataset/in/test.files.json'), + XML: require('./dataset/in/test.XML.json') +}; + +// Mapping indiquant quelle fonction de test et quelles données utiliser pour chaque fonction +var wrapper = { "files": { "selectAll": testOfFileRepresentation, "select": testOfFileRepresentation, - "get": testOfFileRepresentation, - "createPath": testOfCreateFilePath + "get": testOfFileRepresentation }, "XML": { "load": testOfXmlLoad, @@ -24,12 +27,6 @@ } }; -// Données de test -var data = { - "files": require('./dataset/in/test.files.json'), - "XML": require('./dataset/in/test.XML.json') -}; - /** * Test de chaques fonctions de : * - myObject.files. @@ -42,35 +39,42 @@ * - load() * - select() */ -describe(pkg.name + '/index.js', function() { - async.eachSeries(Object.keys(data), function(k, callback) { - async.eachSeries(Object.keys(data[k]), function(key, callback) { - // Permet de filtrer les propriétées de l'objets qui ne sont pas des fonctions - if (typeof myObject[k][key] === 'function') { - describe('#' + k + '.' + key + '()', function() { - mapTests[k][key](data[k][key], myObject[k][key]); - }); - } - return callback(); - }); - return callback(); - }); +TU.start({ + description: pkg.name + '/index.js', + root: 'myObject', + object: myObject, + dataset: dataset, + wrapper: wrapper }); -// Cette fonction permet d'effecetuer le test correspondant au résultat souhaité -function test(value, result) { - if (result.not) { - // Si on doit tester que la valeur retournée n'est pas égale à - return expect(value).to.not.equal(result.value); - } else if (result.length) { - // Si on doit tester la longueur la valeur retournée - return expect(value).to.have.length(result.value); - } else if (result.typeof) { - // Si on doit tester que le type de la valeur retournée n'est pas égale à - return expect(typeof result).to.equal(result.value); - } - // Si on doit tester que la valeur retournée est pas égale à - return expect(value).to.equal(result.value); +/** + * Fonction de test à appliquée pour : + * - myObject.XML.load() + */ +function testOfXmlLoad(fn, item) { + var xmlStr = fs.readFileSync(path.join(__dirname, item.path), 'utf-8'); + return fn(xmlStr); +} + +/** + * Fonction de test à appliquée pour : + * - myObject.files.selectAll() + * - myObject.files.select() + * - myObject.files.get() + */ +function testOfFileRepresentation(fn, item) { + if (item.regExp) setRegex(item.regExp, item.arguments.options); + return fn(docObject[item.container], item.arguments.options); +} + +/** + * Fonction de test à appliquée pour : + * - myObject.XML.select() + */ +function testOfXmlSelection(fn, item) { + var xmlStr = fs.readFileSync(path.join(__dirname, item.path), 'utf-8'); + var jsonObject = myObject.XML.load(xmlStr); + return fn(item.arguments.selector, jsonObject)[0]; } // Set une regex pour chaque clée demandée @@ -84,72 +88,4 @@ options[keys[i]] = new RegExp(options[keys[i]]); } } -} - -/** - * Fonction de test à appliquée pour : - * - myObject.files.selectAll() - * - myObject.files.select() - * - myObject.files.get() - */ -function testOfFileRepresentation(values, testedFunction) { - async.eachSeries(values, function(item, callback) { - it(item.label, function(done) { - // Transforme les string en regex si nécessaire - if (item.regExp) { - setRegex(item.regExp, item.options); - } - test(testedFunction(docObject[item.container], item.options), item.result); - return done(); - }); - return callback(); - }); -} - -/** - * Fonction de test à appliquée pour : - * - myObject.files.createPath() - */ -function testOfCreateFilePath(values, testedFunction) { - async.eachSeries(values, function(item, callback) { - it(item.label, function(done) { - test(testedFunction(item.options), item.result); - return done(); - }); - return callback(); - }); -} - -/** - * Fonction de test à appliquée pour : - * - myObject.XML.load() - */ -function testOfXmlLoad(values, testedFunction) { - async.eachSeries(values, function(item, callback) { - // Fichier XML de test - var xmlStr = fs.readFileSync(path.join(__dirname, item.path), 'utf-8'); - it(item.label, function(done) { - test(testedFunction(xmlStr), item.result); - return done(); - }); - return callback(); - }); -} - -/** - * Fonction de test à appliquée pour : - * - myObject.XML.select() - */ -function testOfXmlSelection(values, testedFunction) { - async.eachSeries(values, function(item, callback) { - // Fichier XML de test - var xmlStr = fs.readFileSync(path.join(__dirname, item.path), 'utf-8'); - var xml = myObject.XML.load(xmlStr); - it(item.label, function(done) { - // Si on doit tester que la valeur retournée est pas égale à - test(testedFunction(item.query, xml)[0], item.result); - return done(); - }); - return callback(); - }); } \ No newline at end of file