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

143 lines
4.8 KiB
JavaScript

/* eslint-env jasmine, jquery */
/* global loadFixtures */
'use strict';
describe('multiple selects', function() {
var select = false;
beforeEach(function() {
jasmine.getFixtures().fixturesPath = 'base/test/fixtures';
loadFixtures('multiple.html');
select = $('#multiple');
select.selectric();
});
it('should set a proper state for multiple', function() {
expect(select.data('selectric').state.multiple).toBe(true);
});
it('should set a proper state for currValue', function() {
select.find('option').eq(2).prop('selected', true);
select.find('option').eq(3).prop('selected', true);
select.selectric('refresh');
expect(select.data('selectric').state.currValue.length).toBe(2);
});
it('should render the default option (please choose)', function () {
$('.selectric').click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Please choose...');
});
it('should render the default option (please choose) even if no value were given', function () {
$('.selectric').click();
select.find('option').first().removeAttr('value');
expect($('.selectric-wrapper').find('.label').text()).toBe('Please choose...');
});
it('should set the first option if no default option (please choose) is given', function () {
$('.selectric').click();
select.find('option').first().remove();
select.selectric('refresh');
expect($('.selectric-wrapper').find('.label').text()).toBe('Ant');
});
it('should update label', function () {
var listItems = $('.selectric-items');
$('.selectric').click();
listItems.find('li').eq(1).click();
listItems.find('li').eq(3).click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Ant, Dog');
});
it('should update label after a option was deselected', function () {
var listItems = $('.selectric-items');
$('.selectric').click();
listItems.find('li').eq(1).click();
listItems.find('li').eq(3).click();
listItems.find('li').eq(1).click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Dog');
});
it('should restore default option after all options were deselected', function () {
var listItems = $('.selectric-items');
$('.selectric').click();
listItems.find('li').eq(1).click();
listItems.find('li').eq(3).click();
listItems.find('li').eq(1).click();
listItems.find('li').eq(3).click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Please choose...');
});
it('should use the label builder', function() {
select = $('#multiple');
select.selectric({
labelBuilder: function(item) {
return '<h2>' + item.text + '</h2>';
}
});
$('.selectric').click();
expect($('.selectric-wrapper').find('.label > h2').length).toBe(1);
});
it('should not select disabled items', function() {
var listItems = $('.selectric-items');
select.find('option').eq(3).prop('disabled', true);
select.selectric('refresh');
listItems.find('li').eq(3).click();
$('.selectric').click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Please choose...');
});
describe('maxLabelEntries', function() {
beforeEach(function() {
jasmine.getFixtures().fixturesPath = 'base/test/fixtures';
loadFixtures('multiple.html');
select = $('#multiple');
select.selectric({
multiple: {
maxLabelEntries: 3,
keepMenuOpen: true
}
});
});
it('should respect maxLabelEntries and add three dots to the last element', function() {
var listItems = $('.selectric-items');
$('.selectric').click();
listItems.find('li').eq(1).click();
listItems.find('li').eq(2).click();
listItems.find('li').eq(3).click();
listItems.find('li').eq(4).click();
$('.selectric').click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Ant, Cat, Dog, ...');
});
it('should remove three dots if amount of selected items is less then maxLabelEntries', function() {
var listItems = $('.selectric-items');
$('.selectric').click();
listItems.find('li').eq(1).click();
listItems.find('li').eq(2).click();
listItems.find('li').eq(3).click();
listItems.find('li').eq(4).click();
listItems.find('li').eq(4).click();
$('.selectric').click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Ant, Cat, Dog');
});
it('should build the label correctly by ignoring case or whitespace', function() {
var listItems = $('.selectric-items');
$('.selectric').click();
listItems.find('li').eq(5).click();
listItems.find('li').eq(6).click();
$('.selectric').click();
expect($('.selectric-wrapper').find('.label').text()).toBe('Losabim Oxigenium, Dagobert Duck');
});
});
});