Fix getFullName on spec.

- Fixes specFiltering on nested specs
This commit is contained in:
Davis W. Frank & Rajan Agaskar
2012-12-07 11:11:09 -08:00
parent 74f928fd54
commit c584f182ab
6 changed files with 36 additions and 30 deletions
+5 -12
View File
@@ -593,14 +593,8 @@ jasmine.buildExpectationResult = function(params) {
var specConstructor = jasmine.Spec;
// TODO: this deserves a better name (not a Factory the way others are)
var fullNameFactory = function(spec, currentSuite) {
var descriptions = [];
for (var suite = currentSuite; suite; suite = suite.parentSuite) {
descriptions.push(suite.description)
}
descriptions.push(spec.description);
return descriptions.join(' ') + '.';
var getSpecName = function(spec, currentSuite) {
return currentSuite.getFullName() + ' ' + spec.description + '.';
};
var buildExpectationResult = jasmine.buildExpectationResult;
@@ -616,7 +610,7 @@ jasmine.buildExpectationResult = function(params) {
expectationFactory: expectationFactory,
exceptionFormatter: exceptionFormatter,
resultCallback: specResultCallback,
fullNameFactory: function(spec) { return fullNameFactory(spec, suite) },
getSpecName: function(spec) { return getSpecName(spec, suite) },
startCallback: startCallback,
description: description,
catchExceptions: self.catchExceptions,
@@ -1933,7 +1927,7 @@ jasmine.Spec = function(attrs) {
this.catchExceptions = attrs.catchExceptions;
this.startCallback = attrs.startCallback || function() {};
this.exceptionFormatter = attrs.exceptionFormatter || function() {};
this.fullNameFactory = attrs.fullNameFactory;
this.getSpecName = attrs.getSpecName;
this.expectationResultFactory = attrs.expectationResultFactory || function() {};
};
@@ -2013,9 +2007,8 @@ jasmine.Spec.prototype.status = function() {
}
};
//TODO: remove
jasmine.Spec.prototype.getFullName = function() {
return this.fullNameFactory(this);
return this.getSpecName(this);
}
/**
* Internal representation of a Jasmine suite.
-2
View File
@@ -1,7 +1,5 @@
describe("Clock", function() {
// TODO: fullName/SpecFilter is broken, so don't nest describes you want to filter
it("calls the global setTimeout directly if Clock is not installed", function() {
var setTimeout = jasmine.createSpy('setTimeout'),
delayedFunctionScheduler = jasmine.createSpyObj('delayedFunctionScheduler', ['scheduleFunction']),
+25 -1
View File
@@ -158,7 +158,7 @@ describe("jasmine.Env", function() {
});
});
describe("jasmine Env", function() {
describe("jasmine Env (integration)", function() {
it("Mock clock can be installed and used in tests", function() {
var setTimeout = jasmine.createSpy('setTimeout'),
@@ -186,4 +186,28 @@ describe("jasmine Env", function() {
expect(setTimeout).toHaveBeenCalledWith(globalTimeoutFn, 100);
});
it("should be possible to get full name from a spec", function() {
var env = new jasmine.Env({global: { setTimeout: setTimeout }}),
topLevelSpec, nestedSpec, doublyNestedSpec;
env.describe("my tests", function() {
topLevelSpec = env.it("are sometimes top level", function() {
});
env.describe("are sometimes", function() {
nestedSpec = env.it("singly nested", function() {
});
env.describe("even", function() {
doublyNestedSpec = env.it("doubly nested", function() {
});
});
});
});
env.execute();
expect(topLevelSpec.getFullName()).toBe("my tests are sometimes top level.");
expect(nestedSpec.getFullName()).toBe("my tests are sometimes singly nested.");
expect(doublyNestedSpec.getFullName()).toBe("my tests are sometimes even doubly nested.");
});
});
+1 -3
View File
@@ -166,10 +166,8 @@ describe("Spec (real-ish unit tests)", function() {
});
it("can return its full name", function() {
//TODO: not convinced that a spec should provide this as part of its public interface, but adding temporarily
//until we fix the reporting
var spec = new jasmine.Spec({
fullNameFactory: function(passedVal) {
getSpecName: function(passedVal) {
expect(passedVal).toBe(spec);
return 'expected val';
}
+3 -9
View File
@@ -78,14 +78,8 @@
var specConstructor = jasmine.Spec;
// TODO: this deserves a better name (not a Factory the way others are)
var fullNameFactory = function(spec, currentSuite) {
var descriptions = [];
for (var suite = currentSuite; suite; suite = suite.parentSuite) {
descriptions.push(suite.description)
}
descriptions.push(spec.description);
return descriptions.join(' ') + '.';
var getSpecName = function(spec, currentSuite) {
return currentSuite.getFullName() + ' ' + spec.description + '.';
};
var buildExpectationResult = jasmine.buildExpectationResult;
@@ -101,7 +95,7 @@
expectationFactory: expectationFactory,
exceptionFormatter: exceptionFormatter,
resultCallback: specResultCallback,
fullNameFactory: function(spec) { return fullNameFactory(spec, suite) },
getSpecName: function(spec) { return getSpecName(spec, suite) },
startCallback: startCallback,
description: description,
catchExceptions: self.catchExceptions,
+2 -3
View File
@@ -11,7 +11,7 @@ jasmine.Spec = function(attrs) {
this.catchExceptions = attrs.catchExceptions;
this.startCallback = attrs.startCallback || function() {};
this.exceptionFormatter = attrs.exceptionFormatter || function() {};
this.fullNameFactory = attrs.fullNameFactory;
this.getSpecName = attrs.getSpecName;
this.expectationResultFactory = attrs.expectationResultFactory || function() {};
};
@@ -91,7 +91,6 @@ jasmine.Spec.prototype.status = function() {
}
};
//TODO: remove
jasmine.Spec.prototype.getFullName = function() {
return this.fullNameFactory(this);
return this.getSpecName(this);
}