From 64c7051d5bc7f6126d720ff0da11e7387a2f82c0 Mon Sep 17 00:00:00 2001 From: Craig Taub Date: Sun, 5 Feb 2017 16:43:05 +0000 Subject: [PATCH] landing reporter 100% --- test/reporters/landing.spec.js | 151 +++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 test/reporters/landing.spec.js diff --git a/test/reporters/landing.spec.js b/test/reporters/landing.spec.js new file mode 100644 index 0000000000..343dd80c38 --- /dev/null +++ b/test/reporters/landing.spec.js @@ -0,0 +1,151 @@ +'use strict'; + +var reporters = require('../../').reporters; +var Landing = reporters.Landing; +var Base = reporters.Base; + +describe('Landing reporter', function () { + var stdout; + var stdoutWrite; + var runner; + var useColors; + var windowWidth; + + beforeEach(function () { + stdout = []; + runner = {}; + stdoutWrite = process.stdout.write; + process.stdout.write = function (string) { + stdout.push(string); + }; + useColors = Base.useColors; + Base.useColors = false; + windowWidth = Base.window.width; + Base.window.width = 1; + }); + + afterEach(function () { + Base.useColors = useColors; + Base.window.width = windowWidth; + }); + + describe('on start', function () { + it('should write new lines', function () { + var cachedCursor = Base.cursor; + Base.cursor.hide = function () {}; + runner.on = function (event, callback) { + if (event === 'start') { + callback(); + } + }; + Landing.call({}, runner); + + process.stdout.write = stdoutWrite; + + stdout[0].should.deepEqual('\n\n\n '); + Base.cursor = cachedCursor; + }); + + it('should call cursor hide', function () { + var cachedCursor = Base.cursor; + var calledCursorHide = false; + Base.cursor.hide = function () { + calledCursorHide = true; + }; + runner.on = function (event, callback) { + if (event === 'start') { + callback(); + } + }; + Landing.call({}, runner); + + process.stdout.write = stdoutWrite; + calledCursorHide.should.be.true(); + + Base.cursor = cachedCursor; + }); + }); + + describe('on test end', function () { + describe('if test has failed', function () { + it('should write expected landing strip', function () { + var test = { + state: 'failed' + }; + runner.on = function (event, callback) { + if (event === 'test end') { + callback(test); + } + }; + runner.total = 12; + Landing.call({}, runner); + + process.stdout.write = stdoutWrite; + + var expectedArray = [ '\u001b[1D\u001b[2A', + ' ', + '\n ', + '', + '✈', + '\n', + ' ', + '\u001b[0m' + ]; + stdout.should.deepEqual(expectedArray); + }); + }); + describe('if test has not failed', function () { + it('should write expected landing strip', function () { + var test = { + state: 'success' + }; + runner.on = function (event, callback) { + if (event === 'test end') { + callback(test); + } + }; + + Landing.call({}, runner); + + process.stdout.write = stdoutWrite; + + var expectedArray = [ '\u001b[1D\u001b[2A', + ' ', + '\n ', + '', + '✈', + '\n', + ' ', + '\u001b[0m' + ]; + stdout.should.deepEqual(expectedArray); + }); + }); + }); + describe('on end', function () { + it('should call cursor show and epilogue', function () { + var cachedCursor = Base.cursor; + var calledCursorShow = false; + Base.cursor.show = function () { + calledCursorShow = true; + }; + runner.on = function (event, callback) { + if (event === 'end') { + callback(); + } + }; + var calledEpilogue = false; + Landing.call({ + epilogue: function () { + calledEpilogue = true; + } + }, runner); + + process.stdout.write = stdoutWrite; + calledEpilogue.should.be.true(); + calledCursorShow.should.be.true(); + + Base.cursor = cachedCursor; + }); + }); +});