133 lines
4.7 KiB
JavaScript
133 lines
4.7 KiB
JavaScript
var Backbone = require('backbone');
|
|
var LeafletTiledLayerView = require('../../../../src/geo/leaflet/leaflet-tiled-layer-view');
|
|
|
|
describe('leaflet-tiled-layer-view', function () {
|
|
describe('when does not support high resolution screens', function () {
|
|
beforeEach(function () {
|
|
this.layerModel = new Backbone.Model({
|
|
urlTemplate: 'http://whatever.com',
|
|
subdomains: 'a',
|
|
opacity: 1,
|
|
attribution: 'CARTO',
|
|
errorTileUrl: 'http://matall.in',
|
|
maxZoom: 10,
|
|
minZoom: 0,
|
|
tms: false
|
|
});
|
|
|
|
this.leafletMap = jasmine.createSpy('leafletMap');
|
|
this.layerView = new LeafletTiledLayerView(this.layerModel, {
|
|
nativeMap: this.leafletMap
|
|
});
|
|
});
|
|
|
|
it('should have options set correctly', function () {
|
|
expect(this.layerView.leafletLayer.options.subdomains).toEqual(['a']);
|
|
expect(this.layerView.leafletLayer._url).toBe('http://whatever.com');
|
|
expect(this.layerView.leafletLayer.options.attribution).toBe('CARTO');
|
|
expect(this.layerView.leafletLayer.options.errorTileUrl).toBe('http://matall.in');
|
|
expect(this.layerView.leafletLayer.options.maxZoom).toBe(10);
|
|
expect(this.layerView.leafletLayer.options.minZoom).toBe(0);
|
|
expect(this.layerView.leafletLayer.options.opacity).toBe(1);
|
|
expect(this.layerView.leafletLayer.options.tms).toBeFalsy();
|
|
});
|
|
|
|
describe('._modelUpdated', function () {
|
|
beforeEach(function () {
|
|
this.layerModel.set({
|
|
subdomains: ['b'],
|
|
urlTemplate: 'http://hello.com',
|
|
attribution: 'carto',
|
|
maxZoom: 12,
|
|
minZoom: 1,
|
|
tms: true
|
|
});
|
|
});
|
|
|
|
it('should update several attributes', function () {
|
|
expect(this.layerView.leafletLayer.options.subdomains).toEqual(['b']);
|
|
expect(this.layerView.leafletLayer.options.attribution).toBe('carto');
|
|
expect(this.layerView.leafletLayer.options.errorTileUrl).toBe('http://matall.in');
|
|
expect(this.layerView.leafletLayer.options.maxZoom).toBe(12);
|
|
expect(this.layerView.leafletLayer.options.minZoom).toBe(1);
|
|
expect(this.layerView.leafletLayer.options.opacity).toBe(1);
|
|
expect(this.layerView.leafletLayer.options.tms).toBeTruthy();
|
|
});
|
|
|
|
it('should update url', function () {
|
|
expect(this.layerView.leafletLayer._url).toBe('http://hello.com');
|
|
});
|
|
});
|
|
|
|
it('should trigger load and loading events', function () {
|
|
var loadCallback = jasmine.createSpy('loadCallback');
|
|
this.layerView.bind('load', loadCallback);
|
|
this.layerView.leafletLayer.fire('load');
|
|
expect(loadCallback).toHaveBeenCalled();
|
|
|
|
var loadingCallback = jasmine.createSpy('loadingCallback');
|
|
this.layerView.bind('loading', loadingCallback);
|
|
this.layerView.leafletLayer.fire('loading');
|
|
expect(loadingCallback).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe('when supports high resolution screens', function () {
|
|
beforeEach(function () {
|
|
this.layerModel = new Backbone.Model({
|
|
urlTemplate: 'http://whatever.com',
|
|
urlTemplate2x: 'http://whatever.com2x',
|
|
subdomains: 'a',
|
|
opacity: 1,
|
|
attribution: 'CARTO',
|
|
errorTileUrl: 'http://matall.in',
|
|
maxZoom: 10,
|
|
minZoom: 0,
|
|
tms: false
|
|
});
|
|
this.leafletMap = jasmine.createSpy('leafletMap');
|
|
this.layerView = new LeafletTiledLayerView(this.layerModel, {
|
|
nativeMap: this.leafletMap
|
|
});
|
|
});
|
|
|
|
describe('when is high resolution screen', function () {
|
|
beforeEach(function () {
|
|
spyOn(this.layerView, '_isHdpi').and.returnValue(true);
|
|
});
|
|
|
|
it('should update the model correctly if high resolution template is enabled', function () {
|
|
this.layerModel.set({
|
|
urlTemplate: 'http://hello.com',
|
|
urlTemplate2x: 'http://hello.com2x'
|
|
});
|
|
|
|
expect(this.layerView.leafletLayer._url).toBe('http://hello.com2x');
|
|
});
|
|
|
|
it('should update the model correctly if high resolution template is not enabled', function () {
|
|
this.layerModel.set({
|
|
urlTemplate: 'http://hello.com'
|
|
});
|
|
|
|
expect(this.layerView.leafletLayer._url).toBe('http://hello.com');
|
|
});
|
|
});
|
|
|
|
describe('when it is not a high resolution screen', function () {
|
|
beforeEach(function () {
|
|
spyOn(this.layerView, '_isHdpi').and.returnValue(false);
|
|
});
|
|
|
|
it('should update the model correctly if high resolution template is enabled', function () {
|
|
this.layerModel.set({
|
|
urlTemplate: 'http://hello.com',
|
|
urlTemplate2x: 'http://hello.com2x'
|
|
});
|
|
|
|
expect(this.layerView.leafletLayer._url).toBe('http://hello.com');
|
|
});
|
|
});
|
|
});
|
|
});
|