diff options
Diffstat (limited to 'tests/lib/mocha-3.1.2/test/reporters')
-rw-r--r-- | tests/lib/mocha-3.1.2/test/reporters/base.spec.js | 213 | ||||
-rw-r--r-- | tests/lib/mocha-3.1.2/test/reporters/json.spec.js | 63 | ||||
-rw-r--r-- | tests/lib/mocha-3.1.2/test/reporters/nyan.spec.js | 31 |
3 files changed, 307 insertions, 0 deletions
diff --git a/tests/lib/mocha-3.1.2/test/reporters/base.spec.js b/tests/lib/mocha-3.1.2/test/reporters/base.spec.js new file mode 100644 index 0000000000..6282d882ff --- /dev/null +++ b/tests/lib/mocha-3.1.2/test/reporters/base.spec.js @@ -0,0 +1,213 @@ +'use strict'; + +var assert = require('assert'); + +var Base = require('../../lib/reporters/base'); +var Assert = require('assert').AssertionError; + +function makeTest (err) { + return { + err: err, + fullTitle: function () { + return 'test title'; + } + }; +} + +describe('Base reporter', function () { + var stdout; + var stdoutWrite; + var useColors; + + beforeEach(function () { + stdout = []; + stdoutWrite = process.stdout.write; + process.stdout.write = function (string) { + stdout.push(string); + }; + useColors = Base.useColors; + Base.useColors = false; + }); + + afterEach(function () { + process.stdout.write = stdoutWrite; + Base.useColors = useColors; + }); + + describe('showDiff', function () { + it('should show diffs by default', function () { + var err = new Assert({ actual: 'foo', expected: 'bar' }); + var errOut; + + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + errOut.should.match(/\- actual/); + errOut.should.match(/\+ expected/); + }); + + it('should show diffs if property set to `true`', function () { + var err = new Assert({ actual: 'foo', expected: 'bar' }); + var errOut; + + err.showDiff = true; + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + errOut.should.match(/\- actual/); + errOut.should.match(/\+ expected/); + }); + + it('should not show diffs when showDiff property set to `false`', function () { + var err = new Assert({ actual: 'foo', expected: 'bar' }); + var errOut; + + err.showDiff = false; + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + errOut.should.not.match(/\- actual/); + errOut.should.not.match(/\+ expected/); + }); + + it('should not show diffs when expected is not defined', function () { + var err = new Error('ouch'); + var errOut; + + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + errOut.should.not.match(/\- actual/); + errOut.should.not.match(/\+ expected/); + }); + }); + + describe('Getting two strings', function () { + // Fix regression V1.2.1(see: issue #1241) + it('should show strings diff as is', function () { + var err = new Error('test'); + var errOut; + + err.actual = 'foo\nbar'; + err.expected = 'foo\nbaz'; + err.showDiff = true; + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + + errOut.should.not.match(/"foo\\nbar"/); + errOut.should.match(/foo/).and.match(/bar/); + errOut.should.match(/test/); + errOut.should.match(/actual/); + errOut.should.match(/expected/); + }); + }); + + it('should stringify objects', function () { + var err = new Error('test'); + var errOut; + + err.actual = {key: 'a1'}; + err.expected = {key: 'e1'}; + err.showDiff = true; + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + errOut.should.match(/"key"/); + errOut.should.match(/test/); + errOut.should.match(/\- actual/); + errOut.should.match(/\+ expected/); + }); + + it('should stringify Object.create(null)', function () { + var err = new Error('test'); + var errOut; + + err.actual = Object.create(null); + err.actual.hasOwnProperty = 1; + err.expected = Object.create(null); + err.expected.hasOwnProperty = 2; + err.showDiff = true; + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + errOut.should.match(/"hasOwnProperty"/); + errOut.should.match(/test/); + errOut.should.match(/\- actual/); + errOut.should.match(/\+ expected/); + }); + + it('should handle error messages that are not strings', function () { + var errOut; + + try { + assert(false, true); + } catch (err) { + err.actual = false; + err.expected = true; + err.showDiff = true; + var test = makeTest(err); + + Base.list([test]); + + errOut = stdout.join('\n'); + errOut.should.match(/\+true/); + errOut.should.match(/\-false/); + errOut.should.match(/\- actual/); + errOut.should.match(/\+ expected/); + } + }); + + it('should remove message from stack', function () { + var err = { + message: 'Error', + stack: 'Error\nfoo\nbar', + showDiff: false + }; + var test = makeTest(err); + + Base.list([test]); + + var errOut = stdout.join('\n').trim(); + errOut.should.equal('1) test title:\n Error\n foo\n bar'); + }); + + it('should use the inspect() property if `message` is not set', function () { + var err = { + showDiff: false, + inspect: function () { return 'an error happened'; } + }; + var test = makeTest(err); + Base.list([test]); + var errOut = stdout.join('\n').trim(); + errOut.should.equal('1) test title:\n an error happened'); + }); + + it('should not modify stack if it does not contain message', function () { + var err = { + message: 'Error', + stack: 'foo\nbar', + showDiff: false + }; + var test = makeTest(err); + + Base.list([test]); + + var errOut = stdout.join('\n').trim(); + errOut.should.equal('1) test title:\n Error\n foo\n bar'); + }); +}); diff --git a/tests/lib/mocha-3.1.2/test/reporters/json.spec.js b/tests/lib/mocha-3.1.2/test/reporters/json.spec.js new file mode 100644 index 0000000000..74151fdc8b --- /dev/null +++ b/tests/lib/mocha-3.1.2/test/reporters/json.spec.js @@ -0,0 +1,63 @@ +'use strict'; + +var Mocha = require('../../'); +var Suite = Mocha.Suite; +var Runner = Mocha.Runner; +var Test = Mocha.Test; + +describe('json reporter', function () { + var suite, runner; + + beforeEach(function () { + var mocha = new Mocha({ + reporter: 'json' + }); + suite = new Suite('JSON suite', 'root'); + runner = new Runner(suite); + /* eslint no-unused-vars: off */ + var mochaReporter = new mocha._reporter(runner); + }); + + it('should have 1 test failure', function (done) { + var testTitle = 'json test 1'; + var error = { message: 'oh shit' }; + + suite.addTest(new Test(testTitle, function (done) { + done(new Error(error.message)); + })); + + runner.run(function (failureCount) { + failureCount.should.be.exactly(1); + runner.should.have.property('testResults'); + runner.testResults.should.have.property('failures'); + runner.testResults.failures.should.be.an.instanceOf(Array); + runner.testResults.failures.should.have.a.lengthOf(1); + + var failure = runner.testResults.failures[0]; + failure.should.have.property('title', testTitle); + failure.err.message.should.equal(error.message); + failure.should.have.properties('err'); + + done(); + }); + }); + + it('should have 1 test pending', function (done) { + var testTitle = 'json test 1'; + + suite.addTest(new Test(testTitle)); + + runner.run(function (failureCount) { + failureCount.should.be.exactly(0); + runner.should.have.property('testResults'); + runner.testResults.should.have.property('pending'); + runner.testResults.pending.should.be.an.instanceOf(Array); + runner.testResults.pending.should.have.a.lengthOf(1); + + var pending = runner.testResults.pending[0]; + pending.should.have.property('title', testTitle); + + done(); + }); + }); +}); diff --git a/tests/lib/mocha-3.1.2/test/reporters/nyan.spec.js b/tests/lib/mocha-3.1.2/test/reporters/nyan.spec.js new file mode 100644 index 0000000000..07c455efd3 --- /dev/null +++ b/tests/lib/mocha-3.1.2/test/reporters/nyan.spec.js @@ -0,0 +1,31 @@ +'use strict'; + +var reporters = require('../../').reporters; +var NyanCat = reporters.Nyan; + +describe('nyan face', function () { + it('nyan face:(x .x) when "failures" at least one', function () { + var nyanCat = new NyanCat({on: function () {}}); + nyanCat.stats = { passes: 2, pending: 1, failures: 1 }; + nyanCat.face().should.equal('( x .x)'); + }); + + it('expected nyan face:(x .x) when "pending" at least one and no failing', function () { + var nyanCat = new NyanCat({on: function () {}}); + nyanCat.stats = { passes: 2, pending: 1, failures: 0 }; + nyanCat.face().should.equal('( o .o)'); + }); + + it('expected nyan face:(^ .^) when "passing" only', function () { + var nyanCat = new NyanCat({on: function () {}}); + nyanCat.stats = { passes: 1, pending: 0, failures: 0 }; + nyanCat.face().should.equal('( ^ .^)'); + }); + + it('nyan face:(- .-) when otherwise', function (done) { + var nyanCat = new NyanCat({on: function () {}}); + nyanCat.stats = { passes: 0, pending: 0, failures: 0 }; + nyanCat.face().should.equal('( - .-)'); + done(); + }); +}); |