Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/mocha-3.1.2/test/suite.spec.js')
-rw-r--r--tests/lib/mocha-3.1.2/test/suite.spec.js440
1 files changed, 440 insertions, 0 deletions
diff --git a/tests/lib/mocha-3.1.2/test/suite.spec.js b/tests/lib/mocha-3.1.2/test/suite.spec.js
new file mode 100644
index 0000000000..4cb62dd290
--- /dev/null
+++ b/tests/lib/mocha-3.1.2/test/suite.spec.js
@@ -0,0 +1,440 @@
+'use strict';
+
+var mocha = require('../');
+var Suite = mocha.Suite;
+var Test = mocha.Test;
+
+describe('Suite', function () {
+ describe('.clone()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('To be cloned');
+ this.suite._timeout = 3043;
+ this.suite._slow = 101;
+ this.suite._bail = true;
+ this.suite.suites.push(1);
+ this.suite.tests.push('hello');
+ this.suite._beforeEach.push(2);
+ this.suite._beforeAll.push(3);
+ this.suite._afterEach.push(4);
+ this.suite._afterAll.push(5);
+ });
+
+ it('should copy the title', function () {
+ this.suite.clone().title.should.equal('To be cloned');
+ });
+
+ it('should copy the timeout value', function () {
+ this.suite.clone().timeout().should.equal(3043);
+ });
+
+ it('should copy the slow value', function () {
+ this.suite.clone().slow().should.equal(101);
+ });
+
+ it('should copy the bail value', function () {
+ this.suite.clone().bail().should.be.true();
+ });
+
+ it('should not copy the values from the suites array', function () {
+ this.suite.clone().suites.should.be.empty();
+ });
+
+ it('should not copy the values from the tests array', function () {
+ this.suite.clone().tests.should.be.empty();
+ });
+
+ it('should not copy the values from the _beforeEach array', function () {
+ this.suite.clone()._beforeEach.should.be.empty();
+ });
+
+ it('should not copy the values from the _beforeAll array', function () {
+ this.suite.clone()._beforeAll.should.be.empty();
+ });
+
+ it('should not copy the values from the _afterEach array', function () {
+ this.suite.clone()._afterEach.should.be.empty();
+ });
+
+ it('should not copy the values from the _afterAll array', function () {
+ this.suite.clone()._afterAll.should.be.empty();
+ });
+ });
+
+ describe('.timeout()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('when no argument is passed', function () {
+ it('should return the timeout value', function () {
+ this.suite.timeout().should.equal(2000);
+ });
+ });
+
+ describe('when argument is passed', function () {
+ it('should return the Suite object', function () {
+ var newSuite = this.suite.timeout(5000);
+ newSuite.timeout().should.equal(5000);
+ });
+ });
+ });
+
+ describe('.slow()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('when given a string', function () {
+ it('should parse it', function () {
+ this.suite.slow('5 seconds');
+ this.suite.slow().should.equal(5000);
+ });
+ });
+
+ describe('when no argument is passed', function () {
+ it('should return the slow value', function () {
+ this.suite.slow().should.equal(75);
+ });
+ });
+
+ describe('when argument is passed', function () {
+ it('should return the Suite object', function () {
+ var newSuite = this.suite.slow(5000);
+ newSuite.slow().should.equal(5000);
+ });
+ });
+ });
+
+ describe('.bail()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ this.suite._bail = true;
+ });
+
+ describe('when no argument is passed', function () {
+ it('should return the bail value', function () {
+ this.suite.bail().should.be.true();
+ });
+ });
+
+ describe('when argument is passed', function () {
+ it('should return the Suite object', function () {
+ var newSuite = this.suite.bail(false);
+ newSuite.bail().should.be.false();
+ });
+ });
+ });
+
+ describe('.beforeAll()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('wraps the passed in function in a Hook', function () {
+ it('adds it to _beforeAll', function () {
+ var fn = function () {};
+ this.suite.beforeAll(fn);
+
+ this.suite._beforeAll.should.have.length(1);
+ var beforeAllItem = this.suite._beforeAll[0];
+ beforeAllItem.title.should.match(/^"before all" hook/);
+ beforeAllItem.fn.should.equal(fn);
+ });
+
+ it('appends title to hook', function () {
+ var fn = function () {};
+ this.suite.beforeAll('test', fn);
+
+ this.suite._beforeAll.should.have.length(1);
+ var beforeAllItem = this.suite._beforeAll[0];
+ beforeAllItem.title.should.equal('"before all" hook: test');
+ beforeAllItem.fn.should.equal(fn);
+
+ function namedFn () {}
+ this.suite.beforeAll(namedFn);
+ this.suite._beforeAll.should.have.length(2);
+ beforeAllItem = this.suite._beforeAll[1];
+ beforeAllItem.title.should.equal('"before all" hook: namedFn');
+ beforeAllItem.fn.should.equal(namedFn);
+ });
+ });
+ });
+
+ describe('.afterAll()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('wraps the passed in function in a Hook', function () {
+ it('adds it to _afterAll', function () {
+ var fn = function () {};
+ this.suite.afterAll(fn);
+
+ this.suite._afterAll.should.have.length(1);
+ var afterAllItem = this.suite._afterAll[0];
+ afterAllItem.title.should.match(/^"after all" hook/);
+ afterAllItem.fn.should.equal(fn);
+ });
+ it('appends title to hook', function () {
+ var fn = function () {};
+ this.suite.afterAll('test', fn);
+
+ this.suite._afterAll.should.have.length(1);
+ var beforeAllItem = this.suite._afterAll[0];
+ beforeAllItem.title.should.equal('"after all" hook: test');
+ beforeAllItem.fn.should.equal(fn);
+
+ function namedFn () {}
+ this.suite.afterAll(namedFn);
+ this.suite._afterAll.should.have.length(2);
+ beforeAllItem = this.suite._afterAll[1];
+ beforeAllItem.title.should.equal('"after all" hook: namedFn');
+ beforeAllItem.fn.should.equal(namedFn);
+ });
+ });
+ });
+
+ describe('.beforeEach()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('wraps the passed in function in a Hook', function () {
+ it('adds it to _beforeEach', function () {
+ var fn = function () {};
+ this.suite.beforeEach(fn);
+
+ this.suite._beforeEach.should.have.length(1);
+ var beforeEachItem = this.suite._beforeEach[0];
+ beforeEachItem.title.should.match(/^"before each" hook/);
+ beforeEachItem.fn.should.equal(fn);
+ });
+
+ it('appends title to hook', function () {
+ var fn = function () {};
+ this.suite.beforeEach('test', fn);
+
+ this.suite._beforeEach.should.have.length(1);
+ var beforeAllItem = this.suite._beforeEach[0];
+ beforeAllItem.title.should.equal('"before each" hook: test');
+ beforeAllItem.fn.should.equal(fn);
+
+ function namedFn () {}
+ this.suite.beforeEach(namedFn);
+ this.suite._beforeEach.should.have.length(2);
+ beforeAllItem = this.suite._beforeEach[1];
+ beforeAllItem.title.should.equal('"before each" hook: namedFn');
+ beforeAllItem.fn.should.equal(namedFn);
+ });
+ });
+ });
+
+ describe('.afterEach()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('wraps the passed in function in a Hook', function () {
+ it('adds it to _afterEach', function () {
+ var fn = function () {};
+ this.suite.afterEach(fn);
+
+ this.suite._afterEach.should.have.length(1);
+ var afterEachItem = this.suite._afterEach[0];
+ afterEachItem.title.should.match(/^"after each" hook/);
+ afterEachItem.fn.should.equal(fn);
+ });
+
+ it('appends title to hook', function () {
+ var fn = function () {};
+ this.suite.afterEach('test', fn);
+
+ this.suite._afterEach.should.have.length(1);
+ var beforeAllItem = this.suite._afterEach[0];
+ beforeAllItem.title.should.equal('"after each" hook: test');
+ beforeAllItem.fn.should.equal(fn);
+
+ function namedFn () {}
+ this.suite.afterEach(namedFn);
+ this.suite._afterEach.should.have.length(2);
+ beforeAllItem = this.suite._afterEach[1];
+ beforeAllItem.title.should.equal('"after each" hook: namedFn');
+ beforeAllItem.fn.should.equal(namedFn);
+ });
+ });
+ });
+
+ describe('.addSuite()', function () {
+ beforeEach(function () {
+ this.first = new Suite('First suite');
+ this.first.timeout(4002);
+ this.first.slow(200);
+ this.second = new Suite('Second suite');
+ this.first.addSuite(this.second);
+ });
+
+ it('sets the parent on the added Suite', function () {
+ this.second.parent.should.equal(this.first);
+ });
+
+ it('copies the timeout value', function () {
+ this.second.timeout().should.equal(4002);
+ });
+
+ it('copies the slow value', function () {
+ this.second.slow().should.equal(200);
+ });
+
+ it('adds the suite to the suites collection', function () {
+ this.first.suites.should.have.length(1);
+ this.first.suites[0].should.equal(this.second);
+ });
+
+ it('treats suite as pending if its parent is pending', function () {
+ this.first.pending = true;
+ this.second.isPending.should.be.true;
+ });
+ });
+
+ // describe('.addTest()', function(){
+ // beforeEach(function(){
+ // this.suite = new Suite('A Suite', new Context);
+ // this.suite.timeout(4002);
+ // this.test = new Test('test');
+ // this.suite.addTest(this.test);
+ // });
+ //
+ // it('sets the parent on the added test', function(){
+ // this.test.parent.should.equal(this.suite);
+ // });
+ //
+ // it('copies the timeout value', function(){
+ // this.test.timeout().should.equal(4002);
+ // });
+ //
+ // it('adds the test to the tests collection', function(){
+ // this.suite.tests.should.have.length(1);
+ // this.suite.tests[0].should.equal(this.test);
+ // });
+ // });
+
+ describe('.fullTitle()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('when there is no parent', function () {
+ it('returns the suite title', function () {
+ this.suite.fullTitle().should.equal('A Suite');
+ });
+ });
+
+ describe('when there is a parent', function () {
+ it('returns the combination of parent\'s and suite\'s title', function () {
+ var parentSuite = new Suite('I am a parent');
+ parentSuite.addSuite(this.suite);
+ this.suite.fullTitle().should.equal('I am a parent A Suite');
+ });
+ });
+ });
+
+ describe('.total()', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('when there are no nested suites or tests', function () {
+ it('should return 0', function () {
+ this.suite.total().should.equal(0);
+ });
+ });
+
+ describe('when there are several tests in the suite', function () {
+ it('should return the number', function () {
+ this.suite.addTest(new Test('a child test'));
+ this.suite.addTest(new Test('another child test'));
+ this.suite.total().should.equal(2);
+ });
+ });
+ });
+
+ describe('.eachTest(fn)', function () {
+ beforeEach(function () {
+ this.suite = new Suite('A Suite');
+ });
+
+ describe('when there are no nested suites or tests', function () {
+ it('should return 0', function () {
+ var n = 0;
+ function fn () { n++; }
+ this.suite.eachTest(fn);
+ n.should.equal(0);
+ });
+ });
+
+ describe('when there are several tests in the suite', function () {
+ it('should return the number', function () {
+ this.suite.addTest(new Test('a child test'));
+ this.suite.addTest(new Test('another child test'));
+
+ var n = 0;
+ function fn () { n++; }
+ this.suite.eachTest(fn);
+ n.should.equal(2);
+ });
+ });
+
+ describe('when there are several levels of nested suites', function () {
+ it('should return the number', function () {
+ this.suite.addTest(new Test('a child test'));
+ var suite = new Suite('a child suite');
+ suite.addTest(new Test('a test in a child suite'));
+ this.suite.addSuite(suite);
+
+ var n = 0;
+ function fn () { n++; }
+ this.suite.eachTest(fn);
+ n.should.equal(2);
+ });
+ });
+ });
+
+ describe('initialization', function () {
+ /* eslint no-new: off */
+ it('should throw an error if the title isn\'t a string', function () {
+ (function () {
+ new Suite(undefined, 'root');
+ }).should.throw();
+
+ (function () {
+ new Suite(function () {}, 'root');
+ }).should.throw();
+ });
+
+ it('should not throw if the title is a string', function () {
+ (function () {
+ new Suite('Bdd suite', 'root');
+ }).should.not.throw();
+ });
+ });
+});
+
+describe('Test', function () {
+ describe('initialization', function () {
+ it('should throw an error if the title isn\'t a string', function () {
+ (function () {
+ new Test(function () {});
+ }).should.throw();
+
+ (function () {
+ new Test(undefined, function () {});
+ }).should.throw();
+ });
+
+ it('should not throw if the title is a string', function () {
+ (function () {
+ new Test('test-case', function () {});
+ }).should.not.throw();
+ });
+ });
+});