nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 45f156082d42a5cdb97c4ce19120022811f947da
parent b103030a261b66e613409fbac0747a373b2c2fed
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Sun, 13 Dec 2020 00:16:51 +0100

tests: make layer tests aware of wrapper layers

Diffstat:
Mtest/test_layers.js | 68+++++++++++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 49 insertions(+), 19 deletions(-)

diff --git a/test/test_layers.js b/test/test_layers.js @@ -2,6 +2,41 @@ import {layersDefs, groupsDefs, titlesByOrder} from '~/layers'; suite('layers definitions'); +function checkLayer(layerDef, isWrapper, parentLayer) { + const isSublayer = Boolean(parentLayer); + const options = layerDef.layer.options; + assert.isObject(layerDef.layer.options, 'options'); + if (isSublayer) { + assert.notExists(options.code, 'options.code'); + } else { + assert.isString(options.code, 'options.code'); + assert.isNotEmpty(options.code, 'options.code'); + } + assert.oneOf(options.isOverlay, [true, false], 'isOverlay'); + if (isSublayer) { + assert.equal(options.isOverlay, parentLayer.options.isOverlay); + } + if (options.isOverlay && options.print) { + assert.oneOf(options.isOverlayTransparent, [true, false], 'isOverlayTransparent'); + } + if (isWrapper) { + assert.notExists(options.print, 'print'); + assert.notExists(options.scaleDependent, 'scaleDependent'); + assert.notExists(options.shortName, 'shortName'); + assert.notExists(options.jnx, 'jnx'); + assert.notExists(options.noCors, 'noCors'); + } else { + assert.oneOf(options.print, [true, false], 'print'); + if (options.print) { + assert.oneOf(options.scaleDependent, [true, false], 'scaleDependent'); + assert.isString(options.shortName, 'shortName'); + assert.isNotEmpty(options.shortName, 'shortName'); + } + assert.oneOf(options.jnx, [true, false], 'jnx'); + assert.oneOf(options.noCors, [true, false, undefined], 'noCors'); + } +} + layersDefs.forEach(function (layerDef) { test(`layer properties ${layerDef.title}`, function () { assert.isString(layerDef.title, 'title defined'); @@ -13,22 +48,10 @@ layersDefs.forEach(function (layerDef) { assert.oneOf(layerDef.isDefault, [true, false], 'isDefault'); assert.isObject(layerDef.layer, 'layer'); - const options = layerDef.layer.options; - assert.isObject(layerDef.layer.options, 'options'); - assert.isString(options.code, 'options.code'); - assert.isNotEmpty(options.code, 'options.code'); - assert.oneOf(options.isOverlay, [true, false], 'isOverlay'); - if (options.isOverlay && options.print) { - assert.oneOf(options.isOverlayTransparent, [true, false], 'isOverlayTransparent'); - } - assert.oneOf(options.print, [true, false], 'print'); - if (options.print) { - assert.oneOf(options.scaleDependent, [true, false], 'scaleDependent'); - assert.isString(options.shortName, 'shortName'); - assert.isNotEmpty(options.shortName, 'shortName'); + checkLayer(layerDef, layerDef.layer.options?.isWrapper); + if (layerDef.options?.isWrapper) { + layerDef.getLayers().forEach((subLayer) => checkLayer(subLayer, false, layerDef.layer)); } - assert.oneOf(options.jnx, [true, false], 'jnx'); - assert.oneOf(options.noCors, [true, false, undefined], 'noCors'); }); }); @@ -61,16 +84,23 @@ test('Layers codes unique', function () { test('Layers short names unique', function () { const seen = new Set(); const duplicates = new Set(); - for (const layerDef of layersDefs) { - if (!layerDef.layer.options.print) { - continue; + function processLayer(layer) { + if (!layer.options.print) { + return; } - const shortName = layerDef.layer.options.shortName; + const shortName = layer.options.shortName; if (seen.has(shortName)) { duplicates.add(shortName); } seen.add(shortName); } + for (const layerDef of layersDefs) { + const layer = layerDef.layer; + processLayer(layer); + if (layer.options.isWrapper) { + layer.getLayers().forEach(processLayer); + } + } assert.isEmpty(Array.from(duplicates), 'duplicate short names'); });