165 lines
5.8 KiB
JavaScript
165 lines
5.8 KiB
JavaScript
var Layers = require('../../../../src/geo/map/layers');
|
|
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 CartoDBLayer = require('../../../../src/geo/map/cartodb-layer');
|
|
var createEngine = require('../../fixtures/engine.fixture.js');
|
|
|
|
describe('geo/map/layers', function () {
|
|
var layers;
|
|
var engineMock;
|
|
|
|
beforeEach(function () {
|
|
engineMock = createEngine();
|
|
layers = new Layers();
|
|
});
|
|
|
|
it('should re-assign order when new layers are added to the collection', function () {
|
|
var baseLayer = new TileLayer(null, { engine: {} });
|
|
var layer1 = new CartoDBLayer({}, { engine: engineMock });
|
|
var layer2 = new CartoDBLayer({}, { engine: engineMock });
|
|
var layer3 = new CartoDBLayer({}, { engine: engineMock });
|
|
|
|
// Sets the order to 0
|
|
layers.add(baseLayer);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
|
|
// Sets the order to 1
|
|
layers.add(layer1);
|
|
layers.add(layer2);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer1.get('order')).toEqual(1);
|
|
expect(layer2.get('order')).toEqual(2);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2 ]);
|
|
|
|
// Sets the order to 1 and re-orders the rest of the layers
|
|
layers.add(layer3, { at: 1 });
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer1.get('order')).toEqual(2);
|
|
expect(layer2.get('order')).toEqual(3);
|
|
expect(layer3.get('order')).toEqual(1);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2, 3 ]);
|
|
|
|
var torqueLayer = new TorqueLayer({}, { engine: engineMock });
|
|
|
|
// Torque layer should be at the top
|
|
layers.add(torqueLayer);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer1.get('order')).toEqual(2);
|
|
expect(layer2.get('order')).toEqual(3);
|
|
expect(layer3.get('order')).toEqual(1);
|
|
expect(torqueLayer.get('order')).toEqual(4);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2, 3, 4 ]);
|
|
|
|
var tiledLayer = new TileLayer(null, { engine: {} });
|
|
|
|
// Tiled layer should be at the top
|
|
layers.add(tiledLayer);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer1.get('order')).toEqual(2);
|
|
expect(layer2.get('order')).toEqual(3);
|
|
expect(layer3.get('order')).toEqual(1);
|
|
expect(torqueLayer.get('order')).toEqual(4);
|
|
expect(tiledLayer.get('order')).toEqual(5);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2, 3, 4, 5 ]);
|
|
|
|
var layer4 = new CartoDBLayer({}, { engine: engineMock });
|
|
layers.add(layer4);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer1.get('order')).toEqual(2);
|
|
expect(layer2.get('order')).toEqual(3);
|
|
expect(layer3.get('order')).toEqual(1);
|
|
expect(layer4.get('order')).toEqual(4);
|
|
expect(torqueLayer.get('order')).toEqual(5);
|
|
expect(tiledLayer.get('order')).toEqual(6);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2, 3, 4, 5, 6 ]);
|
|
});
|
|
|
|
it('should re-assign order when new layers are removed from the collection', function () {
|
|
var baseLayer = new TileLayer(null, { engine: {} });
|
|
var layer1 = new CartoDBLayer({}, { engine: engineMock });
|
|
var layer2 = new CartoDBLayer({}, { engine: engineMock });
|
|
var torqueLayer = new TorqueLayer({}, { engine: engineMock });
|
|
var labelsLayer = new TileLayer(null, { engine: {} });
|
|
|
|
// Sets the order to 0
|
|
layers.add(baseLayer);
|
|
layers.add(layer1);
|
|
layers.add(layer2);
|
|
layers.add(torqueLayer);
|
|
layers.add(labelsLayer);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer1.get('order')).toEqual(1);
|
|
expect(layer2.get('order')).toEqual(2);
|
|
expect(torqueLayer.get('order')).toEqual(3);
|
|
expect(labelsLayer.get('order')).toEqual(4);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2, 3, 4 ]);
|
|
|
|
layers.remove(layer1);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer2.get('order')).toEqual(1);
|
|
expect(torqueLayer.get('order')).toEqual(2);
|
|
expect(labelsLayer.get('order')).toEqual(3);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2, 3 ]);
|
|
|
|
layers.remove(torqueLayer);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer2.get('order')).toEqual(1);
|
|
expect(labelsLayer.get('order')).toEqual(2);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1, 2 ]);
|
|
|
|
layers.remove(labelsLayer);
|
|
|
|
expect(baseLayer.get('order')).toEqual(0);
|
|
expect(layer2.get('order')).toEqual(1);
|
|
expect(layers.pluck('order')).toEqual([ 0, 1 ]);
|
|
});
|
|
|
|
describe('.moveCartoDBLayer', function () {
|
|
beforeEach(function () {
|
|
layers.add(new PlainLayer({ name: 'Positron' }, { engine: {} }));
|
|
layers.add(new CartoDBLayer({ title: 'CARTO' }, { engine: engineMock }));
|
|
});
|
|
|
|
it('should move a layer from one position to other', function () {
|
|
var movedLayer = layers.moveCartoDBLayer(1, 0);
|
|
expect(layers.indexOf(movedLayer)).toBe(0);
|
|
expect(movedLayer.get('title')).toBe('CARTO');
|
|
|
|
layers.add(new CartoDBLayer({ title: 'CARTO 2' }, { engine: engineMock }));
|
|
movedLayer = layers.moveCartoDBLayer(2, 1);
|
|
expect(layers.indexOf(movedLayer)).toBe(1);
|
|
expect(movedLayer.get('title')).toBe('CARTO 2');
|
|
});
|
|
|
|
it('should move a layer from one position to other', function () {
|
|
spyOn(layers, 'trigger');
|
|
|
|
var movedLayer = layers.moveCartoDBLayer(1, 0);
|
|
|
|
expect(layers.trigger).toHaveBeenCalledWith('layerMoved', movedLayer);
|
|
});
|
|
|
|
it('should not move anything if the position is the same', function () {
|
|
var movedLayer = layers.moveCartoDBLayer(1, 1);
|
|
expect(movedLayer).toBeFalsy();
|
|
expect(layers.at(1).get('title')).toBe('CARTO');
|
|
});
|
|
|
|
it('should not move the layer if it is not a CartoDB type', function () {
|
|
var movedLayer = layers.moveCartoDBLayer(0, 1);
|
|
expect(movedLayer).toBeFalsy();
|
|
expect(layers.at(1).get('title')).toBe('CARTO');
|
|
});
|
|
});
|
|
});
|