MIF_E31212289/public/library/selectric/test/events.spec.js

131 lines
4.2 KiB
JavaScript

/* eslint-env jasmine, jquery */
/* global loadFixtures */
'use strict';
describe('events', function() {
var select = false;
beforeEach(function() {
jasmine.getFixtures().fixturesPath = 'base/test/fixtures';
loadFixtures('basic.html');
select = $('#basic');
select.selectric();
});
it('should trigger change event', function() {
var changedFn = jasmine.createSpy('changedFn');
select.on('change', changedFn);
$('.selectric').click();
$('.selectric-items').find('li:eq(4)').click();
expect(changedFn).toHaveBeenCalled();
});
it('should not trigger change event', function() {
var notChangedFn = jasmine.createSpy('notChangedFn');
select.on('change', notChangedFn);
$('.selectric').click();
$('.selectric-items').find('li.selected').click();
expect(notChangedFn).not.toHaveBeenCalled();
});
it('should trigger events', function() {
var events = jasmine.createSpyObj('events', [
'beforeInit',
'init',
'beforeOpen',
'open',
'beforeClose',
'close',
'beforeHighlight',
'highlight',
'beforeSelect',
'select',
'beforeChange',
'change',
'refresh'
]);
select.selectric('destroy');
select.on('selectric-before-init', events.beforeInit);
select.on('selectric-init', events.init);
select.on('selectric-before-open', events.beforeOpen);
select.on('selectric-open', events.open);
select.on('selectric-before-close', events.beforeClose);
select.on('selectric-close', events.close);
select.on('selectric-before-highlight', events.beforeHighlight);
select.on('selectric-highlight', events.highlight);
select.on('selectric-before-select', events.beforeSelect);
select.on('selectric-select', events.select);
select.on('selectric-before-change', events.beforeChange);
select.on('selectric-change', events.change);
select.on('selectric-refresh', events.refresh);
select.selectric();
$('.selectric').click();
$('.selectric-items').find('li:eq(4)').click();
select.selectric('refresh');
expect(events.beforeInit).toHaveBeenCalled();
expect(events.init).toHaveBeenCalled();
expect(events.beforeOpen).toHaveBeenCalled();
expect(events.open).toHaveBeenCalled();
expect(events.beforeClose).toHaveBeenCalled();
expect(events.close).toHaveBeenCalled();
expect(events.beforeHighlight).toHaveBeenCalled();
expect(events.highlight).toHaveBeenCalled();
expect(events.beforeSelect).toHaveBeenCalled();
expect(events.select).toHaveBeenCalled();
expect(events.beforeChange).toHaveBeenCalled();
expect(events.change).toHaveBeenCalled();
expect(events.refresh).toHaveBeenCalled();
});
it('should trigger callbacks', function() {
var callbacks = jasmine.createSpyObj('callbacks', [
'beforeInit',
'init',
'beforeOpen',
'open',
'beforeClose',
'close',
'beforeChange',
'change',
'refresh'
]);
select.selectric({
onBeforeInit: callbacks.beforeInit,
onInit: callbacks.init,
onBeforeOpen: callbacks.beforeOpen,
onOpen: callbacks.open,
onBeforeClose: callbacks.beforeClose,
onClose: callbacks.close,
onBeforeChange: callbacks.beforeChange,
onChange: callbacks.change,
onRefresh: callbacks.refresh
});
$('.selectric').click();
$('.selectric-items').find('li:eq(4)').click();
select.selectric('refresh');
expect(callbacks.beforeInit).toHaveBeenCalled();
expect(callbacks.init).toHaveBeenCalled();
expect(callbacks.beforeOpen).toHaveBeenCalled();
expect(callbacks.open).toHaveBeenCalled();
expect(callbacks.beforeClose).toHaveBeenCalled();
expect(callbacks.close).toHaveBeenCalled();
expect(callbacks.beforeChange).toHaveBeenCalled();
expect(callbacks.change).toHaveBeenCalled();
expect(callbacks.refresh).toHaveBeenCalled();
});
it('should not bind events when select is disabled after init', function() {
select.prop('disabled', true).selectric('refresh');
$('.selectric').trigger('click');
expect($('.selectric-wrapper').hasClass('selectric-open')).toBe(false);
});
});