Files
carto.js/test/spec/vis/dataviews-tracker.spec.js
2020-06-13 18:34:34 +08:00

60 lines
1.8 KiB
JavaScript

var DataviewsCollection = require('../../../src/dataviews/dataviews-collection');
var DataviewModel = require('../../../src/dataviews/dataview-model-base');
var whenAllDataviewsFetched = require('../../../src/vis/dataviews-tracker');
var MockFactory = require('../../helpers/mockFactory');
describe('src/vis/dataviews-tracker', function () {
var options = {
map: {},
engine: {}
};
beforeEach(function () {
this.dataviewsFetched = jasmine.createSpy('dataviewsFetched');
this.source = MockFactory.createAnalysisModel({ id: 'a1' });
this.onDataviewsfetched = jasmine.createSpy('onDataviewsfetched');
this.dataviewsCollection = new DataviewsCollection([]);
whenAllDataviewsFetched(this.dataviewsCollection, this.onDataviewsfetched);
});
it('should check fetchStatus when any dataviews changes', function () {
var dataview1 = new DataviewModel({
source: this.source
}, options);
this.dataviewsCollection.add(dataview1);
var dataview2 = new DataviewModel({
source: this.source
}, options);
this.dataviewsCollection.add(dataview2);
this.onDataviewsfetched.calls.reset();
dataview1.set('status', 'fetched');
expect(this.onDataviewsfetched).not.toHaveBeenCalled();
});
it('should trigger dataviewsFetched event when all dataviews fetches', function () {
var dataview1 = new DataviewModel({
source: this.source
}, options);
this.dataviewsCollection.add(dataview1);
var dataview2 = new DataviewModel({
source: this.source
}, options);
this.dataviewsCollection.add(dataview2);
this.onDataviewsfetched.calls.reset();
dataview1.set('status', 'fetched');
dataview2.set('status', 'fetched');
expect(this.onDataviewsfetched).toHaveBeenCalled();
});
});