Files
node-mbtiles/test/geocoder.test.js

123 lines
3.4 KiB
JavaScript

var fs = require('fs');
var assert = require('assert');
var util = require('util');
var MBTiles = require('..');
describe('geocoder (carmen) API', function() {
var expected = {
bounds: '-141.005548666451,41.6690855919108,-52.615930948992,83.1161164353916',
lat: 56.8354595949484,
lon: -110.424643384994,
name: 'Canada',
population: 33487208,
search: 'Canada, CA'
};
var tmp = '/tmp/mbtiles-test-' + (+new Date).toString(16);
var index;
var from;
var to;
before(function() {
try { fs.mkdirSync(tmp); } catch(err) { throw err; }
});
before(function(done) {
index = new MBTiles(__dirname + '/fixtures/geocoder_data.mbtiles', done);
});
before(function(done) {
from = new MBTiles(__dirname + '/fixtures/geocoder_legacy.mbtiles', done);
});
before(function(done) {
to = new MBTiles(tmp + '/indexed.mbtiles', done);
});
after(function(done) {
this.timeout(5000);
index.close(function(err) {
if (err) throw err;
from.close(function(err) {
if (err) throw err;
to.close(function(err) {
if (err) throw err;
try { fs.unlinkSync(tmp + '/indexed.mbtiles'); } catch(err) { throw err; }
try { fs.rmdirSync(tmp); } catch(err) { throw err; }
done();
});
});
});
});
it('getGeocoderData', function(done) {
index.getGeocoderData('term', 0, function(err, buffer) {
assert.ifError(err);
assert.equal(3891, buffer.length);
done();
});
});
it('putGeocoderData', function(done) {
this.timeout(5000);
to.startWriting(function(err) {
assert.ifError(err);
to.putGeocoderData('term', 0, new Buffer('asdf'), function(err) {
assert.ifError(err);
to.stopWriting(function(err) {
assert.ifError(err);
to.getGeocoderData('term', 0, function(err, buffer) {
assert.ifError(err);
assert.deepEqual('asdf', buffer.toString());
done();
});
});
});
});
});
it('getIndexableDocs', function(done) {
from.getIndexableDocs({ limit: 10 }, function(err, docs, pointer) {
assert.ifError(err);
assert.equal(docs.length, 10);
assert.deepEqual(pointer, { limit: 10, offset: 10, nogrids: false });
assert.deepEqual(docs[0], {
AREA: 0,
FIPS: 'AA',
ISO2: 'AW',
ISO3: 'ABW',
name: 'Aruba',
POP2005: 102897,
REGION: 19,
SUBREGION: 29,
UN: 533,
_id: 'ABW',
_text: 'Aruba',
_zxy: [ '4/4/7' ],
_center: [ -69.977, 12.517 ]
});
from.getIndexableDocs(pointer, function(err, docs, pointer) {
assert.ifError(err);
assert.equal(docs.length, 10);
assert.deepEqual(pointer, { limit: 10, offset: 20, nogrids: false });
assert.deepEqual(docs[0], {
AREA: 20,
FIPS: 'AQ',
ISO2: 'AS',
ISO3: 'ASM',
name: 'American Samoa',
POP2005: 64051,
REGION: 9,
SUBREGION: 61,
UN: 16,
_id: 'ASM',
_text: 'American Samoa',
_zxy: [ '4/0/8' ],
_center: [ -170.73, -14.318 ]
});
done();
});
});
});
});