abepetrillo/evergreen

View on GitHub
lib/evergreen/resources/list.js

Summary

Maintainability
A
0 mins
Test Coverage
var Evergreen = {};

Evergreen.Spec = function(element) {
  var self = this;
  this.element = $(element);
  this.runLink = this.element.find('.run');
  this.runLink.click(function() {
    self.run()
    return false;
  });
}

Evergreen.Spec.prototype.run = function() {
  var self = this
  this.iframe = $('<iframe></iframe>').attr('src', this.runLink.attr('href')).appendTo(this.element)
  this.iframe.css({ position: 'absolute', left: '-20000px' });
  this.runLink.addClass('running').text('Running…');
  $(this.iframe).load(function() {
    var context = self.iframe.get(0).contentWindow;
    var evergreen = context.Evergreen;
    if(evergreen.done) {
      self.done(evergreen.results);
    } else {
      evergreen.onDone = function() {
        self.done(evergreen.results);
      }
    }
  });
}

Evergreen.Spec.prototype.done = function(results) {
  var failed = []
  $.each(results, function() {
    if(!this.passed) { failed.push(this); }
  });

  this.runLink.removeClass('running');

  if(failed.length) {
    this.runLink.addClass('fail').removeClass('pass').text('Fail')
  } else {
    this.runLink.addClass('pass').removeClass('fail').text('Pass')
  }
  this.iframe.remove();
}

$(function() {
  $('#specs li, #all').each(function() {
    new Evergreen.Spec(this)
  });
});