cartodb-4.42/lib/assets/test/spec/deep-insights/widgets/widgets-collection.spec.js

56 lines
1.9 KiB
JavaScript
Raw Normal View History

2024-04-06 13:25:13 +08:00
var WidgetsCollection = require('../../../../javascripts/deep-insights/widgets/widgets-collection');
var _ = require('underscore');
var Backbone = require('backbone');
describe('widgets/widgets-collection', function () {
beforeEach(function () {
// "Removed" debounce for not conflict with tests
spyOn(_, 'debounce').and.callFake(function (func) {
return function () {
func.apply(this, arguments);
};
});
this.collection = new WidgetsCollection();
spyOn(this.collection, 'sort');
this.collection.reset([
{order: 0, autoStyle: false},
{order: 1},
{order: 2, autoStyle: true}
]);
});
it('should only allow autoStyle in one layer at a time', function () {
var m1 = this.collection.at(0);
var m2 = this.collection.at(1);
var m3 = this.collection.at(2);
m1.layerModel = new Backbone.Model({ layer_name: 'l1' });
m2.layerModel = new Backbone.Model({ layer_name: 'l2' });
m3.layerModel = new Backbone.Model({ layer_name: 'l1' });
expect(m1.get('autoStyle')).toBeFalsy();
expect(m2.get('autoStyle')).toBeUndefined();
expect(m3.get('autoStyle')).toBeTruthy();
m1.set('autoStyle', true);
expect(m1.get('autoStyle')).toBeTruthy();
expect(m2.get('autoStyle')).toBeUndefined();
expect(m3.get('autoStyle')).toBeFalsy();
m2.set('autoStyle', true);
expect(m1.get('autoStyle')).toBeTruthy();
expect(m2.get('autoStyle')).toBeTruthy();
expect(m3.get('autoStyle')).toBeFalsy();
});
it('should sort the collection and trigger orderChanged event when any widget order changes', function () {
var orderChangedSpy = jasmine.createSpy('orderChanged');
this.collection.on('orderChanged', orderChangedSpy);
this.collection.at(0).set('order', 3);
this.collection.at(1).set('order', 2);
this.collection.at(2).set('order', 1);
expect(this.collection.sort).toHaveBeenCalled();
expect(orderChangedSpy).toHaveBeenCalled();
});
});