carto.js/test/spec/geo/map/tooltip-template.spec.js
2020-06-13 18:34:34 +08:00

107 lines
3.0 KiB
JavaScript

var TooltipTemplate = require('../../../../src/geo/map/tooltip-template');
describe('geo/map/tooltip-template', function () {
describe('.update', function () {
beforeEach(function () {
this.callback = jasmine.createSpy('callback');
this.tooltipTemplate = new TooltipTemplate({
fields: [
{ name: 'Name', title: true, position: 1 }
]
});
this.tooltipTemplate.fields.bind('reset', this.callback, this);
});
it('should reset the fields when new fields are given', function () {
this.tooltipTemplate.update({
fields: [
{ name: 'Name', title: true, position: 1 },
{ name: 'Description', title: false, position: 2 }
]
});
expect(this.tooltipTemplate.fields.toJSON()).toEqual([
{ name: 'Name', title: true, position: 1 },
{ name: 'Description', title: false, position: 2 }
]);
expect(this.callback).toHaveBeenCalled();
});
it('should NOT reset the fields when given the same fields', function () {
this.tooltipTemplate.update({
fields: [
{ name: 'Name', title: true, position: 1 }
]
});
expect(this.tooltipTemplate.fields.toJSON()).toEqual([
{ name: 'Name', title: true, position: 1 }
]);
expect(this.callback).not.toHaveBeenCalled();
});
it('should NOT reset the fields when given the same fields with different `position`', function () {
this.tooltipTemplate.update({
fields: [
{ name: 'Name', title: true, position: 2 }
]
});
expect(this.tooltipTemplate.fields.toJSON()).toEqual([
{ name: 'Name', title: true, position: 1 }
]);
expect(this.callback).not.toHaveBeenCalled();
});
it('should reset the fields when given the same fields with different `position` and order', function () {
this.tooltipTemplate.update({
fields: [
{ name: 'Name', title: true, position: 0 },
{ name: 'Description', title: true, position: 1 }
]
});
expect(this.callback).toHaveBeenCalled();
this.callback.calls.reset();
this.tooltipTemplate.update({
fields: [
{ name: 'Description', title: true, position: 0 },
{ name: 'Name', title: true, position: 1 }
]
});
expect(this.callback).toHaveBeenCalled();
});
it('should clone alternative names', function () {
var callback = jasmine.createSpy('callback');
this.tooltipTemplate.bind('change', callback);
var alternativeNames = {
'name': 'Nombre'
};
this.tooltipTemplate.update({
alternative_names: alternativeNames
});
expect(callback).toHaveBeenCalled();
callback.calls.reset();
// Original object with names is changed
alternativeNames.description = 'Descripción';
this.tooltipTemplate.update({
alternative_names: alternativeNames
});
// Change event has been triggered
expect(callback).toHaveBeenCalled();
});
});
});