From 81c56a733b4d600daaa6dfd00007ebbf107c2017 Mon Sep 17 00:00:00 2001 From: nebulon42 Date: Mon, 10 Jul 2017 23:10:38 +0200 Subject: [PATCH] another test for custom reference, error handling for unrecognized rule --- lib/carto/tree/rule.js | 8 +++++--- test/reference.test.js | 31 ++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/carto/tree/rule.js b/lib/carto/tree/rule.js index ec9731f37..3824eb9aa 100644 --- a/lib/carto/tree/rule.js +++ b/lib/carto/tree/rule.js @@ -45,9 +45,11 @@ tree.Rule.prototype.validate = function (env) { if (!env.ref.validSelector(this.name)) { var mean = getMean(this.name, env.ref); - var mean_message = ''; - if (mean[0][1] < 3) { - mean_message = '. Did you mean ' + mean[0][0] + '?'; + var mean_message = '.'; + if (!_.isNil(mean) && !_.isEmpty(mean)) { + if (mean[0][1] < 3) { + mean_message = '. Did you mean ' + mean[0][0] + '?'; + } } valid = false; util.error(env, { diff --git a/test/reference.test.js b/test/reference.test.js index bc8b4edc8..b44a00ab0 100644 --- a/test/reference.test.js +++ b/test/reference.test.js @@ -1,4 +1,5 @@ -var assert = require('assert'); +var assert = require('assert'), + _ = require('lodash'); var carto = require('../lib/carto'); @@ -52,7 +53,35 @@ describe('Reference', function() { reference: customRef }), output = renderer.renderMSS('#test { marker-color: #fff; }'); + assert.ok(!_.isNil(output.msg) && output.msg.length > 0); assert.equal(output.msg[0].message, 'Could not use the given reference, because it does not adhere to the specification. See the documentation for details.'); done(); }); + + it('should error on no rules', function(done) { + var customRef = { + load: function (wanted) { + return { + version: wanted, + style: {}, + layer: {}, + symbolizers: {}, + colors: {}, + datasources: {} + }; + }, + latest: '1.5.0', + versions: [ + '1.0.0', + '1.5.0' + ] + }; + var renderer = new carto.Renderer({ + reference: customRef + }), + output = renderer.renderMSS('#test { marker-width: 1; }'); + assert.ok(!_.isNil(output.msg) && output.msg.length > 0); + assert.equal(output.msg[0].message, 'Unrecognized rule: marker-width.'); + done(); + }); });