215 lines
6.3 KiB
JavaScript
215 lines
6.3 KiB
JavaScript
var Backbone = require('backbone');
|
|
var CartoDBLayer = require('../../../../../src/geo/map/cartodb-layer');
|
|
var PlainLayer = require('../../../../../src/geo/map/plain-layer');
|
|
var TileLayer = require('../../../../../src/geo/map/tile-layer');
|
|
var TorqueLayer = require('../../../../../src/geo/map/torque-layer');
|
|
var GMapsBaseLayer = require('../../../../../src/geo/map/gmaps-base-layer');
|
|
var LayersSerializer = require('../../../../../src/windshaft/map-serializer/anonymous-map-serializer/layers-serializer');
|
|
var MockFactory = require('../../../../helpers/mockFactory');
|
|
var createEngine = require('../../../fixtures/engine.fixture.js');
|
|
|
|
describe('layers-serializer', function () {
|
|
describe('.serialize', function () {
|
|
var engineMock;
|
|
var sourceMock;
|
|
var layersCollection;
|
|
|
|
// Create all test objects once
|
|
beforeAll(function () {
|
|
layersCollection = new Backbone.Collection();
|
|
engineMock = createEngine();
|
|
sourceMock = MockFactory.createAnalysisModel({ id: 'a1' });
|
|
});
|
|
|
|
describe('mapnik layer', function () {
|
|
it('should serialize a cartodb layer with no aggregation', function () {
|
|
var cartoDBLayer = new CartoDBLayer({
|
|
id: 'l1',
|
|
source: sourceMock,
|
|
cartocss: 'cartoCSS1',
|
|
cartocss_version: '2.0'
|
|
}, {
|
|
engine: engineMock
|
|
});
|
|
layersCollection.reset([cartoDBLayer]);
|
|
|
|
var actual = LayersSerializer.serialize(layersCollection);
|
|
var expected = [{
|
|
'id': 'l1',
|
|
'type': 'mapnik',
|
|
'options': {
|
|
'cartocss': 'cartoCSS1',
|
|
'cartocss_version': '2.0',
|
|
'interactivity': ['cartodb_id'],
|
|
'source': { id: 'a1' }
|
|
}
|
|
}];
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('should serialize a cartodb layer with aggregation', function () {
|
|
var cartoDBLayer = new CartoDBLayer({
|
|
id: 'l1',
|
|
source: sourceMock,
|
|
cartocss: 'cartoCSS1',
|
|
cartocss_version: '2.0'
|
|
}, {
|
|
engine: engineMock,
|
|
aggregation: {
|
|
threshold: 1000,
|
|
resolution: 4,
|
|
placement: 'point-sample',
|
|
columns: {
|
|
'population': {
|
|
aggregate_function: 'sum',
|
|
aggregated_column: 'pop_max'
|
|
},
|
|
'states': {
|
|
aggregate_function: 'sum',
|
|
aggregated_column: 'states'
|
|
}
|
|
}
|
|
}
|
|
});
|
|
layersCollection.reset([cartoDBLayer]);
|
|
|
|
var actual = LayersSerializer.serialize(layersCollection);
|
|
|
|
var expected = [{
|
|
'id': 'l1',
|
|
'type': 'mapnik',
|
|
'options': {
|
|
'cartocss': 'cartoCSS1',
|
|
'cartocss_version': '2.0',
|
|
'interactivity': ['cartodb_id'],
|
|
'source': { id: 'a1' },
|
|
'aggregation': {
|
|
'threshold': 1000,
|
|
'resolution': 4,
|
|
'placement': 'point-sample',
|
|
'columns': {
|
|
'population': {
|
|
'aggregate_function': 'sum',
|
|
'aggregated_column': 'pop_max'
|
|
},
|
|
'states': {
|
|
'aggregate_function': 'sum',
|
|
'aggregated_column': 'states'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}];
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('should serialize a cartodb layer with propper zoom options', function () {
|
|
var cartoDBLayer = new CartoDBLayer({
|
|
id: 'l1',
|
|
source: sourceMock,
|
|
cartocss: 'cartoCSS1',
|
|
cartocss_version: '2.0',
|
|
minzoom: 5,
|
|
maxzoom: 9
|
|
},
|
|
{
|
|
engine: engineMock
|
|
});
|
|
layersCollection.reset([cartoDBLayer]);
|
|
|
|
var actual = LayersSerializer.serialize(layersCollection);
|
|
var expected = [{
|
|
'id': 'l1',
|
|
'type': 'mapnik',
|
|
'options': {
|
|
'cartocss': 'cartoCSS1',
|
|
'cartocss_version': '2.0',
|
|
'interactivity': ['cartodb_id'],
|
|
'source': { id: 'a1' },
|
|
'minzoom': 5,
|
|
'maxzoom': 9
|
|
}
|
|
}];
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
});
|
|
|
|
it('should serialize a plain layer', function () {
|
|
var plainLayer = new PlainLayer({
|
|
id: 'l2',
|
|
color: 'COLOR',
|
|
image: 'http://carto.com/image.png'
|
|
}, { engine: engineMock });
|
|
layersCollection.reset([plainLayer]);
|
|
|
|
var actual = LayersSerializer.serialize(layersCollection);
|
|
var expected = [{
|
|
'id': 'l2',
|
|
'type': 'plain',
|
|
'options': {
|
|
'color': 'COLOR',
|
|
'imageUrl': 'http://carto.com/image.png'
|
|
}
|
|
}];
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('should serialize a torque layer', function () {
|
|
var torqueLayer = new TorqueLayer({
|
|
id: 'l3',
|
|
source: sourceMock,
|
|
cartocss: 'cartocss'
|
|
}, {
|
|
engine: engineMock
|
|
});
|
|
layersCollection.reset([torqueLayer]);
|
|
|
|
var actual = LayersSerializer.serialize(layersCollection);
|
|
var expected = [{
|
|
'id': 'l3',
|
|
'type': 'torque',
|
|
'options': {
|
|
'source': { id: 'a1' },
|
|
'cartocss': 'cartocss',
|
|
'cartocss_version': '2.1.0'
|
|
}
|
|
}];
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('should serialize a tile layer', function () {
|
|
var tileLayer = new TileLayer({
|
|
id: 'l4',
|
|
urlTemplate: 'URL_TEMPLATE',
|
|
subdomains: 'abc',
|
|
tms: false
|
|
}, { engine: engineMock });
|
|
layersCollection.reset([tileLayer]);
|
|
|
|
var actual = LayersSerializer.serialize(layersCollection);
|
|
var expected = [{
|
|
'id': 'l4',
|
|
'type': 'http',
|
|
'options': {
|
|
'urlTemplate': 'URL_TEMPLATE',
|
|
'subdomains': 'abc',
|
|
'tms': false
|
|
}
|
|
}];
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('should not serialize GMapsBase layers', function () {
|
|
var gmapsBaseLayer = new GMapsBaseLayer({
|
|
id: 'l4',
|
|
baseType: 'roadmap'
|
|
}, { engine: engineMock });
|
|
layersCollection.reset([gmapsBaseLayer]);
|
|
|
|
var actual = LayersSerializer.serialize(layersCollection);
|
|
var expected = [];
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
});
|
|
});
|