111 lines
3.1 KiB
JavaScript
111 lines
3.1 KiB
JavaScript
var Backbone = require('backbone');
|
|
var AnalysisService = require('../../../../../src/analysis/analysis-service.js');
|
|
var CartoDBLayer = require('../../../../../src/geo/map/cartodb-layer');
|
|
var DataviewModelBase = require('../../../../../src/dataviews/dataview-model-base');
|
|
var AnonymousMapSerializer = require('../../../../../src/windshaft/map-serializer/anonymous-map-serializer/anonymous-map-serializer');
|
|
|
|
var MyDataviewModel = DataviewModelBase.extend({
|
|
toJSON: function () {
|
|
return {};
|
|
}
|
|
});
|
|
|
|
describe('anonymous-map-serializer', function () {
|
|
describe('.serialize', function () {
|
|
var engineMock;
|
|
var mapModel;
|
|
var layersCollection;
|
|
var dataviewsCollection;
|
|
var analysisService;
|
|
var analysisModel;
|
|
var payload;
|
|
|
|
beforeEach(function () {
|
|
mapModel = new Backbone.Model();
|
|
engineMock = new Backbone.Model();
|
|
layersCollection = new Backbone.Collection();
|
|
dataviewsCollection = new Backbone.Collection();
|
|
|
|
// Analyses
|
|
analysisService = new AnalysisService({
|
|
engine: engineMock,
|
|
camshaftReference: fakeCamshaftReference
|
|
});
|
|
analysisModel = analysisService.analyse({
|
|
id: 'ANALYSIS_ID',
|
|
type: 'source',
|
|
params: {
|
|
query: 'select * from subway_stops'
|
|
}
|
|
});
|
|
|
|
// Layers
|
|
var cartoDBLayer = new CartoDBLayer({
|
|
id: 'LAYER_ID',
|
|
source: analysisModel,
|
|
cartocss: 'cartocssMock',
|
|
cartocss_version: '2.0'
|
|
}, {
|
|
engine: engineMock
|
|
});
|
|
layersCollection.add(cartoDBLayer);
|
|
|
|
// Dataviews
|
|
var dataview = new MyDataviewModel({
|
|
id: 'DATAVIEW_ID',
|
|
source: analysisModel
|
|
}, {
|
|
map: mapModel,
|
|
engine: engineMock
|
|
});
|
|
dataviewsCollection.add(dataview);
|
|
|
|
// Serialized payload
|
|
payload = AnonymousMapSerializer.serialize(layersCollection, dataviewsCollection);
|
|
});
|
|
|
|
it('should include buffersize', function () {
|
|
expect(payload.buffersize).toEqual({
|
|
mvt: 0
|
|
});
|
|
});
|
|
|
|
it('should include one layer', function () {
|
|
expect(payload.layers.length).toEqual(1);
|
|
expect(payload.layers[0].id).toEqual('LAYER_ID');
|
|
});
|
|
|
|
it('should include one dataview', function () {
|
|
expect(Object.keys(payload.dataviews).length).toEqual(1);
|
|
expect(payload.dataviews['DATAVIEW_ID']).toBeDefined();
|
|
});
|
|
|
|
it('should include one analysis', function () {
|
|
expect(payload.analyses.length).toEqual(1);
|
|
expect(payload.analyses[0].id).toEqual('ANALYSIS_ID');
|
|
});
|
|
});
|
|
});
|
|
|
|
var fakeCamshaftReference = {
|
|
getSourceNamesForAnalysisType: function (analysisType) {
|
|
var map = {
|
|
'source': []
|
|
};
|
|
if (!map[analysisType]) {
|
|
throw new Error('analysis type ' + analysisType + ' not supported');
|
|
}
|
|
return map[analysisType];
|
|
},
|
|
|
|
getParamNamesForAnalysisType: function (analysisType) {
|
|
var map = {
|
|
'source': ['query']
|
|
};
|
|
if (!map[analysisType]) {
|
|
throw new Error('analysis type ' + analysisType + ' not supported');
|
|
}
|
|
return map[analysisType];
|
|
}
|
|
};
|