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

81 lines
1.9 KiB
JavaScript

var Backbone = require('backbone');
var ApplyButtonView = require('builder/components/apply-button/apply-button-view');
var ApplyButtonTemplate = require('builder/components/apply-button/apply-button.tpl');
describe('components/apply-button-view', function () {
var view, overlayModel, onApplyClick;
var createViewFn = function (options) {
overlayModel = new Backbone.Model({
visible: options.visible
});
onApplyClick = jasmine.createSpy();
var view = new ApplyButtonView({
onApplyClick: onApplyClick,
overlayModel: overlayModel
});
spyOn(view, '_onClick').and.callThrough();
return view;
};
beforeEach(function () {
view = createViewFn({
visible: false
});
view.render();
});
describe('.render', function () {
it('should have no leaks', function () {
expect(view).toHaveNoLeaks();
});
it('should render apply button', function () {
expect(view.$el.html()).toBe(ApplyButtonTemplate({ disabled: overlayModel.get('visible') }));
});
});
describe('._initBinds', function () {
it('should listen to _overlayModel:visible and call .render()', function () {
spyOn(view, 'render');
view._initBinds();
overlayModel.trigger('change:visible');
expect(view.render).toHaveBeenCalled();
});
});
describe('._onClick', function () {
beforeEach(function () {
onApplyClick.calls.reset();
});
it('should execute callback if not disabled', function () {
view = createViewFn({
visible: false
});
view._onClick();
expect(onApplyClick).toHaveBeenCalled();
expect(view._onClick).toHaveBeenCalled();
});
it('should not execute callback if disabled', function () {
view = createViewFn({
visible: true
});
view._onClick();
expect(view._onClick).toHaveBeenCalled();
expect(onApplyClick).not.toHaveBeenCalled();
});
});
});