diff options
Diffstat (limited to 'src/scenario/HtmlUI.js')
| -rw-r--r-- | src/scenario/HtmlUI.js | 244 |
1 files changed, 0 insertions, 244 deletions
diff --git a/src/scenario/HtmlUI.js b/src/scenario/HtmlUI.js deleted file mode 100644 index 78fe8c33..00000000 --- a/src/scenario/HtmlUI.js +++ /dev/null @@ -1,244 +0,0 @@ -/** - * User Interface for the Scenario Runner. - * - * @param {Object} The jQuery UI object for the UI. - */ -angular.scenario.ui.Html = function(context) { - this.context = context; - context.append( - '<div id="header">' + - ' <h1><span class="angular"><angular/></span>: Scenario Test Runner</h1>' + - ' <ul id="status-legend" class="status-display">' + - ' <li class="status-error">0 Errors</li>' + - ' <li class="status-failure">0 Failures</li>' + - ' <li class="status-success">0 Passed</li>' + - ' </ul>' + - '</div>' + - '<div id="specs">' + - ' <div class="test-children"></div>' + - '</div>' - ); -}; - -/** - * The severity order of an error. - */ -angular.scenario.ui.Html.SEVERITY = ['pending', 'success', 'failure', 'error']; - -/** - * Adds a new spec to the UI. - * - * @param {Object} The spec object created by the Describe object. - */ -angular.scenario.ui.Html.prototype.addSpec = function(spec) { - var self = this; - var specContext = this.findContext(spec.definition); - specContext.find('> .tests').append( - '<li class="status-pending test-it"></li>' - ); - specContext = specContext.find('> .tests li:last'); - return new angular.scenario.ui.Html.Spec(specContext, spec.name, - function(status) { - status = self.context.find('#status-legend .status-' + status); - var parts = status.text().split(' '); - var value = (parts[0] * 1) + 1; - status.text(value + ' ' + parts[1]); - } - ); -}; - -/** - * Finds the context of a spec block defined by the passed definition. - * - * @param {Object} The definition created by the Describe object. - */ -angular.scenario.ui.Html.prototype.findContext = function(definition) { - var self = this; - var path = []; - var currentContext = this.context.find('#specs'); - var currentDefinition = definition; - while (currentDefinition && currentDefinition.name) { - path.unshift(currentDefinition); - currentDefinition = currentDefinition.parent; - } - angular.foreach(path, function(defn) { - var id = 'describe-' + defn.id; - if (!self.context.find('#' + id).length) { - currentContext.find('> .test-children').append( - '<div class="test-describe" id="' + id + '">' + - ' <h2></h2>' + - ' <div class="test-children"></div>' + - ' <ul class="tests"></ul>' + - '</div>' - ); - self.context.find('#' + id).find('> h2').text('describe: ' + defn.name); - } - currentContext = self.context.find('#' + id); - }); - return this.context.find('#describe-' + definition.id); -}; - -/** - * A spec block in the UI. - * - * @param {Object} The jQuery object for the context of the spec. - * @param {String} The name of the spec. - * @param {Function} Callback function(status) to call when complete. - */ -angular.scenario.ui.Html.Spec = function(context, name, doneFn) { - this.status = 'pending'; - this.context = context; - this.startTime = new Date().getTime(); - this.doneFn = doneFn; - context.append( - '<div class="test-info">' + - ' <p class="test-title">' + - ' <span class="timer-result"></span>' + - ' <span class="test-name"></span>' + - ' </p>' + - '</div>' + - '<div class="scrollpane">' + - ' <ol class="test-actions">' + - ' </ol>' + - '</div>' - ); - context.find('> .test-info').click(function() { - var scrollpane = context.find('> .scrollpane'); - var actions = scrollpane.find('> .test-actions'); - var name = context.find('> .test-info .test-name'); - if (actions.find(':visible').length) { - actions.hide(); - name.removeClass('open').addClass('closed'); - } else { - actions.show(); - scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight')); - name.removeClass('closed').addClass('open'); - } - }); - context.find('> .test-info .test-name').text('it ' + name); -}; - -/** - * Adds a new Step to this spec and returns it. - * - * @param {String} The name of the step. - * @param {Function} function() that returns a string with the file/line number - * where the step was added from. - */ -angular.scenario.ui.Html.Spec.prototype.addStep = function(name, location) { - this.context.find('> .scrollpane .test-actions').append('<li class="status-pending"></li>'); - var stepContext = this.context.find('> .scrollpane .test-actions li:last'); - var self = this; - return new angular.scenario.ui.Html.Step(stepContext, name, location, function(status) { - if (indexOf(angular.scenario.ui.Html.SEVERITY, status) > - indexOf(angular.scenario.ui.Html.SEVERITY, self.status)) { - self.status = status; - } - var scrollpane = self.context.find('> .scrollpane'); - scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight')); - }); -}; - -/** - * Completes the spec and sets the timer value. - */ -angular.scenario.ui.Html.Spec.prototype.complete = function() { - this.context.removeClass('status-pending'); - var endTime = new Date().getTime(); - this.context.find("> .test-info .timer-result"). - text((endTime - this.startTime) + "ms"); - if (this.status === 'success') { - this.context.find('> .test-info .test-name').addClass('closed'); - this.context.find('> .scrollpane .test-actions').hide(); - } -}; - -/** - * Finishes the spec, possibly with an error. - * - * @param {Object} An optional error - */ -angular.scenario.ui.Html.Spec.prototype.finish = function() { - this.complete(); - this.context.addClass('status-' + this.status); - this.doneFn(this.status); -}; - -/** - * Finishes the spec, but with a Fatal Error. - * - * @param {Object} Required error - */ -angular.scenario.ui.Html.Spec.prototype.error = function(error) { - this.status = 'error'; - this.context.append('<pre></pre>'); - this.context.find('> pre').text(formatException(error)); - this.finish(); -}; - -/** - * A single step inside an it block (or a before/after function). - * - * @param {Object} The jQuery object for the context of the step. - * @param {String} The name of the step. - * @param {Function} function() that returns file/line number of step. - * @param {Function} Callback function(status) to call when complete. - */ -angular.scenario.ui.Html.Step = function(context, name, location, doneFn) { - this.context = context; - this.name = name; - this.location = location; - this.startTime = new Date().getTime(); - this.doneFn = doneFn; - context.append( - '<div class="timer-result"></div>' + - '<div class="test-title"></div>' - ); - context.find('> .test-title').text(name); - var scrollpane = context.parents('.scrollpane'); - scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight')); -}; - -/** - * Completes the step and sets the timer value. - */ -angular.scenario.ui.Html.Step.prototype.complete = function(error) { - this.context.removeClass('status-pending'); - var endTime = new Date().getTime(); - this.context.find(".timer-result"). - text((endTime - this.startTime) + "ms"); - if (error) { - if (!this.context.find('.test-title pre').length) { - this.context.find('.test-title').append('<pre></pre>'); - } - var message = _jQuery.trim(this.location() + '\n\n' + formatException(error)); - this.context.find('.test-title pre').text(message); - } -}; - -/** - * Finishes the step, possibly with an error. - * - * @param {Object} An optional error - */ -angular.scenario.ui.Html.Step.prototype.finish = function(error) { - this.complete(error); - if (error) { - this.context.addClass('status-failure'); - this.doneFn('failure'); - } else { - this.context.addClass('status-success'); - this.doneFn('success'); - } -}; - -/** - * Finishes the step, but with a Fatal Error. - * - * @param {Object} Required error - */ -angular.scenario.ui.Html.Step.prototype.error = function(error) { - this.complete(error); - this.context.addClass('status-error'); - this.doneFn('error'); -}; |
