Initial commit
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user