diff --git a/lib/jasmine-0.9.0.js b/lib/jasmine-0.9.0.js index a76eb85..013b324 100644 --- a/lib/jasmine-0.9.0.js +++ b/lib/jasmine-0.9.0.js @@ -1743,7 +1743,7 @@ jasmine.Spec.prototype.removeAllSpies = function() { * @param {jasmine.Suite} parentSuite */ jasmine.Suite = function(env, description, specDefinitions, parentSuite) { - var self = this; + var self = this; self.id = env.nextSuiteId_++; self.description = description; self.queue = new jasmine.Queue(env); @@ -1754,7 +1754,6 @@ jasmine.Suite = function(env, description, specDefinitions, parentSuite) { self.specs = []; }; - jasmine.Suite.prototype.getFullName = function() { var fullName = this.description; for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { @@ -1787,17 +1786,22 @@ jasmine.Suite.prototype.getResults = function() { jasmine.Suite.prototype.add = function(block) { if (block instanceof jasmine.Suite) { - this.env.currentRunner.addSuite(block); - } + this.env.currentRunner.addSuite(block); + } this.specs.push(block); this.queue.add(block); }; -jasmine.Suite.prototype.execute = function(onComplete) { - var self = this; - this.queue.start(function () { self.finish(onComplete); }); +jasmine.Suite.prototype.specCount = function(block) { + return this.specs.length; }; +jasmine.Suite.prototype.execute = function(onComplete) { + var self = this; + this.queue.start(function () { + self.finish(onComplete); + }); +}; jasmine.WaitsBlock = function(env, timeout, spec) { this.timeout = timeout; jasmine.Block.call(this, env, null, spec); diff --git a/spec/runner.html b/spec/runner.html index 8816958..b6dac93 100644 --- a/spec/runner.html +++ b/spec/runner.html @@ -36,6 +36,7 @@ jasmine.include('suites/RunnerSpec.js', true); jasmine.include('suites/SpecRunningSpec.js', true); jasmine.include('suites/SpySpec.js', true); + jasmine.include('suites/SuiteSpec.js', true); jasmine.include('suites/TrivialReporterSpec.js', true); diff --git a/spec/suites/SuiteSpec.js b/spec/suites/SuiteSpec.js new file mode 100644 index 0000000..7d3256c --- /dev/null +++ b/spec/suites/SuiteSpec.js @@ -0,0 +1,65 @@ +describe('Suite', function() { + var fakeTimer; + var env; + + beforeEach(function() { + env = new jasmine.Env(); + + fakeTimer = new jasmine.FakeTimer(); + env.setTimeout = fakeTimer.setTimeout; + env.clearTimeout = fakeTimer.clearTimeout; + env.setInterval = fakeTimer.setInterval; + env.clearInterval = fakeTimer.clearInterval; + }); + + it('should keep a count of the number of specs that are run' , function() { + env.describe('one suite description', function () { + env.it('should be a test', function() { + this.runs(function () { + this.expect(true).toEqual(true); + }); + }); + env.it('should be another test', function() { + this.runs(function () { + this.expect(true).toEqual(true); + }); + }); + env.it('should be a third test', function() { + this.runs(function () { + this.expect(true).toEqual(true); + }); + }); + }); + + var suite = env.currentRunner.suites[0]; + expect(suite.specCount()).toEqual(3); + }); + + it('specCount should be correct even with runs/waits blocks' , function() { + env.describe('one suite description', function () { + env.it('should be a test', function() { + this.runs(function () { + this.expect(true).toEqual(true); + }); + }); + env.it('should be another test', function() { + this.runs(function () { + this.expect(true).toEqual(true); + }); + this.waits(10); + this.runs(function () { + this.expect(true).toEqual(true); + }); + }); + env.it('should be a third test', function() { + this.runs(function () { + this.expect(true).toEqual(true); + }); + }); + }); + + var suite = env.currentRunner.suites[0]; + expect(suite.specCount()).toEqual(3); + }); + +}); \ No newline at end of file diff --git a/src/Suite.js b/src/Suite.js index 4b7d46f..79fc5d7 100644 --- a/src/Suite.js +++ b/src/Suite.js @@ -8,7 +8,7 @@ * @param {jasmine.Suite} parentSuite */ jasmine.Suite = function(env, description, specDefinitions, parentSuite) { - var self = this; + var self = this; self.id = env.nextSuiteId_++; self.description = description; self.queue = new jasmine.Queue(env); @@ -19,7 +19,6 @@ jasmine.Suite = function(env, description, specDefinitions, parentSuite) { self.specs = []; }; - jasmine.Suite.prototype.getFullName = function() { var fullName = this.description; for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { @@ -52,14 +51,19 @@ jasmine.Suite.prototype.getResults = function() { jasmine.Suite.prototype.add = function(block) { if (block instanceof jasmine.Suite) { - this.env.currentRunner.addSuite(block); - } + this.env.currentRunner.addSuite(block); + } this.specs.push(block); this.queue.add(block); }; -jasmine.Suite.prototype.execute = function(onComplete) { - var self = this; - this.queue.start(function () { self.finish(onComplete); }); +jasmine.Suite.prototype.specCount = function(block) { + return this.specs.length; }; +jasmine.Suite.prototype.execute = function(onComplete) { + var self = this; + this.queue.start(function () { + self.finish(onComplete); + }); +}; \ No newline at end of file