UNPKG

este-library-oldschool

Version:

Library for github.com/steida/este.git

217 lines 7.63 kB
// Generated by github.com/steida/coffee2closure 900.1.18 suite('este.labs.app.LastWinUrlLoader', function() { var LastWinUrlLoader, incrementLoadCall, load, loadCalled, loadFail, loader; LastWinUrlLoader = este.labs.app.LastWinUrlLoader; loader = null; loadCalled = null; setup(function() { loader = new LastWinUrlLoader; return loadCalled = {}; }); load = function(url, opt_delay) { return loader.load(url, function() { incrementLoadCall(url); return new goog.Promise(function(fulfill, reject) { if (opt_delay != null) { return setTimeout((function() { return fulfill(url); }), opt_delay); } else { return fulfill(url); } }); }); }; loadFail = function(url, opt_delay) { return loader.load(url, function() { incrementLoadCall(url); return new goog.Promise(function(fulfill, reject) { if (opt_delay != null) { return setTimeout((function() { return reject(url); }), opt_delay); } else { return reject(url); } }); }); }; incrementLoadCall = function(url) { if (loadCalled[url] == null) { loadCalled[url] = 0; } return loadCalled[url]++; }; suite('load url1', function() { return test('should call load and return its promise', function(done) { return load('url1').then(function(value) { assert.equal(value, 'url1'); assert.equal(loadCalled.url1, 1); return done(); }); }); }); suite('loadFail url1', function() { return test('should reject url1 with reason as LastWinUrlLoader.Error', function(done) { return loadFail('url1').then(null, function(error) { assert.instanceOf(error, este.labs.app.LastWinUrlLoader.Error); assert.equal(error.reason, 'url1'); assert.isFalse(error.isSilent, 'url1'); assert.equal(loadCalled.url1, 1); return done(); }); }); }); suite('load url1 then url2 before url1 is done', function() { return test('should cancel url1 with abort message', function(done) { var url1Reject; url1Reject = sinon.spy(); load('url1', 20).then(null, url1Reject); return load('url2', 10).then(function(value) { assert.equal(url1Reject.args[0][0].message, 'abort'); return done(); }); }); }); suite('loadFail url1 then url2 before url1 is done', function() { return test('should reject url1 as silent LastWinUrlLoader.Error', function(done) { loadFail('url1', 20).then(null, function(error) { assert.equal(error.message, 'abort'); return done(); }); return load('url2', 10); }); }); suite('load url1 then url2 after url1 is done', function() { return test('should cancel url1 with abort message', function(done) { var url1Reject; url1Reject = sinon.spy(); load('url1', 10).then(null, url1Reject); return load('url2', 20).then(function(value) { assert.equal(url1Reject.args[0][0].message, 'abort'); return done(); }); }); }); suite('loadFail url1 then url2 after url1 is done', function() { return test('should reject url1 as silent LastWinUrlLoader.Error', function(done) { loadFail('url1', 10).then(null, function(error) { assert.instanceOf(error, este.labs.app.LastWinUrlLoader.Error); assert.equal(error.reason, 'url1'); assert.isTrue(error.isSilent, 'url1'); return done(); }); return load('url2', 20); }); }); suite('load url1 and after finish load url2', function() { return test('should resolve both url1 and url2', function(done) { var url1Fulfill; url1Fulfill = sinon.spy(); load('url1', 10).then(url1Fulfill); return setTimeout(function() { return load('url2', 10).then(function(value) { assert.equal(url1Fulfill.args[0], 'url1'); assert.equal(value, 'url2'); return done(); }); }, 20); }); }); suite('loadFail url1 and after finish load url2', function() { return test('should resolve both url1 and url2', function(done) { var url1Fulfill; url1Fulfill = sinon.spy(); loadFail('url1', 10).then(null, url1Fulfill); return setTimeout(function() { return load('url2', 10).then(function(value) { assert.isTrue(url1Fulfill.called); assert.equal(url1Fulfill.args[0][0].reason, 'url1'); assert.isFalse(url1Fulfill.args[0][0].isSilent); assert.equal(value, 'url2'); return done(); }); }, 20); }); }); suite('load url1 twice before first is done', function() { test('should call load method just once', function() { load('url1', 20); load('url1', 1); return assert.equal(loadCalled.url1, 1); }); return test('should cancel second load with pending message', function(done) { var url1Reject; url1Reject = sinon.spy(); load('url1', 20).then(function(value) { assert.equal(url1Reject.args[0][0].message, 'pending'); return done(); }); return load('url1', 1).then(null, url1Reject); }); }); suite('load url1 twice after first is done', function() { return test('should call load method twice', function(done) { load('url1', 10); return setTimeout(function() { return load('url1').then(function(value) { assert.equal(loadCalled.url1, 2); return done(); }); }, 20); }); }); suite('load url1 then url2 then url3 before url1 and url2 are finished', function() { return test('should resolve url3 and reject url1 and url2 as cancelled with abort', function(done) { var url1Reject, url2Reject; url1Reject = sinon.spy(); url2Reject = sinon.spy(); load('url1').then(null, url1Reject); load('url2').then(null, url2Reject); return load('url3').then(function(value) { assert.equal(url2Reject.args[0][0].message, 'abort'); assert.equal(url2Reject.args[0][0].message, 'abort'); return done(); }); }); }); suite('load url1 then loadFail url2 before url1 is done', function() { return test('should cancel url1 with abort', function(done) { var url1Reject; url1Reject = sinon.spy(); load('url1', 20).then(null, url1Reject); return loadFail('url2').then(null, function(error) { assert.equal(url1Reject.args[0][0].message, 'abort'); return done(); }); }); }); return suite('timeout', function() { test('should cancel everything with timeout message', function(done) { var url1Reject, url2Reject, url3Reject; loader.timeoutMs = 10; url1Reject = sinon.spy(); url2Reject = sinon.spy(); url3Reject = sinon.spy(); load('url1', 40).then(null, url1Reject); load('url2', 40).then(null, url2Reject); load('url3', 40).then(null, url3Reject); return setTimeout(function() { assert.equal(url1Reject.args[0][0].message, 'timeout'); assert.equal(url2Reject.args[0][0].message, 'timeout'); assert.equal(url3Reject.args[0][0].message, 'timeout'); return done(); }, 20); }); return test('should be clearTimeouted after load is done', function(done) { loader.timeoutMs = 40; load('url1', 10); return setTimeout(function() { return load('url1', 30).then(function(value) { assert.equal(value, 'url1'); return done(); }); }, 20); }); }); });