Merge pull request #940 from CartoDB/regression-test-named-map-dataview-filter
Regression test named map dataview filter
This commit is contained in:
commit
1b8e37a62c
@ -90,4 +90,78 @@ describe('regressions', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should create and instantiate a named map with filters', function (done) {
|
||||||
|
const apikeyToken = '1234';
|
||||||
|
|
||||||
|
const template = {
|
||||||
|
version: '0.0.1',
|
||||||
|
name: 'regression-dataview-filter-template',
|
||||||
|
placeholders: {
|
||||||
|
buffersize: {
|
||||||
|
type: 'number',
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
layergroup: {
|
||||||
|
version: '1.6.0',
|
||||||
|
layers: [
|
||||||
|
{
|
||||||
|
type: 'cartodb',
|
||||||
|
options: {
|
||||||
|
source: {
|
||||||
|
id: 'a1'
|
||||||
|
},
|
||||||
|
cartocss: TestClient.CARTOCSS.POINTS,
|
||||||
|
cartocss_version: '2.3.0'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
dataviews: {
|
||||||
|
country_places_count: {
|
||||||
|
source: {
|
||||||
|
id: 'a1'
|
||||||
|
},
|
||||||
|
type: 'aggregation',
|
||||||
|
options: {
|
||||||
|
column: 'adm0_a3',
|
||||||
|
aggregation: 'count'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
analyses: [
|
||||||
|
{
|
||||||
|
id: 'a1',
|
||||||
|
type: 'source',
|
||||||
|
params: {
|
||||||
|
query: 'select * from populated_places_simple_reduced'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const testClient = new TestClient(template, apikeyToken);
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
own_filter: 1,
|
||||||
|
filters: {
|
||||||
|
dataviews: {
|
||||||
|
country_places_count: {
|
||||||
|
accept: ['CAN']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
testClient.getDataview('country_places_count', params, (err, dataview) => {
|
||||||
|
assert.ifError(err);
|
||||||
|
|
||||||
|
assert.equal(dataview.type, 'aggregation');
|
||||||
|
assert.equal(dataview.categories.length, 1);
|
||||||
|
assert.deepEqual(dataview.categories[0], { value: 256, category: 'CAN', agg: false });
|
||||||
|
|
||||||
|
testClient.drain(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -358,6 +358,8 @@ TestClient.prototype.getDataview = function(dataviewName, params, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var url = '/api/v1/map';
|
var url = '/api/v1/map';
|
||||||
|
var urlNamed = url + '/named';
|
||||||
|
|
||||||
if (Object.keys(extraParams).length > 0) {
|
if (Object.keys(extraParams).length > 0) {
|
||||||
url += '?' + qs.stringify(extraParams);
|
url += '?' + qs.stringify(extraParams);
|
||||||
}
|
}
|
||||||
@ -370,17 +372,73 @@ TestClient.prototype.getDataview = function(dataviewName, params, callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
step(
|
step(
|
||||||
function createLayergroup() {
|
function createTemplate () {
|
||||||
var next = this;
|
var next = this;
|
||||||
|
|
||||||
|
if (!self.template) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!self.apiKey) {
|
||||||
|
return next(new Error('apiKey param is mandatory to create a new template'));
|
||||||
|
}
|
||||||
|
|
||||||
|
params.placeholders = params.placeholders || {};
|
||||||
|
|
||||||
assert.response(self.server,
|
assert.response(self.server,
|
||||||
{
|
{
|
||||||
url: url,
|
url: urlNamed + '?' + qs.stringify({ api_key: self.apiKey }),
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
host: 'localhost',
|
host: 'localhost',
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
},
|
},
|
||||||
data: JSON.stringify(self.mapConfig)
|
data: JSON.stringify(self.template)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
status: 200,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function (res, err) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
return next(null, JSON.parse(res.body).template_id);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
function createLayergroup(err, templateId) {
|
||||||
|
assert.ifError(err);
|
||||||
|
|
||||||
|
var next = this;
|
||||||
|
|
||||||
|
var data = templateId ? params.placeholders : self.mapConfig;
|
||||||
|
|
||||||
|
const queryParams = {};
|
||||||
|
|
||||||
|
if (self.apiKey) {
|
||||||
|
queryParams.api_key = self.apiKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.filters !== undefined) {
|
||||||
|
queryParams.filters = JSON.stringify(params.filters);
|
||||||
|
}
|
||||||
|
|
||||||
|
var path = templateId ?
|
||||||
|
urlNamed + '/' + templateId + '?' + qs.stringify(queryParams) :
|
||||||
|
url;
|
||||||
|
|
||||||
|
assert.response(self.server,
|
||||||
|
{
|
||||||
|
url: path,
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
host: 'localhost',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
data: JSON.stringify(data)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
status: 200,
|
status: 200,
|
||||||
|
Loading…
Reference in New Issue
Block a user