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
*/
load() {
if (this.state == TileState.ERROR) {
this.state = TileState.IDLE;
if (this.state !== TileState.IDLE && this.state !== TileState.ERROR) {
return;
}
if (this.state == TileState.IDLE) {
this.state = TileState.LOADING;
this.changed();
@@ -96,6 +95,5 @@ class DataTile extends Tile {
});
}
}
}
export default DataTile;

View File

@@ -1,7 +1,8 @@
import DataTile from '../../../../src/ol/DataTile.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} */
let loader;
beforeEach(function () {
@@ -42,10 +43,26 @@ describe('ol.DataTile', function () {
expect(tile.getState()).to.be(TileState.IDLE);
tile.load();
expect(tile.getState()).to.be(TileState.LOADING);
setTimeout(() => {
listenOnce(tile, 'change', () => {
expect(tile.getState()).to.be(TileState.LOADED);
done();
});
});
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();
}, 16);
});
});
});
});