diff --git a/tests/cliAccessibility.js b/tests/cliAccessibility.js index 963d7fc4..f15b144d 100644 --- a/tests/cliAccessibility.js +++ b/tests/cliAccessibility.js @@ -11,19 +11,19 @@ describe('Test command line interface functionality', function () { describe('CLI accessibility', function () { it('`create-elm-app` command should be available', function () { - var output = spawn.sync('create-elm-app').output; + const output = spawn.sync('create-elm-app').output; expect(output.toString()).to.have.string('Usage: create-elm-app '); }); it('`elm-app` command should be available', function () { - var result = spawn.sync('elm-app'); - var output = result.output; + const result = spawn.sync('elm-app'); + const output = result.output; expect(output.toString()).to.have.string('Usage: elm-app '); }); it('`elm-app package` command should be available', function () { - var result = spawn.sync('elm-app', [ 'package' ]); - var output = concatsStringBuffers(result.output); + const result = spawn.sync('elm-app', [ 'package' ]); + const output = concatsStringBuffers(result.output); expect(output).to.have.string('install and publish elm packages'); }); }); diff --git a/tests/elm-app.build.spec.js b/tests/elm-app.build.spec.js index 4eb9cf1f..c26bf35a 100644 --- a/tests/elm-app.build.spec.js +++ b/tests/elm-app.build.spec.js @@ -29,8 +29,8 @@ describe('Building Elm application with `elm-app build`', function () { }); it('`elm-app build` should succeed in `' + testAppName + '`', function () { - var result = spawn.sync('node', [ elmAppCmd, 'build' ]); - var outputString = result.output.map(function (out) { + const result = spawn.sync('node', [ elmAppCmd, 'build' ]); + const outputString = result.output.map(function (out) { return (out !== null) ? out.toString() : ''; }).join(''); expect(result.status).to.be.equal(0, 'Incorrect exit status code'); diff --git a/tests/elm-app.test.spec.js b/tests/elm-app.test.spec.js new file mode 100644 index 00000000..720db6ea --- /dev/null +++ b/tests/elm-app.test.spec.js @@ -0,0 +1,42 @@ +const path = require('path'); +const spawn = require('cross-spawn'); +const rimraf = require('rimraf'); +const expect = require('chai').expect; + + +const testAppName = 'test-app'; +const rootDir = path.resolve(__dirname, '..'); +const testAppDir = path.join(rootDir, testAppName); +const createElmAppCmd = path.join(rootDir, 'bin/create-elm-app-cli.js'); +const elmAppCmd = path.join(rootDir, 'bin/elm-app-cli.js'); + +describe('Testing Elm application with `elm-app test` (Please wait...)', function () { + before(function (done) { + const cmd = spawn.sync('node', [ createElmAppCmd, testAppName ]); + + if (cmd.status === 0) { + process.chdir(testAppDir); + done(); + } else { + done(false); + } + }); + + after(function () { + process.chdir(rootDir); + rimraf.sync(testAppDir); + }); + + it('`elm-app test` should succeed in `' + testAppName + '`', function () { + const result = spawn.sync('node', [ elmAppCmd, 'test' ]); + const outputString = result.output.map(function (out) { + return (out !== null) ? out.toString() : ''; + }).join(''); + + expect(result.status).to.be.at.least(1); + expect(outputString).to.have.string('This test should fail'); + expect(outputString).to.have.string('failed as expected!'); + }).timeout(2 * 60 * 1000); +}); + +