Files
cartodb/lib/assets/test/spec/builder/data/custom-baselayer-model.spec.js
2020-06-15 10:58:47 +08:00

84 lines
2.6 KiB
JavaScript

var CustomBaselayerModel = require('builder/data/custom-baselayer-model');
describe('data/custom-baselayer-model', function () {
describe('.validateTemplateURL', function () {
beforeEach(function () {
var self = this;
this.img = jasmine.createSpy('Image');
spyOn(window, 'Image').and.callFake(function () {
return self.img;
});
this.layer = {
visible: true,
type: 'Tiled',
urlTemplate: 'https://stamen-tiles-{s}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg',
attribution: null,
maxZoom: 21,
minZoom: 0,
name: 'Custom basemap 1',
tms: false,
className: 'httpsstamentilessasslfastlynetwatercolorzxyjpg',
id: 'custom-basemap-1',
selected: false,
order: 1
};
this.model = new CustomBaselayerModel(this.layer);
this.successSpy = jasmine.createSpy('success');
this.errorSpy = jasmine.createSpy('error');
this.model.validateTemplateURL({
success: this.successSpy,
error: this.errorSpy
});
});
it('should check a base tile', function () {
expect(this.img.src).toMatch('https:\/\/stamen-tiles-[a-d]\.a');
expect(this.img.src).toContain('a.ssl.fastly.net/watercolor/0/0/0.jpg');
});
describe('when succeeds to validate template URL', function () {
beforeEach(function () {
this.img.onload();
});
it('should call success callback', function () {
expect(this.successSpy).toHaveBeenCalled();
expect(this.errorSpy).not.toHaveBeenCalled();
});
});
describe('when failed to validate template URL', function () {
beforeEach(function () {
this.img.onerror();
});
it('should call error callback', function () {
expect(this.successSpy).not.toHaveBeenCalled();
expect(this.errorSpy).toHaveBeenCalled();
});
});
describe('.toJSON', function () {
it('should return the original data', function () {
expect(this.model.toJSON()).toEqual({
options: {
visible: true,
type: 'Tiled',
urlTemplate: 'https://stamen-tiles-{s}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg',
attribution: null,
maxZoom: 21,
minZoom: 0,
name: 'Custom basemap 1',
tms: false,
className: 'httpsstamentilessasslfastlynetwatercolorzxyjpg',
selected: false
},
kind: 'tiled',
order: 1,
id: 'custom-basemap-1'
});
});
});
});
});