let assert = require('chai').assert; import { IdGenerator, RandomArray, RandomFloat, RandomInteger } from 'pip-services3-commons-nodex'; import { FireMapUpdateTypeV1 } from '../../src/version1/FireMapUpdateTypeV1'; import { FireMapUpdateV1 } from '../../src/version1/FireMapUpdateV1'; import { FireMapZoomV1 } from '../../src/version1/FireMapZoomV1'; import { IFireMapClientV1 } from '../../src/version1/IFireMapClientV1'; import { LocationV1 } from '../../src/version1/LocationV1'; export class FireMapClientFixture { private _client: IFireMapClientV1; public constructor(client: IFireMapClientV1) { assert.isNotNull(client); this._client = client; } public async testGetAndUpdateTiles() { // generate updates let updates: FireMapUpdateV1[] = []; for (let i=0; i < 10; i++) { updates.push( { type: RandomArray.pick(Object.values(FireMapUpdateTypeV1)), time: new Date(), drone_id: IdGenerator.nextLong(), long: RandomFloat.nextFloat(-180, 180), lat: RandomFloat.nextFloat(-90, 90), people: RandomInteger.nextInteger(0, 15) } ); } // Create tiles await this._client.updateTiles(null, updates); let tiles = await this._client.getTiles(null, null, null, FireMapZoomV1.Zoom50km); assert.isNotNull(tiles); assert.isTrue(tiles.length > 1); // Test filters let from: LocationV1 = {lat: -10, long: -50}; let to: LocationV1 = {lat: 45, long: 50}; tiles = await this._client.getTiles(null, from, to, FireMapZoomV1.Zoom20km); for (let tile of tiles) { assert.equal(tile.zoom, FireMapZoomV1.Zoom20km); assert.equal(tile.zoom, FireMapZoomV1.Zoom20km); assert.isTrue(from.lat <= tile.flat && tile.flat <= to.lat); assert.isTrue(from.long <= tile.flng && tile.flng <= to.long); assert.isTrue(from.lat <= tile.tlat && tile.tlat <= to.lat); assert.isTrue(from.long <= tile.tlng && tile.tlng <= to.long); } // update created tile let update = updates[0]; update.people = 150; update.time = new Date(); update.drone_id = IdGenerator.nextLong(); update.type = FireMapUpdateTypeV1.Fire; await this._client.updateTiles(null, [update]); tiles = await this._client.getTiles(null, { lat: update.lat - 5, long: update.long - 5 }, { lat: update.lat + 5, long: update.long + 5 }, FireMapZoomV1.Zoom50m ); let tile = tiles.find(t => t.fdrone == update.drone_id); assert.equal(tile.fdrone, update.drone_id); assert.equal(tile.people_count, update.people); } }