Files
openlayers/test/spec/ol/net.test.js
Tim Schaub 054af09032 Make code prettier
This updates ESLint and our shared eslint-config-openlayers to use Prettier.  Most formatting changes were automatically applied with this:

    npm run lint -- --fix

A few manual changes were required:

 * In `examples/offscreen-canvas.js`, the `//eslint-disable-line` comment needed to be moved to the appropriate line to disable the error about the `'worker-loader!./offscreen-canvas.worker.js'` import.
 * In `examples/webpack/exapmle-builder.js`, spaces could not be added after a couple `function`s for some reason.  While editing this, I reworked `ExampleBuilder` to be a class.
 * In `src/ol/format/WMSGetFeatureInfo.js`, the `// @ts-ignore` comment needed to be moved down one line so it applied to the `parsersNS` argument.
2020-04-06 12:54:09 -06:00

84 lines
2.5 KiB
JavaScript

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');
});
});
});