Now pass a navigation helper to HtmlReporter instead of click handlers

This commit is contained in:
Gregg Van Hove
2018-01-30 14:30:28 -08:00
parent 84953ec210
commit 0eca06a33b
5 changed files with 122 additions and 30 deletions
+1 -3
View File
@@ -96,9 +96,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
var htmlReporter = new jasmine.HtmlReporter({ var htmlReporter = new jasmine.HtmlReporter({
env: env, env: env,
onStopExecutionClick: function() { queryString.navigateWithNewParam("failFast", !env.stoppingOnSpecFailure()); }, navigateWithNewParam: function(key, value) { return queryString.navigateWithNewParam(key, value); },
onThrowExpectationsClick: function() { queryString.navigateWithNewParam("throwFailures", !env.throwingExpectationFailures()); },
onRandomClick: function() { queryString.navigateWithNewParam("random", !env.randomTests()); },
addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); }, addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); },
getContainer: function() { return document.body; }, getContainer: function() { return document.body; },
createElement: function() { return document.createElement.apply(document, arguments); }, createElement: function() { return document.createElement.apply(document, arguments); },
+1 -3
View File
@@ -74,9 +74,7 @@
*/ */
var htmlReporter = new jasmine.HtmlReporter({ var htmlReporter = new jasmine.HtmlReporter({
env: env, env: env,
onStopExecutionClick: function() { queryString.navigateWithNewParam("failFast", !env.stoppingOnSpecFailure()); }, navigateWithNewParam: function(key, value) { return queryString.navigateWithNewParam(key, value); },
onThrowExpectationsClick: function() { queryString.navigateWithNewParam("throwFailures", !env.throwingExpectationFailures()); },
onRandomClick: function() { queryString.navigateWithNewParam("random", !env.randomTests()); },
addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); }, addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); },
getContainer: function() { return document.body; }, getContainer: function() { return document.body; },
createElement: function() { return document.createElement.apply(document, arguments); }, createElement: function() { return document.createElement.apply(document, arguments); },
+10 -6
View File
@@ -85,9 +85,7 @@ jasmineRequire.HtmlReporter = function(j$) {
getContainer = options.getContainer, getContainer = options.getContainer,
createElement = options.createElement, createElement = options.createElement,
createTextNode = options.createTextNode, createTextNode = options.createTextNode,
onStopExecutionClick = options.onStopExecutionClick || function() {}, navigateWithNewParam = options.navigateWithNewParam || function() {},
onThrowExpectationsClick = options.onThrowExpectationsClick || function() {},
onRandomClick = options.onRandomClick || function() {},
addToExistingQueryString = options.addToExistingQueryString || defaultQueryString, addToExistingQueryString = options.addToExistingQueryString || defaultQueryString,
filterSpecs = options.filterSpecs, filterSpecs = options.filterSpecs,
timer = options.timer || noopTimer, timer = options.timer || noopTimer,
@@ -348,15 +346,21 @@ jasmineRequire.HtmlReporter = function(j$) {
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast'); var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast');
failFastCheckbox.checked = env.stoppingOnSpecFailure(); failFastCheckbox.checked = env.stoppingOnSpecFailure();
failFastCheckbox.onclick = onStopExecutionClick; failFastCheckbox.onclick = function() {
navigateWithNewParam('failFast', !env.stoppingOnSpecFailure());
};
var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures'); var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures');
throwCheckbox.checked = env.throwingExpectationFailures(); throwCheckbox.checked = env.throwingExpectationFailures();
throwCheckbox.onclick = onThrowExpectationsClick; throwCheckbox.onclick = function() {
navigateWithNewParam('throwFailures', !env.throwingExpectationFailures());
};
var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order'); var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order');
randomCheckbox.checked = env.randomTests(); randomCheckbox.checked = env.randomTests();
randomCheckbox.onclick = onRandomClick; randomCheckbox.onclick = function() {
navigateWithNewParam('random', !env.randomTests());
};
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'), var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'), optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'),
+100 -12
View File
@@ -487,16 +487,44 @@ describe("HtmlReporter", function() {
expect(stopOnFailureUI.checked).toBe(true); expect(stopOnFailureUI.checked).toBe(true);
}); });
it("should trigger the callback when changed", function() { it("should navigate and turn the setting on", function() {
var env = new jasmineUnderTest.Env(), var env = new jasmineUnderTest.Env(),
container = document.createElement("div"), container = document.createElement("div"),
failFastHandler = jasmine.createSpy('failFast'), navigationHandler = jasmine.createSpy('navigate'),
getContainer = function() { getContainer = function() {
return container; return container;
}, },
reporter = new jasmineUnderTest.HtmlReporter({ reporter = new jasmineUnderTest.HtmlReporter({
env: env, env: env,
onStopExecutionClick: failFastHandler, navigateWithNewParam: navigationHandler,
getContainer: getContainer,
createElement: function() {
return document.createElement.apply(document, arguments);
},
createTextNode: function() {
return document.createTextNode.apply(document, arguments);
}
});
reporter.initialize();
reporter.jasmineDone({});
var stopOnFailureUI = container.querySelector(".jasmine-fail-fast");
stopOnFailureUI.click();
expect(navigationHandler).toHaveBeenCalledWith('failFast', true);
});
it("should navigate and turn the setting off", function() {
var env = new jasmineUnderTest.Env(),
container = document.createElement("div"),
navigationHandler = jasmine.createSpy('navigate'),
getContainer = function() {
return container;
},
reporter = new jasmineUnderTest.HtmlReporter({
env: env,
navigateWithNewParam: navigationHandler,
getContainer: getContainer, getContainer: getContainer,
createElement: function() { createElement: function() {
return document.createElement.apply(document, arguments); return document.createElement.apply(document, arguments);
@@ -514,7 +542,7 @@ describe("HtmlReporter", function() {
var stopOnFailureUI = container.querySelector(".jasmine-fail-fast"); var stopOnFailureUI = container.querySelector(".jasmine-fail-fast");
stopOnFailureUI.click(); stopOnFailureUI.click();
expect(failFastHandler).toHaveBeenCalled(); expect(navigationHandler).toHaveBeenCalledWith('failFast', false);
}); });
}); });
@@ -569,17 +597,17 @@ describe("HtmlReporter", function() {
expect(throwingExpectationsUI.checked).toBe(true); expect(throwingExpectationsUI.checked).toBe(true);
}); });
it("should affect the query param for throw expectation failures", function() { it("should navigate and change the setting to on", function() {
var env = new jasmineUnderTest.Env(), var env = new jasmineUnderTest.Env(),
container = document.createElement("div"), container = document.createElement("div"),
throwingExceptionHandler = jasmine.createSpy('throwingExceptions'), navigateHandler = jasmine.createSpy('navigate'),
getContainer = function() { getContainer = function() {
return container; return container;
}, },
reporter = new jasmineUnderTest.HtmlReporter({ reporter = new jasmineUnderTest.HtmlReporter({
env: env, env: env,
getContainer: getContainer, getContainer: getContainer,
onThrowExpectationsClick: throwingExceptionHandler, navigateWithNewParam: navigateHandler,
createElement: function() { createElement: function() {
return document.createElement.apply(document, arguments); return document.createElement.apply(document, arguments);
}, },
@@ -594,7 +622,37 @@ describe("HtmlReporter", function() {
var throwingExpectationsUI = container.querySelector(".jasmine-throw"); var throwingExpectationsUI = container.querySelector(".jasmine-throw");
throwingExpectationsUI.click(); throwingExpectationsUI.click();
expect(throwingExceptionHandler).toHaveBeenCalled(); expect(navigateHandler).toHaveBeenCalledWith('throwFailures', true);
});
it("should navigate and change the setting to off", function() {
var env = new jasmineUnderTest.Env(),
container = document.createElement("div"),
navigateHandler = jasmine.createSpy('navigate'),
getContainer = function() {
return container;
},
reporter = new jasmineUnderTest.HtmlReporter({
env: env,
getContainer: getContainer,
navigateWithNewParam: navigateHandler,
createElement: function() {
return document.createElement.apply(document, arguments);
},
createTextNode: function() {
return document.createTextNode.apply(document, arguments);
}
});
env.throwOnExpectationFailure(true);
reporter.initialize();
reporter.jasmineDone({});
var throwingExpectationsUI = container.querySelector(".jasmine-throw");
throwingExpectationsUI.click();
expect(navigateHandler).toHaveBeenCalledWith('throwFailures', false);
}); });
}); });
@@ -649,17 +707,17 @@ describe("HtmlReporter", function() {
expect(randomUI.checked).toBe(true); expect(randomUI.checked).toBe(true);
}); });
it("should affect the query param for random tests", function() { it("should navigate and change the setting to on", function() {
var env = new jasmineUnderTest.Env(), var env = new jasmineUnderTest.Env(),
container = document.createElement("div"), container = document.createElement("div"),
randomHandler = jasmine.createSpy('randomHandler'), navigateHandler = jasmine.createSpy('navigate'),
getContainer = function() { getContainer = function() {
return container; return container;
}, },
reporter = new jasmineUnderTest.HtmlReporter({ reporter = new jasmineUnderTest.HtmlReporter({
env: env, env: env,
getContainer: getContainer, getContainer: getContainer,
onRandomClick: randomHandler, navigateWithNewParam: navigateHandler,
createElement: function() { createElement: function() {
return document.createElement.apply(document, arguments); return document.createElement.apply(document, arguments);
}, },
@@ -668,13 +726,43 @@ describe("HtmlReporter", function() {
} }
}); });
env.randomizeTests(false);
reporter.initialize(); reporter.initialize();
reporter.jasmineDone({}); reporter.jasmineDone({});
var randomUI = container.querySelector(".jasmine-random"); var randomUI = container.querySelector(".jasmine-random");
randomUI.click(); randomUI.click();
expect(randomHandler).toHaveBeenCalled(); expect(navigateHandler).toHaveBeenCalledWith('random', true);
});
it("should navigate and change the setting to off", function() {
var env = new jasmineUnderTest.Env(),
container = document.createElement("div"),
navigateHandler = jasmine.createSpy('navigate'),
getContainer = function() {
return container;
},
reporter = new jasmineUnderTest.HtmlReporter({
env: env,
getContainer: getContainer,
navigateWithNewParam: navigateHandler,
createElement: function() {
return document.createElement.apply(document, arguments);
},
createTextNode: function() {
return document.createTextNode.apply(document, arguments);
}
});
env.randomizeTests(true);
reporter.initialize();
reporter.jasmineDone({});
var randomUI = container.querySelector(".jasmine-random");
randomUI.click();
expect(navigateHandler).toHaveBeenCalledWith('random', false);
}); });
it("should show the seed bar if randomizing", function() { it("should show the seed bar if randomizing", function() {
+10 -6
View File
@@ -55,9 +55,7 @@ jasmineRequire.HtmlReporter = function(j$) {
getContainer = options.getContainer, getContainer = options.getContainer,
createElement = options.createElement, createElement = options.createElement,
createTextNode = options.createTextNode, createTextNode = options.createTextNode,
onStopExecutionClick = options.onStopExecutionClick || function() {}, navigateWithNewParam = options.navigateWithNewParam || function() {},
onThrowExpectationsClick = options.onThrowExpectationsClick || function() {},
onRandomClick = options.onRandomClick || function() {},
addToExistingQueryString = options.addToExistingQueryString || defaultQueryString, addToExistingQueryString = options.addToExistingQueryString || defaultQueryString,
filterSpecs = options.filterSpecs, filterSpecs = options.filterSpecs,
timer = options.timer || noopTimer, timer = options.timer || noopTimer,
@@ -318,15 +316,21 @@ jasmineRequire.HtmlReporter = function(j$) {
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast'); var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast');
failFastCheckbox.checked = env.stoppingOnSpecFailure(); failFastCheckbox.checked = env.stoppingOnSpecFailure();
failFastCheckbox.onclick = onStopExecutionClick; failFastCheckbox.onclick = function() {
navigateWithNewParam('failFast', !env.stoppingOnSpecFailure());
};
var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures'); var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures');
throwCheckbox.checked = env.throwingExpectationFailures(); throwCheckbox.checked = env.throwingExpectationFailures();
throwCheckbox.onclick = onThrowExpectationsClick; throwCheckbox.onclick = function() {
navigateWithNewParam('throwFailures', !env.throwingExpectationFailures());
};
var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order'); var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order');
randomCheckbox.checked = env.randomTests(); randomCheckbox.checked = env.randomTests();
randomCheckbox.onclick = onRandomClick; randomCheckbox.onclick = function() {
navigateWithNewParam('random', !env.randomTests());
};
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'), var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'), optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'),