81 lines
1.9 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
});
|