From ed29dfce436cb68c91fa2a1bdaa995124121c218 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 19 Jul 2017 13:28:42 -0700 Subject: [node] Rewrite request tests --- platform/node/test/js/request.test.js | 68 +++++++++++++++++++++++ platform/node/test/js/request_fail.test.js | 59 -------------------- platform/node/test/js/request_notfound.test.js | 74 -------------------------- platform/node/test/mockfs.js | 6 +-- 4 files changed, 71 insertions(+), 136 deletions(-) create mode 100644 platform/node/test/js/request.test.js delete mode 100644 platform/node/test/js/request_fail.test.js delete mode 100644 platform/node/test/js/request_notfound.test.js diff --git a/platform/node/test/js/request.test.js b/platform/node/test/js/request.test.js new file mode 100644 index 0000000000..9715633e39 --- /dev/null +++ b/platform/node/test/js/request.test.js @@ -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(); + }); + }); +}); diff --git a/platform/node/test/js/request_fail.test.js b/platform/node/test/js/request_fail.test.js deleted file mode 100644 index fad116a2b8..0000000000 --- a/platform/node/test/js/request_fail.test.js +++ /dev/null @@ -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); -}); diff --git a/platform/node/test/js/request_notfound.test.js b/platform/node/test/js/request_notfound.test.js deleted file mode 100644 index d2d2812784..0000000000 --- a/platform/node/test/js/request_notfound.test.js +++ /dev/null @@ -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); -}); diff --git a/platform/node/test/mockfs.js b/platform/node/test/mockfs.js index dfa5a425e3..2d27f3bbbe 100644 --- a/platform/node/test/mockfs.js +++ b/platform/node/test/mockfs.js @@ -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, -- cgit v1.2.1