[node] Rewrite request tests
This commit is contained in:
68
platform/node/test/js/request.test.js
Normal file
68
platform/node/test/js/request.test.js
Normal file
@@ -0,0 +1,68 @@
|
||||
'use strict';
|
||||
|
||||
var mockfs = require('../mockfs');
|
||||
var mbgl = require('../../index');
|
||||
var test = require('tape');
|
||||
|
||||
[ 'sprite_png', 'sprite_json', 'source_vector', 'glyph' ].forEach(function (resource) {
|
||||
test(`render reports an error when the request function responds with an error (${resource})`, function(t) {
|
||||
var map = new mbgl.Map({
|
||||
request: function(req, callback) {
|
||||
var data = mockfs.dataForRequest(req);
|
||||
if (mockfs[resource] === data) {
|
||||
callback(new Error('message'));
|
||||
} else {
|
||||
callback(null, { data: data });
|
||||
}
|
||||
}
|
||||
});
|
||||
map.load(mockfs.style_vector);
|
||||
map.render({ zoom: 16 }, function(err, pixels) {
|
||||
t.assert(err);
|
||||
t.assert(/message/.test(err.message));
|
||||
t.assert(!pixels);
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
[ 'vector', 'raster' ].forEach(function (type) {
|
||||
test(`render does not report an error when the request function responds with no data for a tile (${type})`, function(t) {
|
||||
var map = new mbgl.Map({
|
||||
request: function(req, callback) {
|
||||
var data = mockfs.dataForRequest(req);
|
||||
if (mockfs[`tile_${type}`] === data) {
|
||||
callback();
|
||||
} else {
|
||||
callback(null, { data: data });
|
||||
}
|
||||
}
|
||||
});
|
||||
map.load(mockfs[`style_${type}`]);
|
||||
map.render({ zoom: 16 }, function(err, pixels) {
|
||||
t.error(err);
|
||||
t.assert(pixels);
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
test(`render reports an error when the request function responds with an error for a tile (${type})`, function(t) {
|
||||
var map = new mbgl.Map({
|
||||
request: function(req, callback) {
|
||||
var data = mockfs.dataForRequest(req);
|
||||
if (mockfs[`tile_${type}`] === data) {
|
||||
callback(new Error('message'));
|
||||
} else {
|
||||
callback(null, { data: data });
|
||||
}
|
||||
}
|
||||
});
|
||||
map.load(mockfs[`style_${type}`]);
|
||||
map.render({ zoom: 16 }, function(err, pixels) {
|
||||
t.assert(err);
|
||||
t.assert(/message/.test(err.message));
|
||||
t.assert(!pixels);
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,59 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var mockfs = require('../mockfs');
|
||||
var mbgl = require('../../index');
|
||||
var test = require('tape');
|
||||
|
||||
function asyncReply(callback, data) {
|
||||
setTimeout(function() { callback(null, { data: data }); }, 0);
|
||||
};
|
||||
|
||||
function asyncFail(callback) {
|
||||
setTimeout(function() { callback(new Error('not found')); }, 0);
|
||||
};
|
||||
|
||||
function failRequest(t, style, failedResource) {
|
||||
var options = {
|
||||
request: function(req, callback) {
|
||||
var data = mockfs.dataForRequest(req);
|
||||
|
||||
if (failedResource != data) {
|
||||
asyncReply(callback, data);
|
||||
} else {
|
||||
asyncFail(callback);
|
||||
}
|
||||
},
|
||||
ratio: 2,
|
||||
};
|
||||
|
||||
var map = new mbgl.Map(options);
|
||||
map.load(style);
|
||||
|
||||
map.render({ zoom: 16 }, function(err, pixels) {
|
||||
if (err) {
|
||||
t.pass("pass");
|
||||
map.release();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
test('Vector', function(t) {
|
||||
t.plan(5);
|
||||
|
||||
failRequest(t, mockfs.style_vector, null);
|
||||
failRequest(t, mockfs.style_vector, mockfs.sprite_png);
|
||||
failRequest(t, mockfs.style_vector, mockfs.sprite_json);
|
||||
failRequest(t, mockfs.style_vector, mockfs.source_vector);
|
||||
failRequest(t, mockfs.style_vector, mockfs.tile_vector);
|
||||
failRequest(t, mockfs.style_vector, mockfs.glyph);
|
||||
});
|
||||
|
||||
test('Raster', function(t) {
|
||||
t.plan(4);
|
||||
|
||||
failRequest(t, mockfs.style_raster, null);
|
||||
failRequest(t, mockfs.style_raster, mockfs.sprite_png);
|
||||
failRequest(t, mockfs.style_raster, mockfs.sprite_json);
|
||||
failRequest(t, mockfs.style_raster, mockfs.source_raster);
|
||||
failRequest(t, mockfs.style_raster, mockfs.tile_raster);
|
||||
});
|
||||
@@ -1,74 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var mockfs = require('../mockfs');
|
||||
var mbgl = require('../../index');
|
||||
var test = require('tape');
|
||||
|
||||
function isTile(data) {
|
||||
return data == mockfs.tile_vector || data == mockfs.tile_raster;
|
||||
}
|
||||
|
||||
function asyncReply(callback, data) {
|
||||
setTimeout(function() { callback(null, { data: data }); }, 0);
|
||||
};
|
||||
|
||||
function asyncFail(callback, data) {
|
||||
// Do not set an error for tile when not found. A not found
|
||||
// tile is a valid tile.
|
||||
if (isTile(data)) {
|
||||
setTimeout(function() { callback(); }, 0);
|
||||
} else {
|
||||
setTimeout(function() { callback(new Error('not found')); }, 0);
|
||||
}
|
||||
};
|
||||
|
||||
function notfoundRequest(t, style, notfoundResource) {
|
||||
var options = {
|
||||
request: function(req, callback) {
|
||||
var data = mockfs.dataForRequest(req);
|
||||
|
||||
if (notfoundResource != data) {
|
||||
asyncReply(callback, data);
|
||||
} else {
|
||||
asyncFail(callback, data);
|
||||
}
|
||||
},
|
||||
ratio: 2,
|
||||
};
|
||||
|
||||
var map = new mbgl.Map(options);
|
||||
map.load(style);
|
||||
|
||||
map.render({ zoom: 16 }, function(err, pixels) {
|
||||
if (err && !isTile(notfoundResource)) {
|
||||
t.pass("pass");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!err && isTile(notfoundResource)) {
|
||||
t.pass("pass");
|
||||
return;
|
||||
}
|
||||
|
||||
t.fail("fail");
|
||||
});
|
||||
};
|
||||
|
||||
test('Vector', function(t) {
|
||||
t.plan(5);
|
||||
|
||||
notfoundRequest(t, mockfs.style_vector, mockfs.sprite_png);
|
||||
notfoundRequest(t, mockfs.style_vector, mockfs.sprite_json);
|
||||
notfoundRequest(t, mockfs.style_vector, mockfs.source_vector);
|
||||
notfoundRequest(t, mockfs.style_vector, mockfs.tile_vector);
|
||||
notfoundRequest(t, mockfs.style_vector, mockfs.glyph);
|
||||
});
|
||||
|
||||
test('Raster', function(t) {
|
||||
t.plan(4);
|
||||
|
||||
notfoundRequest(t, mockfs.style_raster, mockfs.sprite_png);
|
||||
notfoundRequest(t, mockfs.style_raster, mockfs.sprite_json);
|
||||
notfoundRequest(t, mockfs.style_raster, mockfs.source_raster);
|
||||
notfoundRequest(t, mockfs.style_raster, mockfs.tile_raster);
|
||||
});
|
||||
@@ -5,7 +5,7 @@ var path = require('path');
|
||||
|
||||
function readFixture(file) {
|
||||
return fs.readFileSync(path.join('test/fixtures/resources', file));
|
||||
};
|
||||
}
|
||||
|
||||
var style_raster = readFixture('style_raster.json').toString('utf8');
|
||||
var style_vector = readFixture('style_vector.json').toString('utf8');
|
||||
@@ -18,7 +18,7 @@ var tile_raster = readFixture('raster.tile');
|
||||
var tile_vector = readFixture('vector.tile');
|
||||
|
||||
function dataForRequest(req) {
|
||||
if (req.url == null) {
|
||||
if (req.url === null) {
|
||||
return null;
|
||||
} else if (req.url.indexOf('sprite') > -1 && req.url.endsWith('json')) {
|
||||
return sprite_json;
|
||||
@@ -37,7 +37,7 @@ function dataForRequest(req) {
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dataForRequest: dataForRequest,
|
||||
|
||||
Reference in New Issue
Block a user