Template for Testing with Jasmine

Drop in your code, drop in your Jasmine specs, and away you go!

by ozzon91

HTML

<script src="https://searls.github.io/jasmine-all/jasmine-all-min.js"></script>

CSS

body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }

#HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
#HTMLReporter a { text-decoration: none; }
#HTMLReporter a:hover { text-decoration: underline; }
#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
#HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
#HTMLReporter #jasmine_content { position: fixed; right: 100%; }
#HTMLReporter .version { color: #aaaaaa; }
#HTMLReporter .banner { margin-top: 14px; }
#HTMLReporter .duration { color: #aaaaaa; float: right; }
#HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
#HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
#HTMLReporter .symbolSummary li.passed { font-size: 14px; }
#HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
#HTMLReporter .symbolSummary li.failed { line-height: 9px; }
#HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
#HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
#HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
#HTMLReporter .symbolSummary li.pending { line-height: 11px; }
#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
#HTMLReporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; }
#HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
#HTMLReporter .runningAlert { background-color: #666666; }
#HTMLReporter .skippedAlert...

JavaScript

//--- CODE --------------------------
var foo = 'bar';

function findInArray(source) {
  if (source.length <= 500) {
    // imitate of search
    return new Promise((resolve) => {
      setTimeout(() => {
        var result = [];
        for (var i = 0; i < source.length; ++i) {
          if (source[i] === 'elem_9998' || source[i] === 'elem_9999') {
             result.push(source[i]);
          }
        }
        resolve(result);
      }, 10);
    });
    
  }
  var slices = [];
  for (var s = 0; s < source.length; s += 500) {
  	slices.push(source.slice(s, s + 500));
  }
  return Promise.all(slices.map(findInArray)).then(ars => {
    return Array.prototype.concat.apply([], ars)	
  })
}


var sourceArray = (function(arr) {
	for (var i = 0; i < 10000; ++i) arr.push('elem_' + i);
  return arr;
})([])

//--- SPECS -------------------------
describe("findInArray", function() {
  it("delays search", function() {
   var done=  false;
   
   runs(() => {
      findInArray(sourceArray).then((searchResults) => {
        expect(searchResults).toEqual(['elem_9998', 'elem_9999']);
        done = true;
      })
   });
   waitsFor(() => done);
  });
});