const assert = require('chai').assert; import { FilterParams } from "pip-services3-commons-nodex"; import { FireMapTileBlockV1, FireMapTileV1 } from "../../src/data/version1"; import { IFireMapPersistence } from "../../src/persistence/IFireMapPersistence"; let tile1: FireMapTileV1 = { id: 'DO00FF00AA', flng: -120, flat: 51, tlng: -118, tlat: 50, smoke: new Date(), sdrone: 'post 1', zoom: 3, }; let BLOCK1: FireMapTileBlockV1 = { id: 'DO00AA00AA', zoom: 3, flat: 51, flng: -120, tlat: 50, tlng: -118, tiles: { [tile1.id]: Object.assign({}, tile1) } }; let tile2: FireMapTileV1 = { id: 'DO05RR00AA', flng: -120, flat: 56, tlng: -118, tlat: 55, smoke: new Date(), sdrone: 'post 2', zoom: 3 }; let BLOCK2: FireMapTileBlockV1 = { id: 'DO05AA00AA', zoom: 3, flat: 56, flng: -120, tlat: 55, tlng: -118, tiles: { [tile2.id]: Object.assign({}, tile2) } }; export class FireMapPersistenceFixture { private _persistence: IFireMapPersistence; public constructor(persistence: IFireMapPersistence) { assert.isNotNull(persistence); this._persistence = persistence; } public async testCrudOperations(): Promise { // create blocks await this._persistence.updateTileBlocks(null, [BLOCK1, BLOCK2]); let page = await this._persistence.getTileBlocksByFilter(null, null, null); assert.equal(page.data.length, 2); let block1: FireMapTileBlockV1 = page.data[0]; let block2: FireMapTileBlockV1 = page.data[1]; assert.equal(BLOCK1.id, block1.id); assert.equal(BLOCK1.zoom, block1.zoom); assert.equal(BLOCK1.flat, block1.flat); assert.equal(BLOCK1.flng, block1.flng); assert.equal(BLOCK1.tlat, block1.tlat); assert.equal(BLOCK1.tlng, block1.tlng); assert.isTrue(Object.keys(BLOCK1.tiles).length == Object.keys(block1.tiles).length); assert.equal(BLOCK2.id, block2.id); assert.equal(BLOCK2.zoom, block2.zoom); assert.equal(BLOCK2.flat, block2.flat); assert.equal(BLOCK2.flng, block2.flng); assert.equal(BLOCK2.tlat, block2.tlat); assert.equal(BLOCK2.tlng, block2.tlng); assert.isTrue(Object.keys(BLOCK2.tiles).length == Object.keys(block2.tiles).length); block2.zoom = 2; block2.tiles['DO05RR00AA'].people_count = 30; // update blocks await this._persistence.updateTileBlocks(null, [block1, block2]); // get with filters page = await this._persistence.getTileBlocksByFilter(null, FilterParams.fromTuples('zoom', 2), null); assert.equal(page.data.length, 1); block2 = page.data[0]; assert.equal(BLOCK2.id, block2.id); assert.equal(block2.zoom, 2); assert.equal(BLOCK2.flat, block2.flat); assert.equal(BLOCK2.flng, block2.flng); assert.equal(BLOCK2.tlat, block2.tlat); assert.equal(BLOCK2.tlng, block2.tlng); assert.equal(block2.tiles['DO05RR00AA'].people_count, 30); } }