/** * @class ExtMVC.test.JSpecFormatter * @extends Object * A JSpec formatter which can be used to extract failure data from JSpec */ ExtMVC.test.JSpecFormatter = Ext.extend(Object, { constructor: function(results, options) { this.suites = results.suites; }, /** * Returns an array of all failing Spec objects for all suites */ getFailingSpecs: function(suites) { var suites = suites || this.suites; var failures = []; Ext.each(suites, function(suite) { failures = failures.concat(this.getFailuresForSuite(suite)); if (suite.hasSuites()) { failures = failures.concat(this.getFailingSpecs(suite.suites)); } }, this); return failures; }, /** * Returns an array of failing Spec objects for a given suite */ getFailuresForSuite: function(suite) { if (suite.ran && suite.passed()) { return []; } else { var failures = []; Ext.each(suite.specs, function(spec) { if (!spec.passed()) { Ext.apply(spec, { code: this.bodyContents(spec.body) }); failures.push(spec); } }, this); return failures; } }, bodyContents: function(body) { return JSpec. escape(JSpec.contentsOf(body)). replace(/^ */gm, function(a){ return (new Array(Math.round(a.length / 3))).join(' '); }). replace("\n", '
'); } }); // DOM : function(results, options) { // var id = option('reportToId') || 'jspec' // var report = document.getElementById(id) // var failuresOnly = option('failuresOnly') // var classes = results.stats.failures ? 'has-failures' : '' // if (!report) throw 'JSpec requires the element #' + id + ' to output its reports' // // var markup = // '
\ // Passes: ' + results.stats.passes + ' \ // Failures: ' + results.stats.failures + ' \ //
' // // bodyContents = function(body) { // return JSpec. // escape(JSpec.contentsOf(body)). // replace(/^ */gm, function(a){ return (new Array(Math.round(a.length / 3))).join(' ') }). // replace("\n", '
') // } // // renderSuite = function(suite) { // var displaySuite = failuresOnly ? suite.ran && !suite.passed() : suite.ran // if (displaySuite && suite.hasSpecs()) { // markup += '' // each(suite.specs, function(i, spec){ // markup += '' // if (spec.requiresImplementation()) // markup += '' // else if (spec.passed() && !failuresOnly) // markup += '' // else if(!spec.passed()) // markup += '' // markup += '' // }) // markup += '' // } // } // // renderSuites = function(suites) { // each(suites, function(suite){ // renderSuite(suite) // if (suite.hasSuites()) renderSuites(suite.suites) // }) // } // // renderSuites(results.suites) // markup += '
' + escape(suite.description) + '
' + escape(spec.description) + '' + escape(spec.description)+ '' + spec.assertionsGraph() + '' + escape(spec.description) + ' ' + spec.failure().message + '' + '' + spec.assertionsGraph() + '
' + bodyContents(spec.body) + '
' // report.innerHTML = markup // },