diff --git a/package.json b/package.json index f02323a..527ffcf 100755 --- a/package.json +++ b/package.json @@ -14,9 +14,13 @@ "dev": "node build/dev-server.js", "predev": "check-node-version --node \">= 8.0.0\"", "start": "node build/dev-server.js", - "pdf": "node scripts/app.js", + "pdf": "node scripts/export.js", "preview": "node scripts/preview.js", - "test": "concurrently \"npm run dev\" \"testcafe chromium test/\" --success first --kill-others --raw", + "test:deleteFiles": "node test/scripts/deleteFiles.js", + "test:e2e": "concurrently \"npm run dev\" \"testcafe chromium test/\" --success first --kill-others --raw", + "test:export": "SCRIPT=export npm run test:deleteFiles && npm run export && mocha test/scripts/export.js", + "test:preview": "SCRIPT=preview npm run test:deleteFiles && npm run preview && mocha test/scripts/preview.js", + "test": "npm run test:export && npm run test:preview && npm run test:e2e", "export": "concurrently \"npm run dev\" \"npm run pdf\" --success first --kill-others --raw", "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs" }, @@ -71,6 +75,7 @@ "less-loader": "4.0.5", "local-web-server": "^2.2.4", "lolex": "^2.1.3", + "mocha": "^4.0.1", "mv": "2.1.1", "opn": "5.1.0", "optimize-css-assets-webpack-plugin": "^3.2.0", diff --git a/scripts/app.js b/scripts/export.js similarity index 100% rename from scripts/app.js rename to scripts/export.js diff --git a/test/resumes-overview.js b/test/e2e/resumes-overview.js old mode 100644 new mode 100755 similarity index 100% rename from test/resumes-overview.js rename to test/e2e/resumes-overview.js diff --git a/test/resumes.js b/test/e2e/resumes.js old mode 100644 new mode 100755 similarity index 100% rename from test/resumes.js rename to test/e2e/resumes.js diff --git a/test/scripts/allResumes.js b/test/scripts/allResumes.js new file mode 100755 index 0000000..0edbc64 --- /dev/null +++ b/test/scripts/allResumes.js @@ -0,0 +1,22 @@ +const path = require('path'); +const fs = require('fs'); + +const getResumesFromDirectories = () => { + const directories = getDirectories(); + return directories + .map(dir => { + let fileName = dir.replace('.vue', ''); + return { + path: fileName, + name: fileName + }; + }); +}; + +const getDirectories = () => { + const srcpath = path.join(__dirname, '../../src/resumes'); + return fs.readdirSync(srcpath) + .filter(file => file !== 'resumes.js' && file !== 'template.vue' && file !== 'options.js'); +}; + +module.exports = getResumesFromDirectories; diff --git a/test/scripts/deleteFiles.js b/test/scripts/deleteFiles.js new file mode 100755 index 0000000..d457a86 --- /dev/null +++ b/test/scripts/deleteFiles.js @@ -0,0 +1,25 @@ +const fs = require('fs'); +const path = require('path'); + +let directory = ''; +switch (process.env.SCRIPT) { + case 'export': + directory = path.join(__dirname, '../../pdf'); + break; + case 'preview': + directory = path.join(__dirname, '../../src/assets/preview'); + break; + default: + console.log('Environment variable "ENV" is not defined.'); + process.exit(); +} + +fs.readdir(directory, (err, files) => { + if (err) throw err; + for (const file of files) { + fs.unlink(path.join(directory, file), err => { + if (err) throw err; + }); + } + console.log('Deleted files.'); +}); diff --git a/test/scripts/export.js b/test/scripts/export.js new file mode 100755 index 0000000..2e951a1 --- /dev/null +++ b/test/scripts/export.js @@ -0,0 +1,17 @@ +const mocha = require('mocha'); +const assert = require('assert'); +const path = require('path'); +const fs = require('fs'); +const describe = mocha.describe; +const it = mocha.it; +const allResumes = require('./allResumes'); + +describe('npm run export', () => { + it('should have generated the pdf files', () => { + const resumes = allResumes(); + resumes.forEach(resume => { + const p = path.join(__dirname, '../../pdf/' + resume.path + '.pdf'); + assert.ok(fs.existsSync(p)); + }); + }); +}); diff --git a/test/scripts/preview.js b/test/scripts/preview.js new file mode 100755 index 0000000..9ace94c --- /dev/null +++ b/test/scripts/preview.js @@ -0,0 +1,17 @@ +const mocha = require('mocha'); +const assert = require('assert'); +const path = require('path'); +const fs = require('fs'); +const describe = mocha.describe; +const it = mocha.it; +const allResumes = require('./allResumes'); + +describe('npm run preview', () => { + it('should have generated the png files', () => { + const resumes = allResumes(); + resumes.forEach(resume => { + const p = path.join(__dirname, '../../src/assets/preview/resume-' + resume.path + '.png'); + assert.ok(fs.existsSync(p)); + }); + }); +});