| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | (function() {  if (typeof process === 'object') {    require('mocha-jsdom')();  }  var root = this;  var assert = (root.chai || require('chai')).assert;  describe('NProgress', function() {    var $, NProgress;    beforeEach(function() {      $ = root.jQuery || require('jquery');      NProgress = root.NProgress || require('../nprogress');      this.settings = $.extend({}, NProgress.settings);    });    afterEach(function() {      $("#nprogress").remove();      $('html').attr('class', '');      NProgress.status = null;      // Restore settings      $.extend(NProgress.settings, this.settings);    });    describe('.set()', function() {      it('.set(0) must render', function(done) {        NProgress.set(0);        assert.equal($("#nprogress").length, 1);        assert.equal($("#nprogress .bar").length, 1);        assert.equal($("#nprogress .peg").length, 1);        assert.equal($("#nprogress .spinner").length, 1);        done();      });      it('.set(1) should appear and disappear', function(done) {        NProgress.configure({ speed: 10 });        NProgress.set(0).set(1);        assert.equal($("#nprogress").length, 1);        setTimeout(function() {          assert.equal($("#nprogress").length, 0);          done();        }, 70);      });      it('must respect minimum', function() {        NProgress.set(0);        assert.equal(NProgress.status, NProgress.settings.minimum);      });      it('must clamp to minimum', function() {        NProgress.set(-100);        assert.equal(NProgress.status, NProgress.settings.minimum);      });      it('must clamp to maximum', function() {        NProgress.set(456);        assert.equal(NProgress.status, null);      });    });    // ----    describe('.start()', function() {      it('must render', function(done) {        NProgress.start();        assert.equal($("#nprogress").length, 1);        done();      });      it('must respect minimum', function() {        NProgress.start();        assert.equal(NProgress.status, NProgress.settings.minimum);      });      it('must be attached to specified parent', function() {        var test = $('<div>', {id: 'test'}).appendTo('body');        NProgress.configure({parent: '#test'});        NProgress.start();        assert.isTrue($("#nprogress").parent().is(test));        assert.isTrue($(NProgress.settings.parent).hasClass("nprogress-custom-parent"));      });    });    // ----    describe('.done()', function() {      it('must not render without start', function(done) {        NProgress.done();        assert.equal($("#nprogress").length, 0);        done();      });      it('.done(true) must render', function(done) {        NProgress.done(true);        assert.equal($("#nprogress").length, 1);        done();      });    });    // ----    describe('.remove()', function() {      it('should be removed from the parent', function() {        NProgress.set(1);        NProgress.remove();        var parent = $(NProgress.settings.parent);        assert.isFalse(parent.hasClass('nprogress-custom-parent'));        assert.equal(parent.find('#nprogress').length, 0);      });    });    // ----    describe('.inc()', function() {      it('should render', function() {        NProgress.inc();        assert.equal($("#nprogress").length, 1);      });      it('should start with minimum', function() {        NProgress.inc();        assert.equal(NProgress.status, NProgress.settings.minimum);      });      it('should increment', function() {        NProgress.start();        var start = NProgress.status;        NProgress.inc();        assert.operator(NProgress.status, '>', start);      });      it('should never reach 1.0', function() {        for (var i=0; i<100; ++i) { NProgress.inc(); }        assert.operator(NProgress.status, '<', 1.0);      });    });    // -----    describe('.configure()', function() {      it('should work', function() {        NProgress.configure({ minimum: 0.5 });        assert.equal(NProgress.settings.minimum, 0.5);      });    });    // ----    describe('.configure(showSpinner)', function() {      it('should render spinner by default', function() {        NProgress.start();        assert.equal($("#nprogress .spinner").length, 1);      });      it('should be true by default', function() {        assert.equal(NProgress.settings.showSpinner, true);      });      it('should hide (on false)', function() {        NProgress.configure({ showSpinner: false });        NProgress.start();        assert.equal($("#nprogress .spinner").length, 0);      });    });  });})();
 |