First Initial
This commit is contained in:
19
wwwroot/BackendScript/assets/jquery-multi-select/test/spec/SpecHelper.js
vendored
Normal file
19
wwwroot/BackendScript/assets/jquery-multi-select/test/spec/SpecHelper.js
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
var select;
|
||||
var msContainer;
|
||||
|
||||
beforeEach(function() {
|
||||
$('<select id="multi-select" multiple="multiple" name="test[]"></select>').appendTo('body');
|
||||
for (var i=1; i <= 10; i++) {
|
||||
$('<option value="value'+i+'">text'+i+'</option>').appendTo($("#multi-select"));
|
||||
};
|
||||
select = $("#multi-select");
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
$("#multi-select, #multi-select-optgroup, .ms-container").remove();
|
||||
});
|
||||
|
||||
sanitize = function(value){
|
||||
reg = new RegExp("\\W+", 'gi');
|
||||
return value.replace(reg, '_');
|
||||
}
|
||||
253
wwwroot/BackendScript/assets/jquery-multi-select/test/spec/multiSelectSpec.js
vendored
Normal file
253
wwwroot/BackendScript/assets/jquery-multi-select/test/spec/multiSelectSpec.js
vendored
Normal file
@@ -0,0 +1,253 @@
|
||||
describe("multiSelect", function() {
|
||||
|
||||
describe('init', function(){
|
||||
it ('should be chainable', function(){
|
||||
select.multiSelect().addClass('chainable');
|
||||
expect(select.hasClass('chainable')).toBeTruthy();
|
||||
});
|
||||
describe('without options', function(){
|
||||
|
||||
beforeEach(function() {
|
||||
select.multiSelect();
|
||||
msContainer = select.next();
|
||||
});
|
||||
|
||||
it('should hide the original select', function(){
|
||||
expect(select.css('position')).toBe('absolute');
|
||||
expect(select.css('left')).toBe('-9999px');
|
||||
});
|
||||
|
||||
it('should create a container', function(){
|
||||
expect(msContainer).toBe('div.ms-container');
|
||||
});
|
||||
|
||||
it ('should create a selectable and a selection container', function(){
|
||||
expect(msContainer).toContain('div.ms-selectable, div.ms-selection');
|
||||
});
|
||||
|
||||
it ('should create a list for both selectable and selection container', function(){
|
||||
expect(msContainer).toContain('div.ms-selectable ul.ms-list, div.ms-selection ul.ms-list');
|
||||
});
|
||||
|
||||
it ('should populate the selectable list', function(){
|
||||
expect($('.ms-selectable ul.ms-list li').length).toEqual(10);
|
||||
});
|
||||
|
||||
it ('should populate the selection list', function(){
|
||||
expect($('.ms-selectable ul.ms-list li').length).toEqual(10);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('with pre-selected options', function(){
|
||||
|
||||
var selectedValues = [];
|
||||
|
||||
beforeEach(function() {
|
||||
var firstOption = select.children('option').first();
|
||||
var lastOption = select.children('option').last();
|
||||
firstOption.prop('selected', true);
|
||||
lastOption.prop('selected', true);
|
||||
selectedValues.push(firstOption.val(), lastOption.val());
|
||||
select.multiSelect();
|
||||
msContainer = select.next();
|
||||
});
|
||||
|
||||
it ('should select the pre-selected options', function(){
|
||||
$.each(selectedValues, function(index, value){
|
||||
expect($('.ms-selectable ul.ms-list li#'+sanitize(value)+'-selectable')).toBe('.ms-selected');
|
||||
});
|
||||
expect($('.ms-selectable ul.ms-list li.ms-selected').length).toEqual(2);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('optgroup', function(){
|
||||
var optgroupMsContainer, optgroupSelect, optgroupLabels;
|
||||
|
||||
beforeEach(function() {
|
||||
$('<select id="multi-select-optgroup" multiple="multiple" name="testy[]"></select>').appendTo('body');
|
||||
for (var o=1; o <= 10; o++) {
|
||||
var optgroup = $('<optgroup label="opgroup'+o+'"></optgroup>')
|
||||
for (var i=1; i <= 10; i++) {
|
||||
var value = i + (o * 10);
|
||||
$('<option value="value'+value+'">text'+value+'</option>').appendTo(optgroup);
|
||||
};
|
||||
optgroup.appendTo($("#multi-select-optgroup"));
|
||||
}
|
||||
optgroupSelect = $("#multi-select-optgroup");
|
||||
});
|
||||
|
||||
describe('init', function(){
|
||||
describe('with selectableOptgroup option set to false', function(){
|
||||
beforeEach(function(){
|
||||
optgroupSelect.multiSelect({ selectableOptgroup: false });
|
||||
optgroupMsContainer = optgroupSelect.next();
|
||||
optgroupLabels = optgroupMsContainer.find('.ms-selectable .ms-optgroup-label');
|
||||
});
|
||||
|
||||
it ('sould display all optgroups', function(){
|
||||
expect(optgroupLabels.length).toEqual(10);
|
||||
});
|
||||
|
||||
it ('should do nothing when clicking on optgroup', function(){
|
||||
var clickedOptGroupLabel = optgroupLabels.first();
|
||||
clickedOptGroupLabel.trigger('click');
|
||||
expect(optgroupSelect.val()).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('with selectableOptgroup option set to true', function(){
|
||||
beforeEach(function(){
|
||||
optgroupSelect.multiSelect({ selectableOptgroup: true });
|
||||
optgroupMsContainer = optgroupSelect.next();
|
||||
optgroupLabels = optgroupMsContainer.find('.ms-selectable .ms-optgroup-label');
|
||||
});
|
||||
|
||||
it ('should select all nested options when clicking on optgroup', function(){
|
||||
var clickedOptGroupLabel = optgroupLabels.first();
|
||||
clickedOptGroupLabel.trigger('click');
|
||||
expect(optgroupSelect.val().length).toBe(10);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('select', function(){
|
||||
|
||||
describe('multiple values (Array)', function(){
|
||||
var values = ['value1', 'value2', 'value7'];
|
||||
beforeEach(function(){
|
||||
$('#multi-select').multiSelect();
|
||||
$('#multi-select').multiSelect('select', values);
|
||||
});
|
||||
|
||||
it('should select corresponding option', function(){
|
||||
expect(select.val()).toEqual(values);
|
||||
});
|
||||
});
|
||||
|
||||
describe('single value (String)', function(){
|
||||
var value = 'value1';
|
||||
|
||||
beforeEach(function(){
|
||||
$('#multi-select').multiSelect();
|
||||
$('#multi-select').multiSelect('select', value);
|
||||
});
|
||||
|
||||
it('should select corresponding option', function(){
|
||||
expect($.inArray(value, select.val()) > -1).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
describe("on click", function(){
|
||||
var clickedItem, value;
|
||||
|
||||
beforeEach(function() {
|
||||
$('#multi-select').multiSelect();
|
||||
clickedItem = $('.ms-selectable ul.ms-list li').first();
|
||||
value = clickedItem.data('ms-value');
|
||||
spyOnEvent(select, 'change');
|
||||
spyOnEvent(select, 'focus');
|
||||
clickedItem.trigger('click');
|
||||
});
|
||||
|
||||
it('should hide selected item', function(){
|
||||
expect(clickedItem).toBeHidden();
|
||||
});
|
||||
|
||||
it('should add the .ms-selected class to the selected item', function(){
|
||||
expect(clickedItem.hasClass('ms-selected')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should select corresponding option', function(){
|
||||
expect(select.find('option[value="'+value+'"]')).toBeSelected();
|
||||
});
|
||||
|
||||
it('should show the associated selected item', function(){
|
||||
expect($('#'+sanitize(value)+'-selection')).toBe(':visible');
|
||||
});
|
||||
|
||||
it('should trigger the original select change event', function(){
|
||||
expect('change').toHaveBeenTriggeredOn("#multi-select");
|
||||
});
|
||||
|
||||
afterEach(function(){
|
||||
select.multiSelect('deselect_all');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('deselect', function(){
|
||||
describe('multiple values (Array)', function(){
|
||||
var selectedValues = ['value1', 'value2', 'value7'],
|
||||
deselectValues = ['value1', 'value2'];
|
||||
beforeEach(function(){
|
||||
$('#multi-select').multiSelect();
|
||||
$('#multi-select').multiSelect('select', selectedValues);
|
||||
$('#multi-select').multiSelect('deselect', deselectValues);
|
||||
});
|
||||
|
||||
it('should select corresponding option', function(){
|
||||
expect(select.val()).toEqual(['value7']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('single value (String)', function(){
|
||||
var selectedValues = ['value1', 'value2', 'value7'],
|
||||
deselectValue = 'value2';
|
||||
|
||||
beforeEach(function(){
|
||||
$('#multi-select').multiSelect();
|
||||
$('#multi-select').multiSelect('select', selectedValues);
|
||||
$('#multi-select').multiSelect('deselect', deselectValue);
|
||||
});
|
||||
|
||||
it('should select corresponding option', function(){
|
||||
expect($.inArray(deselectValue, select.val()) > -1).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe("on click", function(){
|
||||
var clickedItem, value;
|
||||
var correspondingSelectableItem;
|
||||
|
||||
beforeEach(function() {
|
||||
$('#multi-select').find('option').first().prop('selected', true);
|
||||
$('#multi-select').multiSelect();
|
||||
|
||||
clickedItem = $('.ms-selection ul.ms-list li').first();
|
||||
value = clickedItem.attr('id').replace('-selection', '');
|
||||
correspondingSelectableItem = $('.ms-selection ul.ms-list li').first();
|
||||
spyOnEvent(select, 'change');
|
||||
spyOnEvent(select, 'focus');
|
||||
clickedItem.trigger('click');
|
||||
});
|
||||
|
||||
it ('should hide clicked item', function(){
|
||||
expect(clickedItem).toBe(':hidden');
|
||||
});
|
||||
|
||||
it('should show associated selectable item', function(){
|
||||
expect($('#'+value+'-selectable')).toBe(':visible');
|
||||
});
|
||||
|
||||
it('should remove the .ms-selected class to the corresponding selectable item', function(){
|
||||
expect(correspondingSelectableItem.hasClass('ms-selected')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should deselect corresponding option', function(){
|
||||
expect(select.find('option[value="'+value+'"]')).not.toBeSelected();
|
||||
});
|
||||
|
||||
it('should trigger the original select change event', function(){
|
||||
expect('change').toHaveBeenTriggeredOn("#multi-select");
|
||||
});
|
||||
|
||||
afterEach(function(){
|
||||
select.multiSelect('deselect_all');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user