Organize tests
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import {getUid} from '../../../../src/ol/util.js';
|
||||
import {jsonp as requestJSONP} from '../../../../src/ol/net.js';
|
||||
|
||||
describe('ol.net', function () {
|
||||
describe('jsonp()', function () {
|
||||
const head = document.getElementsByTagName('head')[0];
|
||||
const origAppendChild = head.appendChild;
|
||||
const origCreateElement = document.createElement;
|
||||
const origSetTimeout = setTimeout;
|
||||
let key, removeChild;
|
||||
|
||||
function createCallback(url, done) {
|
||||
removeChild = sinon.spy();
|
||||
const callback = function (data) {
|
||||
expect(data).to.be(url + key);
|
||||
expect(removeChild.called).to.be(true);
|
||||
done();
|
||||
};
|
||||
key = 'olc_' + getUid(callback);
|
||||
return callback;
|
||||
}
|
||||
|
||||
beforeEach(function () {
|
||||
const element = {};
|
||||
document.createElement = function (arg) {
|
||||
if (arg == 'script') {
|
||||
return element;
|
||||
} else {
|
||||
return origCreateElement.apply(document, arguments);
|
||||
}
|
||||
};
|
||||
head.appendChild = function (el) {
|
||||
if (el === element) {
|
||||
element.parentNode = {
|
||||
removeChild: removeChild,
|
||||
};
|
||||
origSetTimeout(function () {
|
||||
window[key](element.src);
|
||||
}, 0);
|
||||
} else {
|
||||
origAppendChild.apply(head, arguments);
|
||||
}
|
||||
};
|
||||
setTimeout = function (fn, time) {
|
||||
origSetTimeout(fn, 100);
|
||||
};
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
document.createElement = origCreateElement;
|
||||
head.appendChild = origAppendChild;
|
||||
setTimeout = origSetTimeout;
|
||||
});
|
||||
|
||||
it('appends callback param to url, cleans up after call', function (done) {
|
||||
requestJSONP('foo', createCallback('foo?callback=', done));
|
||||
});
|
||||
it('appends correct callback param to a url with query', function (done) {
|
||||
const callback = createCallback('http://foo/bar?baz&callback=', done);
|
||||
requestJSONP('http://foo/bar?baz', callback);
|
||||
});
|
||||
it('calls errback when jsonp is not executed, cleans up', function (done) {
|
||||
head.appendChild = function (element) {
|
||||
element.parentNode = {
|
||||
removeChild: removeChild,
|
||||
};
|
||||
};
|
||||
function callback() {
|
||||
expect().fail();
|
||||
}
|
||||
function errback() {
|
||||
expect(window[key]).to.be(undefined);
|
||||
expect(removeChild.called).to.be(true);
|
||||
done();
|
||||
}
|
||||
requestJSONP('foo', callback, errback);
|
||||
});
|
||||
it('accepts a custom callback param', function (done) {
|
||||
const callback = createCallback('foo?mycallback=', done);
|
||||
requestJSONP('foo', callback, undefined, 'mycallback');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user