First Mocha Test

simple tests with Mocha and Chai

by Aides

HTML

<link rel="stylesheet" href="https://s3.amazonaws.com/kiddsoftware-jsfiddle/mocha-1.9.0.css">
<script src="https://s3.amazonaws.com/kiddsoftware-jsfiddle/mocha-1.9.0.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sinon.js/1.15.4/sinon.min.js"></script>
<script src="https://s3.amazonaws.com/kiddsoftware-jsfiddle/chai-jquery.js"></script>
<script src="	 https://s3.amazonaws.com/kiddsoftware-jsfiddle/chai-1.5.0.js"></script>
<!-- Mocha test output goes here. -->
<div><p>First Line</p></div>
<div><p>Second Line</p></div>

<div id="mocha"></div>

CSS

p {
    padding: 0;
    margin: 0;
}

div:nth-child(1) > p { 
    color: green;
}

div::nth-child(2) > p { 
    color: blue;
}

JavaScript

requirejs.config({
    'paths': {
    		'chai': 'https://s3.amazonaws.com/kiddsoftware-jsfiddle/chai-1.5.0.js',
        'chai-as-promised': 'https://rawgit.com/domenic/chai-as-promised/v5.3.0/lib/chai-as-promised'
    }
});

require(['chai-as-promised'], function(chaiAsPromised) {
	// Configure Mocha, telling both it and chai to use BDD-style tests. 
  mocha.setup("bdd");
  expect = chai.expect;
	chai.use(chaiAsPromised);
  
  describe('Promise.race()', function(){
      it('should return the first promise resolving/rejecting', function(){
          var racingAdapters = [
              { find: function() {} },
              { find: function() {} },
              { find: function() {} }
          ];
          var adapterSpys = [
              sinon.stub(racingAdapters[0], 'find', function() {
                  return new Promise(function(resolve, reject) {
                      setTimeout(resolve, 1200, 'second');
                  })
              }),
              sinon.stub(racingAdapters[1], 'find', function() {
                  return new Promise(function(resolve, reject) {
                      setTimeout(resolve, 1000, 'first');
                  })
              }),
              sinon.stub(racingAdapters[2], 'find', function() {
                  return new Promise(function(resolve, reject) {
                      setTimeout(resolve, 1500, 'third');
                  })
              })
          ];

          var response = Promise.all(racingAdapters);

          return expect(response).to.eventually.equal('first');
      });
    });

  // Run all our test suites.  Only necessary in the browser.
  mocha.run();
});