diff --git a/test/dataset/in/data/URL.json b/test/dataset/in/data/URL.json new file mode 100644 index 0000000..87bbfdb --- /dev/null +++ b/test/dataset/in/data/URL.json @@ -0,0 +1,35 @@ +{ + "addParameters": [{ + "label": "Devrait créer l'url suivante : http://www.test.tu/test", + "arguments": { + "url": "http://www.test.tu/test", + "parameters": {} + }, + "result": { + "equal": "http://www.test.tu/test?" + } + }, { + "label": "Devrait créer l'url suivante : http://www.test.tu/test?a=1", + "arguments": { + "url": "http://www.test.tu/test", + "parameters": { + "a": 1 + } + }, + "result": { + "equal": "http://www.test.tu/test?a=1" + } + }, { + "label": "Devrait créer l'url suivante : http://www.test.tu/test?a=1&b=2", + "arguments": { + "url": "http://www.test.tu/test", + "parameters": { + "a": 1, + "b": 2 + } + }, + "result": { + "equal": "http://www.test.tu/test?a=1&b=2" + } + }] +} \ No newline at end of file diff --git a/test/dataset/in/data/XML.json b/test/dataset/in/data/XML.json new file mode 100644 index 0000000..56c9880 --- /dev/null +++ b/test/dataset/in/data/XML.json @@ -0,0 +1,32 @@ +{ + "load": [{ + "label": "Devrait parser un fichier xml", + "path": "./dataset/in/resources/file.mods.xml", + "result": { + "be": "object" + } + }, { + "label": "Ne devrait pas parser de xml (fichier vide)", + "path": "./dataset/in/resources/empty.mods.xml", + "result": { + "equal": null + } + }], + "select": [{ + "label": "Devrait trouver l'identifiant ISSN dans le fichier xml", + "path": "./dataset/in/resources/file.mods.xml", + "arguments": { + "selector": ".type:val(\"ISSN\") ~ .$t" + }, + "result": { + "equal": "0000000000000000000000000000000000000000" + } + }, { + "label": "Ne devrait pas trouver d'identifiant ISBN dans le fichier xml", + "path": "./dataset/in/resources/file.mods.xml", + "arguments": { + "selector": ".type:val(\"ISBN\") ~ .$t" + }, + "result": {} + }] +} \ No newline at end of file diff --git a/test/dataset/in/data/directories.json b/test/dataset/in/data/directories.json new file mode 100644 index 0000000..4811ce2 --- /dev/null +++ b/test/dataset/in/data/directories.json @@ -0,0 +1,9 @@ +{ + "sync":[{ + "label": "Devrait créer un répertoire dans : ./test/dataset/out/mkdirp", + "arguments": "./test/dataset/out/mkdirp", + "result": { + "be": "undefined" + } + }] +} \ No newline at end of file diff --git a/test/dataset/in/data/enrichments.json b/test/dataset/in/data/enrichments.json new file mode 100644 index 0000000..760f444 --- /dev/null +++ b/test/dataset/in/data/enrichments.json @@ -0,0 +1,89 @@ +{ + "save": [{ + "label": "Devrait sauvegarder l'objet dans une nouvelle clé", + "arguments": { + "options": { + "enrichment": { + "foo": "bar" + }, + "label": "li-utils" + }, + "enrichments": {} + }, + "result": { + "equal": 1 + } + }, { + "label": "Devrait sauvegarder l'objet dans une clé existante", + "arguments": { + "options": { + "enrichment": { + "foo": "bar" + }, + "label": "li-utils" + }, + "enrichments": { + "li-utils": [{ + "foo": "foo" + }] + } + }, + "result": { + "equal": 1 + } + }, { + "label": "Ne devrait rien faire (existe déjà)", + "arguments": { + "options": { + "enrichment": { + "foo": "bar" + }, + "label": "li-utils" + }, + "enrichments": { + "li-utils": [{ + "foo": "bar" + }] + } + }, + "result": { + "equal": 0 + } + }], + "write": [{ + "label": "Devrait écrire correctement le fichier", + "arguments": { + "options": { + "template": "./test/dataset/in/resources/file.tei.tpl", + "data": { + "value": "Hello World!" + }, + "output": { + "directory": "./test/dataset/out/", + "filename": "file.tei" + } + } + }, + "result": { + "not": true, + "equal": null + } + }, { + "label": "Devrait rencontrer une erreur de Lecture/Écriture", + "arguments": { + "options": { + "template": "./test/dataset/in/resources/incorrect.tei.tpl", + "data": { + "value": "Hello World!" + }, + "output": { + "directory": "./test/dataset/out/", + "filename": "file.tei" + } + } + }, + "result": { + "equal": null + } + }] +} \ No newline at end of file diff --git a/test/dataset/in/data/files.json b/test/dataset/in/data/files.json new file mode 100644 index 0000000..1e878e3 --- /dev/null +++ b/test/dataset/in/data/files.json @@ -0,0 +1,174 @@ +{ + "createPath": [{ + "label": "Devrait retourner un chemin correctement construit (non null)", + "arguments": { + "corpusPath": "/my/path/", + "id": "0000000000000000000000000000000000000000", + "type": "enrichments", + "label": "mymodule", + "extension": ".tei.xml" + }, + "result": { + "not": true, + "equal": null + } + }, { + "label": "Devrait retourner null", + "arguments": { + "corpusPath": "/my/path/", + "type": "enrichments", + "label": "mymodule", + "extension": ".tei.xml" + }, + "result": { + "equal": null + } + }], + "get": [{ + "label": "Devrait trouver un fichier mods dans les metadata", + "container": "metadata", + "arguments": { + "options": { + "mime": "application/mods+xml" + } + }, + "result": { + "not": true, + "equal": null + } + }, { + "label": "Ne devrait pas trouver un fichier mods dans les metadata", + "container": "metadata", + "arguments": { + "options": { + "mime": "application/mods+xml", + "original": true + } + }, + "result": { + "equal": null + } + }, { + "label": "Devrait trouver un fichier mods dans les metadata (avec une RegExp)", + "regExp": ["mime"], + "container": "metadata", + "arguments": { + "options": { + "mime": "mods", + "original": false + } + }, + "result": { + "not": true, + "equal": null + } + }, { + "label": "Ne devrait pas trouver un fichier mods dans les metadata (avec une RegExp)", + "regExp": ["mime"], + "container": "metadata", + "arguments": { + "options": { + "mime": "mods+xml", + "original": true + } + }, + "result": { + "equal": null + } + }], + "selectAll": [{ + "label": "Devrait trouver 3 images dans les annexes (avec une RegExp)", + "regExp": ["mime"], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "image", + "original": true + }] + }, + "result": { + "length": 3 + } + }, { + "label": "Ne devrait rien trouver dans les annexes (avec une RegExp)", + "regExp": ["mime"], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "text", + "original": true + }] + }, + "result": { + "length": 0 + } + }, { + "label": "Devrait trouver 2 images (jpeg) dans les annexes (sans RegExp)", + "regExp": ["mime"], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "image/jpeg", + "original": true + }] + }, + "result": { + "length": 2 + } + }, { + "label": "Ne devrait rien trouver dans les annexes (sans RegExp)", + "regExp": ["mime"], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "text/plain", + "original": true + }] + }, + "result": { + "length": 0 + } + }], + "select": [{ + "label": "Devrait trouver un fichier texte dans les données fulltext", + "container": "fulltext", + "arguments": { + "options": [{ + "mime": "text/plain", + "original": false + }, { + "mime": "text/plain", + "original": true + }] + }, + "result": { + "not": true, + "equal": null + } + }, { + "label": "Devrait trouver une image dans les annexes (avec une RegExp)", + "regExp": ["mime"], + "container": "annexes", + "arguments": { + "options": [{ + "mime": "image", + "original": true + }] + }, + "result": { + "not": true, + "equal": null + } + }, { + "label": "Ne devrait pas trouver un fichier texte dans les annexes", + "container": "annexes", + "arguments": { + "options": [{ + "mime": "text/plain" + }] + }, + "result": { + "equal": null + } + }] +} \ No newline at end of file diff --git a/test/dataset/in/data/paths.json b/test/dataset/in/data/paths.json new file mode 100644 index 0000000..3b7f5ac --- /dev/null +++ b/test/dataset/in/data/paths.json @@ -0,0 +1,14 @@ +{ + "init": [{ + "label": "Devrait créer le chemin suivant : /root/my/absolute/path/", + "arguments": { + "paths": { + "test": "./my/absolute/path/" + }, + "root": "/root/" + }, + "result": { + "equal": "/root/my/absolute/path/" + } + }] +} \ No newline at end of file diff --git a/test/dataset/in/data/resources.json b/test/dataset/in/data/resources.json new file mode 100644 index 0000000..d7b8e0d --- /dev/null +++ b/test/dataset/in/data/resources.json @@ -0,0 +1,13 @@ +{ + "require": [{ + "label": "Devrait charger toutes les ressources", + "arguments": { + "paths": { + "myResource": "./dataset/in/resources/myResource.json" + } + }, + "result": { + "property": "myResource" + } + }] +} \ No newline at end of file diff --git a/test/dataset/in/empty.mods.xml b/test/dataset/in/empty.mods.xml deleted file mode 100644 index e69de29..0000000 --- a/test/dataset/in/empty.mods.xml +++ /dev/null diff --git a/test/dataset/in/file.mods.xml b/test/dataset/in/file.mods.xml deleted file mode 100644 index cedc10a..0000000 --- a/test/dataset/in/file.mods.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 0000000000000000000000000000000000000000 - \ No newline at end of file diff --git a/test/dataset/in/resources/empty.mods.xml b/test/dataset/in/resources/empty.mods.xml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/dataset/in/resources/empty.mods.xml diff --git a/test/dataset/in/resources/file.mods.xml b/test/dataset/in/resources/file.mods.xml new file mode 100644 index 0000000..cedc10a --- /dev/null +++ b/test/dataset/in/resources/file.mods.xml @@ -0,0 +1,4 @@ + + + 0000000000000000000000000000000000000000 + \ No newline at end of file diff --git a/test/dataset/in/resources/file.tei.tpl b/test/dataset/in/resources/file.tei.tpl new file mode 100644 index 0000000..b26a235 --- /dev/null +++ b/test/dataset/in/resources/file.tei.tpl @@ -0,0 +1 @@ +{{value}} \ No newline at end of file diff --git a/test/dataset/in/test.URL.json b/test/dataset/in/test.URL.json deleted file mode 100644 index 87bbfdb..0000000 --- a/test/dataset/in/test.URL.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "addParameters": [{ - "label": "Devrait créer l'url suivante : http://www.test.tu/test", - "arguments": { - "url": "http://www.test.tu/test", - "parameters": {} - }, - "result": { - "equal": "http://www.test.tu/test?" - } - }, { - "label": "Devrait créer l'url suivante : http://www.test.tu/test?a=1", - "arguments": { - "url": "http://www.test.tu/test", - "parameters": { - "a": 1 - } - }, - "result": { - "equal": "http://www.test.tu/test?a=1" - } - }, { - "label": "Devrait créer l'url suivante : http://www.test.tu/test?a=1&b=2", - "arguments": { - "url": "http://www.test.tu/test", - "parameters": { - "a": 1, - "b": 2 - } - }, - "result": { - "equal": "http://www.test.tu/test?a=1&b=2" - } - }] -} \ No newline at end of file diff --git a/test/dataset/in/test.XML.json b/test/dataset/in/test.XML.json deleted file mode 100644 index 7cc7c2c..0000000 --- a/test/dataset/in/test.XML.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "load": [{ - "label": "Devrait parser un fichier xml", - "path": "./dataset/in/file.mods.xml", - "result": { - "be": "object" - } - }, { - "label": "Ne devrait pas parser de xml (fichier vide)", - "path": "./dataset/in/empty.mods.xml", - "result": { - "equal": null - } - }], - "select": [{ - "label": "Devrait trouver l'identifiant ISSN dans le fichier xml", - "path": "./dataset/in/file.mods.xml", - "arguments": { - "selector": ".type:val(\"ISSN\") ~ .$t" - }, - "result": { - "equal": "0000000000000000000000000000000000000000" - } - }, { - "label": "Ne devrait pas trouver d'identifiant ISBN dans le fichier xml", - "path": "./dataset/in/file.mods.xml", - "arguments": { - "selector": ".type:val(\"ISBN\") ~ .$t" - }, - "result": {} - }] -} \ No newline at end of file diff --git a/test/dataset/in/test.directories.json b/test/dataset/in/test.directories.json deleted file mode 100644 index 4811ce2..0000000 --- a/test/dataset/in/test.directories.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sync":[{ - "label": "Devrait créer un répertoire dans : ./test/dataset/out/mkdirp", - "arguments": "./test/dataset/out/mkdirp", - "result": { - "be": "undefined" - } - }] -} \ No newline at end of file diff --git a/test/dataset/in/test.files.json b/test/dataset/in/test.files.json deleted file mode 100644 index 847f579..0000000 --- a/test/dataset/in/test.files.json +++ /dev/null @@ -1,174 +0,0 @@ -{ - "selectAll": [{ - "label": "Devrait trouver 3 images dans les annexes (avec une RegExp)", - "regExp": ["mime"], - "container": "annexes", - "arguments": { - "options": [{ - "mime": "image", - "original": true - }] - }, - "result": { - "length": 3 - } - }, { - "label": "Ne devrait rien trouver dans les annexes (avec une RegExp)", - "regExp": ["mime"], - "container": "annexes", - "arguments": { - "options": [{ - "mime": "text", - "original": true - }] - }, - "result": { - "length": 0 - } - }, { - "label": "Devrait trouver 2 images (jpeg) dans les annexes (sans RegExp)", - "regExp": ["mime"], - "container": "annexes", - "arguments": { - "options": [{ - "mime": "image/jpeg", - "original": true - }] - }, - "result": { - "length": 2 - } - }, { - "label": "Ne devrait rien trouver dans les annexes (sans RegExp)", - "regExp": ["mime"], - "container": "annexes", - "arguments": { - "options": [{ - "mime": "text/plain", - "original": true - }] - }, - "result": { - "length": 0 - } - }], - "select": [{ - "label": "Devrait trouver un fichier texte dans les données fulltext", - "container": "fulltext", - "arguments": { - "options": [{ - "mime": "text/plain", - "original": false - }, { - "mime": "text/plain", - "original": true - }] - }, - "result": { - "not": true, - "equal": null - } - }, { - "label": "Devrait trouver une image dans les annexes (avec une RegExp)", - "regExp": ["mime"], - "container": "annexes", - "arguments": { - "options": [{ - "mime": "image", - "original": true - }] - }, - "result": { - "not": true, - "equal": null - } - }, { - "label": "Ne devrait pas trouver un fichier texte dans les annexes", - "container": "annexes", - "arguments": { - "options": [{ - "mime": "text/plain" - }] - }, - "result": { - "equal": null - } - }], - "get": [{ - "label": "Devrait trouver un fichier mods dans les metadata", - "container": "metadata", - "arguments": { - "options": { - "mime": "application/mods+xml" - } - }, - "result": { - "not": true, - "equal": null - } - }, { - "label": "Ne devrait pas trouver un fichier mods dans les metadata", - "container": "metadata", - "arguments": { - "options": { - "mime": "application/mods+xml", - "original": true - } - }, - "result": { - "equal": null - } - }, { - "label": "Devrait trouver un fichier mods dans les metadata (avec une RegExp)", - "regExp": ["mime"], - "container": "metadata", - "arguments": { - "options": { - "mime": "mods", - "original": false - } - }, - "result": { - "not": true, - "equal": null - } - }, { - "label": "Ne devrait pas trouver un fichier mods dans les metadata (avec une RegExp)", - "regExp": ["mime"], - "container": "metadata", - "arguments": { - "options": { - "mime": "mods+xml", - "original": true - } - }, - "result": { - "equal": null - } - }], - "createPath": [{ - "label": "Devrait retourner un chemin correctement construit (non null)", - "arguments": { - "corpusPath": "/my/path/", - "id": "0000000000000000000000000000000000000000", - "type": "enrichments", - "label": "mymodule", - "extension": ".tei.xml" - }, - "result": { - "not": true, - "equal": null - } - }, { - "label": "Devrait retourner null", - "arguments": { - "corpusPath": "/my/path/", - "type": "enrichments", - "label": "mymodule", - "extension": ".tei.xml" - }, - "result": { - "equal": null - } - }] -} \ No newline at end of file diff --git a/test/dataset/in/test.paths.json b/test/dataset/in/test.paths.json deleted file mode 100644 index 3b7f5ac..0000000 --- a/test/dataset/in/test.paths.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "init": [{ - "label": "Devrait créer le chemin suivant : /root/my/absolute/path/", - "arguments": { - "paths": { - "test": "./my/absolute/path/" - }, - "root": "/root/" - }, - "result": { - "equal": "/root/my/absolute/path/" - } - }] -} \ No newline at end of file diff --git a/test/dataset/in/test.resources.json b/test/dataset/in/test.resources.json deleted file mode 100644 index 21288bc..0000000 --- a/test/dataset/in/test.resources.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "load": [{ - "label": "Devrait charger toutes les ressources", - "arguments": { - "paths": { - "myResource": "./dataset/in/resources/myResource.json" - } - }, - "result": { - "length": 1 - } - }] -} \ No newline at end of file diff --git a/test/run.js b/test/run.js index b6684af..99fe31b 100644 --- a/test/run.js +++ b/test/run.js @@ -10,12 +10,13 @@ // Données de test var docObject = require('./dataset/in/docObject.sample.json'), dataset = { - "paths": require('./dataset/in/test.paths.json'), - "resources": require('./dataset/in/test.resources.json'), - "files": require('./dataset/in/test.files.json'), - "directories": require('./dataset/in/test.directories.json'), - "XML": require('./dataset/in/test.XML.json'), - "URL": require('./dataset/in/test.URL.json') + "paths": require('./dataset/in/data/paths.json'), + "resources": require('./dataset/in/data/resources.json'), + "files": require('./dataset/in/data/files.json'), + "enrichments": require('./dataset/in/data/enrichments.json'), + "directories": require('./dataset/in/data/directories.json'), + "XML": require('./dataset/in/data/XML.json'), + "URL": require('./dataset/in/data/URL.json') }; // Mapping indiquant quelle fonction de test et quelles données utiliser pour chaque fonction @@ -24,12 +25,17 @@ "init": testOf_pathsInit }, "resources": { - "load": testOf_resourcesLoad + "require": testOf_resourcesRequire }, "files": { - "selectAll": testOf_fileRepresentation, + "createPath": null, + "get": testOf_fileRepresentation, "select": testOf_fileRepresentation, - "get": testOf_fileRepresentation + "selectAll": testOf_fileRepresentation + }, + "enrichments": { + "save": testOf_enrichmentsSave, + "write": testOf_enrichmentsWrite }, "directories": { "sync": null @@ -48,12 +54,22 @@ * - myObject.paths. * - init() * + * - myObject.resources. + * - require() + * * - myObject.files. * - selectAll() * - select() * - get() * - createPath() * + * - myObject.enrichments. + * - write() + * - save() + * + * - myObject.directories. + * - sync() + * * - myObject.XML. * - load() * - select() @@ -80,21 +96,11 @@ /** * Fonction de test à appliquée pour : - * - myObject.resources.laod() + * - myObject.resources.require() */ -function testOf_resourcesLoad(fn, item, cb) { +function testOf_resourcesRequire(fn, item, cb) { var paths = myObject.paths.init(item.arguments.paths, __dirname); - var result = fn(paths); - return cb(Object.keys(result)); -} - -/** - * Fonction de test à appliquée pour : - * - myObject.XML.load() - */ -function testOf_xmlLoad(fn, item, cb) { - var xmlStr = fs.readFileSync(path.join(__dirname, item.path), 'utf-8'); - return cb(fn(xmlStr)); + return cb(fn(paths)); } /** @@ -110,6 +116,36 @@ /** * Fonction de test à appliquée pour : + * - myObject.enrichments.save() + */ +function testOf_enrichmentsSave(fn, item, cb) { + var before = (item.arguments.enrichments && item.arguments.enrichments[item.arguments.options.label]) ? item.arguments.enrichments[item.arguments.options.label].length : 0, // Nombre d'enrichissement avant + result = fn(item.arguments.enrichments, item.arguments.options), + after = result[item.arguments.options.label].length; // Nombre d'enrichissement aprés + cb(after - before); +} + +/** + * Fonction de test à appliquée pour : + * - myObject.enrichments.write() + */ +function testOf_enrichmentsWrite(fn, item, cb) { + fn(item.arguments.options, function(err) { + cb(err); + }); +} + +/** + * Fonction de test à appliquée pour : + * - myObject.XML.load() + */ +function testOf_xmlLoad(fn, item, cb) { + var xmlStr = fs.readFileSync(path.join(__dirname, item.path), 'utf-8'); + return cb(fn(xmlStr)); +} + +/** + * Fonction de test à appliquée pour : * - myObject.XML.select() */ function testOf_xmlSelect(fn, item, cb) {