tilestrata-mapnik
Version:
A TileStrata plugin for rendering tiles with mapnik
90 lines (83 loc) • 2.87 kB
JavaScript
var fs = require('fs');
var assert = require('assert');
var mapnik_backend = require('..');
describe('Render ', function() {
var tileCoords = [
[0, 0, 0],
[1, 0, 0],
[1, 0, 1],
[1, 1, 0],
[1, 1, 1],
[2, 0, 0],
[2, 0, 1],
[2, 0, 2],
[2, 0, 3],
[2, 1, 0],
[2, 1, 1],
[2, 1, 2],
[2, 1, 3],
[2, 2, 0],
[2, 2, 1],
[2, 2, 2],
[2, 2, 3],
[2, 3, 0],
[2, 3, 1],
[2, 3, 2],
[2, 3, 3]
];
var tileCoordsCompletion = {};
tileCoords.forEach(function(coords) {
tileCoordsCompletion['grid_' + coords[0] + '_' + coords[1] + '_' + coords[2]] = true;
});
describe('getGrid() ', function() {
var source;
var completion = {};
before(function(done) {
new mapnik_backend('mapnik://./test/data/test.xml', function(err, s) {
if (err) throw err;
source = s;
done();
});
})
it.skip('validates', function(done) {
var count = 0;
tileCoords.forEach(function(coords,idx,array) {
source.getGrid(coords[0], coords[1], coords[2], function(err, info, headers) {
var key = coords[0] + '_' + coords[1] + '_' + coords[2];
completion['grid_' + key] = true;
if (err) throw err;
var expected = 'test/fixture/grids/' + key + '.grid.json';
if (!fs.existsSync(expected) || process.env.UPDATE)
{
fs.writeFileSync(expected,JSON.stringify(info, null, 4));
}
assert.deepEqual(info, JSON.parse(fs.readFileSync('test/fixture/grids/' + key + '.grid.json', 'utf8')));
assert.deepEqual(headers, {
"Content-Type": "application/json"
});
++count;
if (count == array.length) {
assert.deepEqual(completion,tileCoordsCompletion);
source.close(function(err) {
done();
});
}
});
});
});
});
});
describe('Grid Render Errors ', function() {
it('invalid layer', function(done) {
new mapnik_backend('mapnik://./test/data/invalid_interactivity_1.xml', function(err, source) {
if (err) throw err;
source.getGrid(0, 0, 0, function(err, info, headers) {
assert.ok(err);
assert.equal(err.message, "Layer name 'blah' not found");
source.close(function(err) {
done();
});
});
});
});
});