{I"
class:EFI"ProcessedAsset; FI"logical_path; FI")teaspoon/base/reporters/html_spec.js; FI"
pathname; FI"a/Users/jejacks0n/Projects/teaspoon/spec/javascripts/teaspoon/base/reporters/html_spec.coffee; FI"content_type; FI"application/javascript; FI"
mtime; Fl+Qú½QI"length; Fi5EI"digest; F"%8022f72b43e9019ddf5671ec22748756I"source; FI"5E(function() {
describe("Teaspoon.Reporters.HTML", function() {
beforeEach(function() {
var _this = this;
this.originalParams = Teaspoon.params;
this.buildSpy = spyOn(Teaspoon.Reporters.HTML.prototype, "build");
this.readConfigSpy = spyOn(Teaspoon.Reporters.HTML.prototype, "readConfig");
Teaspoon.params = {
grep: "foo"
};
this.reporter = new Teaspoon.Reporters.HTML();
this.jasmineSuite = {
getFullName: function() {
return "_full jasmine suite description_";
}
};
this.jasmineSpecResultsItems = [
{
message: "_jasmine_message1_",
trace: {
stack: "_jasmine_stack_trace1_"
},
passed: function() {
return false;
}
}, {
message: "_jasmine_message2_",
trace: {
stack: "_jasmine_stack_trace2_"
},
passed: function() {
return false;
}
}
];
this.jasmineSpecResults = {
skipped: false,
passed: function() {
return true;
},
getItems: function() {
return _this.jasmineSpecResultsItems;
}
};
return this.jasmineSpec = {
description: "_jasmine_description_",
viewId: 42,
pending: false,
suite: this.jasmineSuite,
getFullName: function() {
return "_full jasmine description_";
},
results: function() {
return _this.jasmineSpecResults;
}
};
});
afterEach(function() {
return Teaspoon.params = this.originalParams;
});
describe("constructor", function() {
it("sets up the expected variables", function() {
expect(this.reporter.start).toBeDefined();
expect(this.reporter.config).toEqual({
"use-catch": true,
"build-full-report": false,
"display-progress": true
});
expect(this.reporter.total).toEqual({
exist: 0,
run: 0,
passes: 0,
failures: 0,
skipped: 0
});
expect(this.reporter.views).toEqual({
specs: {},
suites: {}
});
return expect(this.reporter.filters).toEqual(["remove by match: foo"]);
});
return it("calls readConfig", function() {
return expect(this.readConfigSpy).toHaveBeenCalled();
});
});
describe("#build", function() {
beforeEach(function() {
this.el = {};
this.buildSpy.andCallThrough();
this.buildLayoutSpy = spyOn(this.reporter, "buildLayout");
this.findElSpy = spyOn(this.reporter, "findEl").andReturn(this.el);
this.setTextSpy = spyOn(this.reporter, "setText");
this.showConfigurationSpy = spyOn(this.reporter, "showConfiguration");
this.buildProgressSpy = spyOn(this.reporter, "buildProgress");
this.buildSuiteSelectSpy = spyOn(this.reporter, "buildSuiteSelect");
this.buildFiltersSpy = spyOn(this.reporter, "buildFilters");
spyOn(this.reporter, "envInfo").andReturn("library 1.0.0");
return this.reporter.build();
});
it("calls buildLayout", function() {
return expect(this.buildLayoutSpy).toHaveBeenCalled();
});
it("finds the element and assigns it", function() {
expect(this.findElSpy).toHaveBeenCalledWith("report-all");
return expect(this.reporter.el).toBe(this.el);
});
it("sets the env-info and version", function() {
expect(this.setTextSpy).toHaveBeenCalledWith("env-info", "library 1.0.0");
return expect(this.setTextSpy).toHaveBeenCalledWith("version", Teaspoon.version);
});
it("makes the toggles clickable", function() {
expect(this.findElSpy).toHaveBeenCalledWith("toggles");
return expect(this.el.onclick).toBe(this.reporter.toggleConfig);
});
it("calls showConfiguration", function() {
return expect(this.showConfigurationSpy).toHaveBeenCalled();
});
it("calls buildProgress", function() {
return expect(this.buildProgressSpy).toHaveBeenCalled();
});
it("calls buildSuiteSelect", function() {
return expect(this.buildSuiteSelectSpy).toHaveBeenCalled();
});
return it("calls buildFilters", function() {
return expect(this.buildFiltersSpy).toHaveBeenCalled();
});
});
describe("#buildLayout", function() {
beforeEach(function() {
this.el = {};
this.createElSpy = spyOn(this.reporter, "createEl").andReturn(this.el);
this.appendChildSpy = spyOn(document.body, "appendChild");
return this.reporter.buildLayout();
});
return it("creates an element and appends it to the body", function() {
expect(this.createElSpy).toHaveBeenCalledWith("div");
expect(this.appendChildSpy).toHaveBeenCalledWith(this.el);
return expect(this.el.innerHTML).toContain("Teaspoon");
});
});
describe("#buildSuiteSelect", function() {
beforeEach(function() {
this.originalSuites = Teaspoon.suites;
return Teaspoon.suites = {
all: ["default", "foo", "bar"],
active: "foo"
};
});
afterEach(function() {
return Teaspoon.suites = this.originalSuites;
});
return it("builds a select that displays the suites", function() {
var result;
result = this.reporter.buildSuiteSelect();
expect(result).toContain("select id=");
return expect(result).toContain("selected='selected' value=\"foo\"");
});
});
describe("#buildProgress", function() {
beforeEach(function() {
this.progress = {
appendTo: function() {}
};
this.findElSpy = spyOn(this.reporter, "findEl").andReturn("_element_");
this.createSpy = spyOn(Teaspoon.Reporters.HTML.ProgressView, "create").andReturn(this.progress);
this.appendToSpy = spyOn(this.progress, "appendTo");
return this.reporter.buildProgress();
});
it("calls create on ProgressView", function() {
return expect(this.createSpy).toHaveBeenCalledWith(true);
});
return it("appends the progress element to the dom", function() {
return expect(this.appendToSpy).toHaveBeenCalledWith("_element_");
});
});
describe("#reportRunnerStarting", function() {
beforeEach(function() {
this.setTextSpy = spyOn(this.reporter, "setText");
return this.reporter.reportRunnerStarting({
total: 42
});
});
it("gets the totals", function() {
return expect(this.reporter.total.exist).toBe(42);
});
return it("sets the duration text", function() {
return expect(this.setTextSpy).toHaveBeenCalledWith("stats-duration", "...");
});
});
describe("#reportSpecStarting", function() {
it("creates a SpecView", function() {
var spy;
this.reporter.config["build-full-report"] = true;
spy = spyOn(Teaspoon.Reporters.HTML, "SpecView");
this.reporter.reportSpecStarting(this.jasmineSpec);
return expect(spy).toHaveBeenCalled();
});
it("doesn't create the SpecView if we're not building the full report", function() {
var spy;
this.reporter.config["build-full-report"] = false;
spy = spyOn(Teaspoon.Reporters.HTML, "SpecView");
this.reporter.reportSpecStarting(this.jasmineSpec);
return expect(spy).wasNotCalled();
});
return it("tracks the start time of the spec", function() {
this.reporter.specStart = void 0;
this.reporter.reportSpecStarting(this.jasmineSpec);
return expect(this.reporter.specStart).toBeDefined();
});
});
describe("#reportSpecResults", function() {
beforeEach(function() {
this.updateProgressSpy = spyOn(this.reporter, "updateProgress");
return this.updateStatusSpy = spyOn(this.reporter, "updateStatus");
});
it("increases the total run count", function() {
this.reporter.total.run = 41;
this.reporter.reportSpecResults(this.jasmineSpec);
return expect(this.reporter.total.run).toBe(42);
});
it("calls updateProgress", function() {
this.reporter.reportSpecResults(this.jasmineSpec);
return expect(this.updateProgressSpy).toHaveBeenCalled();
});
return it("calls updateStatus", function() {
this.reporter.reportSpecResults(this.jasmineSpec);
return expect(this.updateStatusSpy).toHaveBeenCalledWith(this.jasmineSpec);
});
});
describe("#reportRunnerResults", function() {
beforeEach(function() {
this.setTextSpy = spyOn(this.reporter, "setText");
this.setStatusSpy = spyOn(this.reporter, "setStatus");
this.updateProgressSpy = spyOn(this.reporter, "updateProgress");
this.elapsedTimeSpy = spyOn(this.reporter, "elapsedTime").andReturn("1.000s");
return this.reporter.total = {
run: 666,
exist: 42,
failures: 5,
passes: 10,
skipped: 15
};
});
it("does nothing if there were no tests run", function() {
this.reporter.total.run = 0;
this.reporter.reportRunnerResults();
return expect(this.setTextSpy).wasNotCalled();
});
it("sets the duration text", function() {
this.reporter.total = {
run: 666,
exist: 42
};
this.reporter.reportRunnerResults();
return expect(this.setTextSpy).toHaveBeenCalledWith("stats-duration", "1.000s");
});
it("sets the status to passed if there are no failures", function() {
this.reporter.total.failures = 0;
this.reporter.reportRunnerResults();
return expect(this.setStatusSpy).toHaveBeenCalledWith("passed");
});
it("displays the total passes", function() {
this.reporter.reportRunnerResults();
return expect(this.setTextSpy).toHaveBeenCalledWith("stats-passes", 10);
});
it("displays the total failures", function() {
this.reporter.reportRunnerResults();
return expect(this.setTextSpy).toHaveBeenCalledWith("stats-failures", 5);
});
it("displays the total skipped", function() {
this.reporter.reportRunnerResults();
return expect(this.setTextSpy).toHaveBeenCalledWith("stats-skipped", 15);
});
return it("calls updateProgress", function() {
this.reporter.reportRunnerResults();
return expect(this.updateProgressSpy).toHaveBeenCalled();
});
});
describe("#updateStat", function() {
beforeEach(function() {
return this.setTextSpy = spyOn(this.reporter, "setText");
});
it("does nothing if we're not displaying progress", function() {
this.reporter.config["display-progress"] = false;
this.reporter.updateStat("name", 42);
return expect(this.setTextSpy).wasNotCalled();
});
return it("sets the text of the stat we want to set", function() {
this.reporter.updateStat("name", 42);
return expect(this.setTextSpy).toHaveBeenCalledWith("stats-name", 42);
});
});
describe("#updateStatus", function() {
beforeEach(function() {
this.updateStatSpy = spyOn(this.reporter, "updateStat");
this.setStatusSpy = spyOn(this.reporter, "setStatus");
return this.findElSpy = spyOn(this.reporter, "findEl").andReturn({
appendChild: function() {}
});
});
describe("skipped", function() {
return it("updates the statistic", function() {
this.jasmineSpecResults.skipped = true;
this.reporter.updateStatus(this.jasmineSpec);
return expect(this.updateStatSpy).toHaveBeenCalledWith("skipped", 1);
});
});
describe("pass", function() {
it("updates the statistic", function() {
this.reporter.updateStatus(this.jasmineSpec);
return expect(this.updateStatSpy).toHaveBeenCalledWith("passes", 1);
});
return it("calls updateState on the view", function() {
var spy;
this.reporter.reportView = {
updateState: function() {}
};
spy = spyOn(this.reporter.reportView, "updateState");
this.reporter.updateStatus(this.jasmineSpec);
return expect(spy.argsForCall[0][0]).toBe("passed");
});
});
return describe("failure", function() {
beforeEach(function() {
return this.jasmineSpecResults.passed = function() {
return false;
};
});
it("updates the statistic", function() {
this.reporter.updateStatus(this.jasmineSpec);
return expect(this.updateStatSpy).toHaveBeenCalledWith("failures", 1);
});
it("calls updateState on the view", function() {
var spy;
this.reporter.reportView = {
updateState: function() {}
};
spy = spyOn(this.reporter.reportView, "updateState");
this.reporter.updateStatus(this.jasmineSpec);
return expect(spy.argsForCall[0][0]).toBe("failed");
});
it("creates a FailureView and appends it to the dom", function() {
var spy;
spy = spyOn(Teaspoon.Reporters.HTML, "FailureView").andReturn({
appendTo: function() {}
});
this.reporter.updateStatus(this.jasmineSpec);
return expect(spy).toHaveBeenCalled();
});
it("doesn't create a FailureView if we're building the full report", function() {
var spy;
this.reporter.config["build-full-report"] = true;
spy = spyOn(Teaspoon.Reporters.HTML, "FailureView").andReturn({
appendTo: function() {}
});
this.reporter.updateStatus(this.jasmineSpec);
return expect(spy).wasNotCalled();
});
return it("sets the status", function() {
this.reporter.updateStatus(this.jasmineSpec);
return expect(this.setStatusSpy).toHaveBeenCalledWith("failed");
});
});
});
describe("#updateProgress", function() {
beforeEach(function() {
this.progress = {
update: function() {}
};
this.updateSpy = spyOn(this.progress, "update");
this.reporter.progress = this.progress;
this.reporter.total = {
exist: 666,
run: 42
};
return this.reporter.updateProgress();
});
return it("calls update on the progress view", function() {
return expect(this.updateSpy).toHaveBeenCalledWith(666, 42);
});
});
describe("#showConfiguration", function() {
beforeEach(function() {
return this.setClassSpy = spyOn(this.reporter, "setClass");
});
return it("sets the class to active on the toggle buttons for each configuration", function() {
this.reporter.showConfiguration();
expect(this.setClassSpy).toHaveBeenCalledWith("use-catch", "active");
expect(this.setClassSpy).toHaveBeenCalledWith("build-full-report", "");
return expect(this.setClassSpy).toHaveBeenCalledWith("display-progress", "active");
});
});
describe("#setStatus", function() {
return it("sets the body class to the status passed in", function() {
var current;
current = document.body.className;
this.reporter.setStatus("foo");
expect(document.body.className).toBe("teaspoon-foo");
return document.body.className = current;
});
});
describe("#setFilter", function() {
beforeEach(function() {
Teaspoon.params = {
grep: "_grep_",
file: "_file_"
};
this.reporter.filters = [];
return this.reporter.setFilters();
});
return it("sets a class and the html for the filter display", function() {
expect(this.reporter.filters.length).toBe(2);
expect(this.reporter.filters[0]).toBe("remove by file: _file_");
return expect(this.reporter.filters[1]).toBe("remove by match: _grep_");
});
});
describe("#readConfig", function() {
beforeEach(function() {
this.readConfigSpy.andCallThrough();
this.config = {};
this.cookieSpy = spyOn(this.reporter, "cookie").andReturn(this.config);
return this.reporter.readConfig();
});
return it("reads the configuration from the cookie", function() {
expect(this.cookieSpy).toHaveBeenCalledWith("teaspoon");
return expect(this.reporter.config).toEqual(this.config);
});
});
return describe("#toggleConfig", function() {
beforeEach(function() {
this.refreshSpy = spyOn(this.reporter, "refresh");
this.cookieSpy = spyOn(this.reporter, "cookie");
return this.reporter.toggleConfig({
target: {
tagName: "button",
getAttribute: function() {
return "teaspoon-use-catch";
}
}
});
});
it("toggles the configuration", function() {
return expect(this.reporter.config["use-catch"]).toBe(false);
});
it("sets the cookie", function() {
return expect(this.cookieSpy).toHaveBeenCalledWith("teaspoon", this.reporter.config);
});
return it("refreshes the page", function() {
return expect(this.refreshSpy).toHaveBeenCalled();
});
});
});
}).call(this);
; TI"dependency_digest; F"%7147e9502805b0735cf0286af62e32a3I"required_paths; F[I"a/Users/jejacks0n/Projects/teaspoon/spec/javascripts/teaspoon/base/reporters/html_spec.coffee; FI"dependency_paths; F[{I" path; FI"a/Users/jejacks0n/Projects/teaspoon/spec/javascripts/teaspoon/base/reporters/html_spec.coffee; FI"
mtime; FI"2013-06-16T11:48:01-06:00; FI"digest; F"%0d915f3c52a20979a4e283853c7e0bcfI"
_version; F"%f9a10b06158d64a75654a1ef72ec0ff4