Test that data tiles can be loaded after error

This commit is contained in:
Tim Schaub
2022-04-27 14:50:33 -06:00
parent 0ef7c40b8e
commit 5084d5566a
2 changed files with 36 additions and 21 deletions

View File

@@ -75,10 +75,9 @@ class DataTile extends Tile {
* @api * @api
*/ */
load() { load() {
if (this.state == TileState.ERROR) { if (this.state !== TileState.IDLE && this.state !== TileState.ERROR) {
this.state = TileState.IDLE; return;
} }
if (this.state == TileState.IDLE) {
this.state = TileState.LOADING; this.state = TileState.LOADING;
this.changed(); this.changed();
@@ -95,7 +94,6 @@ class DataTile extends Tile {
self.changed(); self.changed();
}); });
} }
}
} }
export default DataTile; export default DataTile;

View File

@@ -1,7 +1,8 @@
import DataTile from '../../../../src/ol/DataTile.js'; import DataTile from '../../../../src/ol/DataTile.js';
import TileState from '../../../../src/ol/TileState.js'; import TileState from '../../../../src/ol/TileState.js';
import {listenOnce} from '../../../../src/ol/events.js';
describe('ol.DataTile', function () { describe('ol/DataTile', function () {
/** @type {Promise<import('../../../../src/ol/DataTile.js').Data} */ /** @type {Promise<import('../../../../src/ol/DataTile.js').Data} */
let loader; let loader;
beforeEach(function () { beforeEach(function () {
@@ -42,10 +43,26 @@ describe('ol.DataTile', function () {
expect(tile.getState()).to.be(TileState.IDLE); expect(tile.getState()).to.be(TileState.IDLE);
tile.load(); tile.load();
expect(tile.getState()).to.be(TileState.LOADING); expect(tile.getState()).to.be(TileState.LOADING);
setTimeout(() => { listenOnce(tile, 'change', () => {
expect(tile.getState()).to.be(TileState.LOADED); expect(tile.getState()).to.be(TileState.LOADED);
done(); done();
}, 16); });
});
it('reloads tiles in an error state', function (done) {
const tileCoord = [0, 0, 0];
const tile = new DataTile({
tileCoord: tileCoord,
loader: loader,
});
tile.state = TileState.ERROR;
tile.load();
expect(tile.getState()).to.be(TileState.LOADING);
listenOnce(tile, 'change', () => {
expect(tile.getState()).to.be(TileState.LOADED);
done();
});
}); });
}); });
}); });