From f5caee9d3f1da29b1fb683579dfae30f34fd025b Mon Sep 17 00:00:00 2001 From: Alex Anderson Date: Thu, 9 Nov 2017 18:31:51 +0000 Subject: [PATCH] Restructure test data to remove custom copying --- package-lock.json | 8 +-- package.json | 3 +- .../{ => forms/app}/delivery.expected.xml | 0 .../{ => forms/app}/delivery.properties.json | 0 .../{ => forms/app}/delivery.xlsx | Bin .../app}/immunization_visit.expected.xml | 0 .../app}/immunization_visit.properties.json | 0 .../{ => forms/app}/immunization_visit.xlsx | Bin .../{ => forms/app}/off.expected.xml | 0 .../{ => forms/app}/off.properties.json | 0 .../{ => forms/app}/off.xlsx | Bin .../{ => forms/app}/on.expected.xml | 0 .../{ => forms/app}/on.properties.json | 0 .../convert-app-forms/{ => forms/app}/on.xlsx | Bin .../app}/postnatal_visit.expected.xml | 0 .../app}/postnatal_visit.properties.json | 0 .../{ => forms/app}/postnatal_visit.xlsx | Bin .../{ => forms/app}/pregnancy.expected.xml | 0 .../{ => forms/app}/pregnancy.properties.json | 0 .../{ => forms/app}/pregnancy.xlsx | Bin .../app}/pregnancy_visit.expected.xml | 0 .../app}/pregnancy_visit.properties.json | 0 .../{ => forms/app}/pregnancy_visit.xlsx | Bin .../{ => forms/collect}/f.expected.xml | 0 .../{ => forms/collect}/f.xlsx | Bin .../contact}/person-edit.expected.xml | 0 .../{ => forms/contact}/person-edit.xlsx | Bin .../{ => forms/contact}/person.expected.xml | 0 .../{ => forms/contact}/person.xlsx | Bin .../contact}/PLACE_TYPE-create.xlsx | Bin .../{ => forms/contact}/PLACE_TYPE-edit.xlsx | Bin .../contact}/clinic-create.expected.xml | 0 .../contact}/clinic-edit.expected.xml | 0 .../district_hospital-create.expected.xml | 0 .../district_hospital-edit.expected.xml | 0 .../health_center-create.expected.xml | 0 .../contact}/health_center-edit.expected.xml | 0 .../{ => forms/contact}/place-types.json | 0 test/fn/convert-forms.utils.js | 34 +++------- test/fn/csv-to-docs.spec.js | 59 ++++++++---------- test/fn/upload-docs.spec.js | 30 ++++----- 41 files changed, 49 insertions(+), 85 deletions(-) rename test/data/convert-app-forms/{ => forms/app}/delivery.expected.xml (100%) rename test/data/convert-app-forms/{ => forms/app}/delivery.properties.json (100%) rename test/data/convert-app-forms/{ => forms/app}/delivery.xlsx (100%) rename test/data/convert-app-forms/{ => forms/app}/immunization_visit.expected.xml (100%) rename test/data/convert-app-forms/{ => forms/app}/immunization_visit.properties.json (100%) rename test/data/convert-app-forms/{ => forms/app}/immunization_visit.xlsx (100%) rename test/data/convert-app-forms/{ => forms/app}/off.expected.xml (100%) rename test/data/convert-app-forms/{ => forms/app}/off.properties.json (100%) rename test/data/convert-app-forms/{ => forms/app}/off.xlsx (100%) rename test/data/convert-app-forms/{ => forms/app}/on.expected.xml (100%) rename test/data/convert-app-forms/{ => forms/app}/on.properties.json (100%) rename test/data/convert-app-forms/{ => forms/app}/on.xlsx (100%) rename test/data/convert-app-forms/{ => forms/app}/postnatal_visit.expected.xml (100%) rename test/data/convert-app-forms/{ => forms/app}/postnatal_visit.properties.json (100%) rename test/data/convert-app-forms/{ => forms/app}/postnatal_visit.xlsx (100%) rename test/data/convert-app-forms/{ => forms/app}/pregnancy.expected.xml (100%) rename test/data/convert-app-forms/{ => forms/app}/pregnancy.properties.json (100%) rename test/data/convert-app-forms/{ => forms/app}/pregnancy.xlsx (100%) rename test/data/convert-app-forms/{ => forms/app}/pregnancy_visit.expected.xml (100%) rename test/data/convert-app-forms/{ => forms/app}/pregnancy_visit.properties.json (100%) rename test/data/convert-app-forms/{ => forms/app}/pregnancy_visit.xlsx (100%) rename test/data/convert-collect-forms/{ => forms/collect}/f.expected.xml (100%) rename test/data/convert-collect-forms/{ => forms/collect}/f.xlsx (100%) rename test/data/convert-contact-forms/{ => forms/contact}/person-edit.expected.xml (100%) rename test/data/convert-contact-forms/{ => forms/contact}/person-edit.xlsx (100%) rename test/data/convert-contact-forms/{ => forms/contact}/person.expected.xml (100%) rename test/data/convert-contact-forms/{ => forms/contact}/person.xlsx (100%) rename test/data/generate-contact-forms/{ => forms/contact}/PLACE_TYPE-create.xlsx (100%) rename test/data/generate-contact-forms/{ => forms/contact}/PLACE_TYPE-edit.xlsx (100%) rename test/data/generate-contact-forms/{ => forms/contact}/clinic-create.expected.xml (100%) rename test/data/generate-contact-forms/{ => forms/contact}/clinic-edit.expected.xml (100%) rename test/data/generate-contact-forms/{ => forms/contact}/district_hospital-create.expected.xml (100%) rename test/data/generate-contact-forms/{ => forms/contact}/district_hospital-edit.expected.xml (100%) rename test/data/generate-contact-forms/{ => forms/contact}/health_center-create.expected.xml (100%) rename test/data/generate-contact-forms/{ => forms/contact}/health_center-edit.expected.xml (100%) rename test/data/generate-contact-forms/{ => forms/contact}/place-types.json (100%) diff --git a/package-lock.json b/package-lock.json index 63c29c84c..639046f29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "medic-conf", - "version": "1.7.0", + "version": "1.7.8", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2452,12 +2452,6 @@ "resolved": "https://registry.npmjs.org/nan-x/-/nan-x-1.0.0.tgz", "integrity": "sha512-yw4Fhe2/UTzanQ4f0yHWkRnfTuHZFAi4GZDjXS4G+qv5BqXTqPJBbSxpa7MyyW9v4Y4ZySZQik1vcbNkhdnIOg==" }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "dev": true - }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", diff --git a/package.json b/package.json index 186a650de..e2d657aec 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "clean": "rm -rf ./build/", "jshint": "jshint src/**/*.js bin/*.js test/*.js test/**/*.js", "release": "git tag v$(jq -r .version package.json) && git push --tags && npm publish", - "test": "npm run jshint && npm run clean && mocha test/**/*.spec.js" + "test": "npm run jshint && npm run clean && mkdir -p build/test && cp -r test/data build/test/data && mocha test/**/*.spec.js" }, "bin": { "medic-conf": "bin/medic-conf.js", @@ -43,7 +43,6 @@ "lodash": "^4.17.4", "memdown": "^1.4.1", "mocha": "^3.4.2", - "ncp": "^2.0.0", "pouchdb": "^6.3.4" } } diff --git a/test/data/convert-app-forms/delivery.expected.xml b/test/data/convert-app-forms/forms/app/delivery.expected.xml similarity index 100% rename from test/data/convert-app-forms/delivery.expected.xml rename to test/data/convert-app-forms/forms/app/delivery.expected.xml diff --git a/test/data/convert-app-forms/delivery.properties.json b/test/data/convert-app-forms/forms/app/delivery.properties.json similarity index 100% rename from test/data/convert-app-forms/delivery.properties.json rename to test/data/convert-app-forms/forms/app/delivery.properties.json diff --git a/test/data/convert-app-forms/delivery.xlsx b/test/data/convert-app-forms/forms/app/delivery.xlsx similarity index 100% rename from test/data/convert-app-forms/delivery.xlsx rename to test/data/convert-app-forms/forms/app/delivery.xlsx diff --git a/test/data/convert-app-forms/immunization_visit.expected.xml b/test/data/convert-app-forms/forms/app/immunization_visit.expected.xml similarity index 100% rename from test/data/convert-app-forms/immunization_visit.expected.xml rename to test/data/convert-app-forms/forms/app/immunization_visit.expected.xml diff --git a/test/data/convert-app-forms/immunization_visit.properties.json b/test/data/convert-app-forms/forms/app/immunization_visit.properties.json similarity index 100% rename from test/data/convert-app-forms/immunization_visit.properties.json rename to test/data/convert-app-forms/forms/app/immunization_visit.properties.json diff --git a/test/data/convert-app-forms/immunization_visit.xlsx b/test/data/convert-app-forms/forms/app/immunization_visit.xlsx similarity index 100% rename from test/data/convert-app-forms/immunization_visit.xlsx rename to test/data/convert-app-forms/forms/app/immunization_visit.xlsx diff --git a/test/data/convert-app-forms/off.expected.xml b/test/data/convert-app-forms/forms/app/off.expected.xml similarity index 100% rename from test/data/convert-app-forms/off.expected.xml rename to test/data/convert-app-forms/forms/app/off.expected.xml diff --git a/test/data/convert-app-forms/off.properties.json b/test/data/convert-app-forms/forms/app/off.properties.json similarity index 100% rename from test/data/convert-app-forms/off.properties.json rename to test/data/convert-app-forms/forms/app/off.properties.json diff --git a/test/data/convert-app-forms/off.xlsx b/test/data/convert-app-forms/forms/app/off.xlsx similarity index 100% rename from test/data/convert-app-forms/off.xlsx rename to test/data/convert-app-forms/forms/app/off.xlsx diff --git a/test/data/convert-app-forms/on.expected.xml b/test/data/convert-app-forms/forms/app/on.expected.xml similarity index 100% rename from test/data/convert-app-forms/on.expected.xml rename to test/data/convert-app-forms/forms/app/on.expected.xml diff --git a/test/data/convert-app-forms/on.properties.json b/test/data/convert-app-forms/forms/app/on.properties.json similarity index 100% rename from test/data/convert-app-forms/on.properties.json rename to test/data/convert-app-forms/forms/app/on.properties.json diff --git a/test/data/convert-app-forms/on.xlsx b/test/data/convert-app-forms/forms/app/on.xlsx similarity index 100% rename from test/data/convert-app-forms/on.xlsx rename to test/data/convert-app-forms/forms/app/on.xlsx diff --git a/test/data/convert-app-forms/postnatal_visit.expected.xml b/test/data/convert-app-forms/forms/app/postnatal_visit.expected.xml similarity index 100% rename from test/data/convert-app-forms/postnatal_visit.expected.xml rename to test/data/convert-app-forms/forms/app/postnatal_visit.expected.xml diff --git a/test/data/convert-app-forms/postnatal_visit.properties.json b/test/data/convert-app-forms/forms/app/postnatal_visit.properties.json similarity index 100% rename from test/data/convert-app-forms/postnatal_visit.properties.json rename to test/data/convert-app-forms/forms/app/postnatal_visit.properties.json diff --git a/test/data/convert-app-forms/postnatal_visit.xlsx b/test/data/convert-app-forms/forms/app/postnatal_visit.xlsx similarity index 100% rename from test/data/convert-app-forms/postnatal_visit.xlsx rename to test/data/convert-app-forms/forms/app/postnatal_visit.xlsx diff --git a/test/data/convert-app-forms/pregnancy.expected.xml b/test/data/convert-app-forms/forms/app/pregnancy.expected.xml similarity index 100% rename from test/data/convert-app-forms/pregnancy.expected.xml rename to test/data/convert-app-forms/forms/app/pregnancy.expected.xml diff --git a/test/data/convert-app-forms/pregnancy.properties.json b/test/data/convert-app-forms/forms/app/pregnancy.properties.json similarity index 100% rename from test/data/convert-app-forms/pregnancy.properties.json rename to test/data/convert-app-forms/forms/app/pregnancy.properties.json diff --git a/test/data/convert-app-forms/pregnancy.xlsx b/test/data/convert-app-forms/forms/app/pregnancy.xlsx similarity index 100% rename from test/data/convert-app-forms/pregnancy.xlsx rename to test/data/convert-app-forms/forms/app/pregnancy.xlsx diff --git a/test/data/convert-app-forms/pregnancy_visit.expected.xml b/test/data/convert-app-forms/forms/app/pregnancy_visit.expected.xml similarity index 100% rename from test/data/convert-app-forms/pregnancy_visit.expected.xml rename to test/data/convert-app-forms/forms/app/pregnancy_visit.expected.xml diff --git a/test/data/convert-app-forms/pregnancy_visit.properties.json b/test/data/convert-app-forms/forms/app/pregnancy_visit.properties.json similarity index 100% rename from test/data/convert-app-forms/pregnancy_visit.properties.json rename to test/data/convert-app-forms/forms/app/pregnancy_visit.properties.json diff --git a/test/data/convert-app-forms/pregnancy_visit.xlsx b/test/data/convert-app-forms/forms/app/pregnancy_visit.xlsx similarity index 100% rename from test/data/convert-app-forms/pregnancy_visit.xlsx rename to test/data/convert-app-forms/forms/app/pregnancy_visit.xlsx diff --git a/test/data/convert-collect-forms/f.expected.xml b/test/data/convert-collect-forms/forms/collect/f.expected.xml similarity index 100% rename from test/data/convert-collect-forms/f.expected.xml rename to test/data/convert-collect-forms/forms/collect/f.expected.xml diff --git a/test/data/convert-collect-forms/f.xlsx b/test/data/convert-collect-forms/forms/collect/f.xlsx similarity index 100% rename from test/data/convert-collect-forms/f.xlsx rename to test/data/convert-collect-forms/forms/collect/f.xlsx diff --git a/test/data/convert-contact-forms/person-edit.expected.xml b/test/data/convert-contact-forms/forms/contact/person-edit.expected.xml similarity index 100% rename from test/data/convert-contact-forms/person-edit.expected.xml rename to test/data/convert-contact-forms/forms/contact/person-edit.expected.xml diff --git a/test/data/convert-contact-forms/person-edit.xlsx b/test/data/convert-contact-forms/forms/contact/person-edit.xlsx similarity index 100% rename from test/data/convert-contact-forms/person-edit.xlsx rename to test/data/convert-contact-forms/forms/contact/person-edit.xlsx diff --git a/test/data/convert-contact-forms/person.expected.xml b/test/data/convert-contact-forms/forms/contact/person.expected.xml similarity index 100% rename from test/data/convert-contact-forms/person.expected.xml rename to test/data/convert-contact-forms/forms/contact/person.expected.xml diff --git a/test/data/convert-contact-forms/person.xlsx b/test/data/convert-contact-forms/forms/contact/person.xlsx similarity index 100% rename from test/data/convert-contact-forms/person.xlsx rename to test/data/convert-contact-forms/forms/contact/person.xlsx diff --git a/test/data/generate-contact-forms/PLACE_TYPE-create.xlsx b/test/data/generate-contact-forms/forms/contact/PLACE_TYPE-create.xlsx similarity index 100% rename from test/data/generate-contact-forms/PLACE_TYPE-create.xlsx rename to test/data/generate-contact-forms/forms/contact/PLACE_TYPE-create.xlsx diff --git a/test/data/generate-contact-forms/PLACE_TYPE-edit.xlsx b/test/data/generate-contact-forms/forms/contact/PLACE_TYPE-edit.xlsx similarity index 100% rename from test/data/generate-contact-forms/PLACE_TYPE-edit.xlsx rename to test/data/generate-contact-forms/forms/contact/PLACE_TYPE-edit.xlsx diff --git a/test/data/generate-contact-forms/clinic-create.expected.xml b/test/data/generate-contact-forms/forms/contact/clinic-create.expected.xml similarity index 100% rename from test/data/generate-contact-forms/clinic-create.expected.xml rename to test/data/generate-contact-forms/forms/contact/clinic-create.expected.xml diff --git a/test/data/generate-contact-forms/clinic-edit.expected.xml b/test/data/generate-contact-forms/forms/contact/clinic-edit.expected.xml similarity index 100% rename from test/data/generate-contact-forms/clinic-edit.expected.xml rename to test/data/generate-contact-forms/forms/contact/clinic-edit.expected.xml diff --git a/test/data/generate-contact-forms/district_hospital-create.expected.xml b/test/data/generate-contact-forms/forms/contact/district_hospital-create.expected.xml similarity index 100% rename from test/data/generate-contact-forms/district_hospital-create.expected.xml rename to test/data/generate-contact-forms/forms/contact/district_hospital-create.expected.xml diff --git a/test/data/generate-contact-forms/district_hospital-edit.expected.xml b/test/data/generate-contact-forms/forms/contact/district_hospital-edit.expected.xml similarity index 100% rename from test/data/generate-contact-forms/district_hospital-edit.expected.xml rename to test/data/generate-contact-forms/forms/contact/district_hospital-edit.expected.xml diff --git a/test/data/generate-contact-forms/health_center-create.expected.xml b/test/data/generate-contact-forms/forms/contact/health_center-create.expected.xml similarity index 100% rename from test/data/generate-contact-forms/health_center-create.expected.xml rename to test/data/generate-contact-forms/forms/contact/health_center-create.expected.xml diff --git a/test/data/generate-contact-forms/health_center-edit.expected.xml b/test/data/generate-contact-forms/forms/contact/health_center-edit.expected.xml similarity index 100% rename from test/data/generate-contact-forms/health_center-edit.expected.xml rename to test/data/generate-contact-forms/forms/contact/health_center-edit.expected.xml diff --git a/test/data/generate-contact-forms/place-types.json b/test/data/generate-contact-forms/forms/contact/place-types.json similarity index 100% rename from test/data/generate-contact-forms/place-types.json rename to test/data/generate-contact-forms/forms/contact/place-types.json diff --git a/test/fn/convert-forms.utils.js b/test/fn/convert-forms.utils.js index 3f1299185..18ecb6cde 100644 --- a/test/fn/convert-forms.utils.js +++ b/test/fn/convert-forms.utils.js @@ -1,7 +1,5 @@ const assert = require('chai').assert; const fs = require('../../src/lib/sync-fs'); -const path = require('path'); -const warn = require('../../src/lib/log').warn; module.exports = { @@ -13,39 +11,25 @@ module.exports = { this.timeout(30000); // allow time for form conversion - const projectDir = `build/test/${testName}`; + const projectDir = `build/test/data/${testName}`; // recursively copy forms and expected XML to temp directory, and create // tests dynamically - const srcDir = `test/data/${testName}`; const targetDir = `${projectDir}/forms/${type}`; - fs.mkdir(targetDir); + fs.recurseFiles(targetDir) + .filter(file => file.endsWith('.expected.xml')) + .forEach(expectedXml => { - fs.recurseFiles(srcDir) - .forEach(file => { - if(file.endsWith('.expected.xml')) { + const generatedXml = expectedXml.replace(/\.expected\.xml$/, '.xml'); - const expectedXml = file; - const generatedXml = `${targetDir}/${path.basename(file, '.expected.xml')}.xml`; + it(`should generate ${generatedXml} as expected`, () => { - it(`should generate ${generatedXml} as expected`, () => { + assert.ok(fs.exists(generatedXml), `Missing generated XML file: ${generatedXml}`); + assert.equal(fs.read(generatedXml), fs.read(expectedXml), `Content of ${generatedXml} was not as expected.`); - assert.ok(fs.exists(generatedXml), `Missing generated XML file: ${generatedXml}`); - assert.equal(fs.read(generatedXml), fs.read(expectedXml), `Content of ${generatedXml} was not as expected.`); - - }); - - } else if(file.endsWith('.xlsx') || - file.endsWith('.properties.json') || - path.basename(file) === 'place-types.json') { - - const targetName = path.basename(file); - fs.copy(file, `${targetDir}/${targetName}`); - } else { - warn(`Ignoring unexpected file type: ${file}`); - } + }); }); diff --git a/test/fn/csv-to-docs.spec.js b/test/fn/csv-to-docs.spec.js index d9df9dda6..43ea4dc63 100644 --- a/test/fn/csv-to-docs.spec.js +++ b/test/fn/csv-to-docs.spec.js @@ -1,6 +1,5 @@ const assert = require('chai').assert; const fs = require('../../src/lib/sync-fs'); -const ncp = require('ncp'); const csvToDocs = require('../../src/fn/csv-to-docs'); @@ -10,38 +9,32 @@ describe('csv-to-docs', function() { this.timeout(30000); // allow time for slow things // given - const srcDir = `test/data/csv-to-docs`; - const testDir = `build/test/csv-to-docs`; - - ncp(srcDir, testDir, function(err) { - if(err) done(err); - - // when - csvToDocs(testDir) - .then(() => { - const generatedDocsDir = `${testDir}/json_docs`; - const expectedDocsDir = `${testDir}/expected-json_docs`; - - // then - assert.equal(countFilesInDir(generatedDocsDir), - countFilesInDir(expectedDocsDir ), - `Different number of files in ${generatedDocsDir} and ${expectedDocsDir}.`); - - fs.recurseFiles(expectedDocsDir) - .map(file => fs.path.basename(file)) - .forEach(file => { - const expected = fs.read(`${expectedDocsDir}/${file}`); - const generated = fs.read(`${generatedDocsDir}/${file}`); - - // and - assert.equal(generated, expected); - }); - - done(); - }) - .catch(done); - - }); + const testDir = `build/test/data/csv-to-docs`; + + // when + csvToDocs(testDir) + .then(() => { + const generatedDocsDir = `${testDir}/json_docs`; + const expectedDocsDir = `${testDir}/expected-json_docs`; + + // then + assert.equal(countFilesInDir(generatedDocsDir), + countFilesInDir(expectedDocsDir ), + `Different number of files in ${generatedDocsDir} and ${expectedDocsDir}.`); + + fs.recurseFiles(expectedDocsDir) + .map(file => fs.path.basename(file)) + .forEach(file => { + const expected = fs.read(`${expectedDocsDir}/${file}`); + const generated = fs.read(`${generatedDocsDir}/${file}`); + + // and + assert.equal(generated, expected); + }); + + done(); + }) + .catch(done); }); diff --git a/test/fn/upload-docs.spec.js b/test/fn/upload-docs.spec.js index 2531f0375..3f9eeb73d 100644 --- a/test/fn/upload-docs.spec.js +++ b/test/fn/upload-docs.spec.js @@ -1,6 +1,5 @@ const api = require('../api-stub'); const assert = require('chai').assert; -const ncp = require('ncp'); const uploadDocs = require('../../src/fn/upload-docs'); describe('upload-docs', function() { @@ -9,29 +8,24 @@ describe('upload-docs', function() { it('should upload docs to pouch', function(done) { - // given the test files are copied over - const srcDir = `test/data/upload-docs`; - const testDir = `build/test/upload-docs`; + // given + const testDir = `build/test/data/upload-docs`; - ncp(srcDir, testDir, err => { - if(err) done(err); + assertDbEmpty() - assertDbEmpty() + .then(() => /* when */ uploadDocs(testDir, api.couchUrl)) - .then(() => /* when */ uploadDocs(testDir, api.couchUrl)) + .then(() => api.db.allDocs()) + .then(res => - .then(() => api.db.allDocs()) - .then(res => + // then + assert.deepEqual(res.rows.map(doc => doc.id), [ + 'one', 'three', 'two' + ])) - // then - assert.deepEqual(res.rows.map(doc => doc.id), [ - 'one', 'three', 'two' - ])) + .then(done) + .catch(done); - .then(done) - .catch(done); - - }); });