Files
cartodb/lib/assets/test/spec/builder/components/metrics/metrics-tracker.spec.js
2020-06-15 10:58:47 +08:00

46 lines
1.7 KiB
JavaScript

var MetricsTracker = require('builder/components/metrics/metrics-tracker');
var MetricsTypes = require('builder/components/metrics/metrics-types');
var MetricsModel = require('builder/components/metrics/metrics-model');
var Backbone = require('backbone');
describe('components/metrics/metrics-tracker', function () {
describe('.init', function () {
it('should require userId and visId from the initialization', function () {
expect(function () {
MetricsTracker.init({ userId: 'user', visId: 'vis' });
}).toThrowError('configModel is required');
MetricsTracker.init({ userId: 'paco', visId: 'jasmine', configModel: 'whatever' });
expect(MetricsTracker._userId).toBeDefined();
expect(MetricsTracker._visId).toBeDefined();
expect(MetricsTracker._configModel).toBeDefined();
});
});
describe('.track', function () {
beforeEach(function () {
var configModel = new Backbone.Model();
MetricsTracker.init({ userId: 'paco', visId: 'jasmine', configModel: configModel });
spyOn(MetricsModel.prototype, 'save');
});
it('should check event name is present', function () {
expect(function () {
MetricsTracker.track();
}).toThrowError('eventName is required');
});
it('should check event name is available', function () {
expect(function () {
MetricsTracker.track('MADE_UP_METRIC');
}).toThrowError('"MADE_UP_METRIC" is not an allowed event type');
});
it('should save metric model', function () {
var WHATEVER = MetricsTypes.STYLED_BY_VALUE;
MetricsTracker.track(WHATEVER);
expect(MetricsModel.prototype.save).toHaveBeenCalled();
});
});
});