78 lines
2.3 KiB
JavaScript
78 lines
2.3 KiB
JavaScript
/* eslint-env jasmine, jquery */
|
|
/* global loadFixtures */
|
|
|
|
'use strict';
|
|
|
|
describe('visibility', function() {
|
|
var select = false;
|
|
|
|
beforeEach(function() {
|
|
jasmine.getFixtures().fixturesPath = 'base/test/fixtures';
|
|
loadFixtures('basic.html');
|
|
|
|
select = $('#basic');
|
|
select.selectric();
|
|
});
|
|
|
|
it('should toggle visibility on click', function() {
|
|
$('.selectric-wrapper').find('.selectric').trigger('click');
|
|
expect($('.selectric-items').is(':visible')).toBe(true);
|
|
$('.selectric-wrapper').find('.selectric').trigger('click');
|
|
expect($('.selectric-items').is(':visible')).toBe(false);
|
|
});
|
|
|
|
it('should open on focus', function() {
|
|
$('.selectric-input').focusin();
|
|
expect($('.selectric-items').is(':visible')).toBe(true);
|
|
});
|
|
|
|
it('should add .selectric-focus on focusin', function() {
|
|
$('.selectric-input').focusin();
|
|
expect($('.selectric-wrapper').hasClass('selectric-focus')).toBe(true);
|
|
});
|
|
|
|
it('should remove .selectric-focus on focusout', function() {
|
|
$('.selectric-input').focusin().focusout();
|
|
expect($('.selectric-wrapper').hasClass('selectric-focus')).toBe(false);
|
|
});
|
|
|
|
it('should prevent the flicker when focusing out and back again', function() {
|
|
var spy = spyOn($.fn, 'blur');
|
|
$('.selectric-input').focusin().trigger('blur').trigger('blur').trigger('blur');
|
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('should open/close on click', function() {
|
|
$('.selectric').click();
|
|
expect($('.selectric-items').is(':visible')).toBe(true);
|
|
$('.selectric').click();
|
|
expect($('.selectric-items').is(':visible')).toBe(false);
|
|
});
|
|
|
|
it('should open/close programmatically', function() {
|
|
select.selectric('open');
|
|
expect($('.selectric-items').is(':visible')).toBe(true);
|
|
select.selectric('close');
|
|
expect($('.selectric-items').is(':visible')).toBe(false);
|
|
});
|
|
|
|
it('should open on mouseover and close after timeout', function(done) {
|
|
select.selectric({
|
|
openOnHover: true,
|
|
hoverIntentTimeout: 30
|
|
});
|
|
|
|
var $wrapper = $('.selectric-wrapper');
|
|
var $optionsBox = $('.selectric-items');
|
|
|
|
$wrapper.trigger('mouseenter');
|
|
expect($optionsBox.is(':visible')).toBe(true);
|
|
|
|
$wrapper.trigger('mouseleave');
|
|
setTimeout(function() {
|
|
expect($optionsBox.is(':visible')).toBe(false);
|
|
done();
|
|
}, 40);
|
|
});
|
|
});
|