summaryrefslogtreecommitdiffstats
path: root/test/spec/multiSelectSpec.js
diff options
context:
space:
mode:
authorLouis Cuny <louiscuny@gmail.com>2012-07-26 12:26:57 +0200
committerLouis Cuny <louiscuny@gmail.com>2012-07-26 12:26:57 +0200
commite8abd1eaf4979316d82abac7ecb71418b43c0ff0 (patch)
treee02c5f9dce44e510e2a91a9c9c402c67863527fc /test/spec/multiSelectSpec.js
parent37305b1ae00565d4b328da4dbe93109571bd744c (diff)
downloadmulti-select-e8abd1eaf4979316d82abac7ecb71418b43c0ff0.zip
multi-select-e8abd1eaf4979316d82abac7ecb71418b43c0ff0.tar.gz
multi-select-e8abd1eaf4979316d82abac7ecb71418b43c0ff0.tar.bz2
replace attr by prop() methodto determine if option is selected
Diffstat (limited to 'test/spec/multiSelectSpec.js')
-rw-r--r--test/spec/multiSelectSpec.js59
1 files changed, 53 insertions, 6 deletions
diff --git a/test/spec/multiSelectSpec.js b/test/spec/multiSelectSpec.js
index eca1b3c..65cbea8 100644
--- a/test/spec/multiSelectSpec.js
+++ b/test/spec/multiSelectSpec.js
@@ -5,14 +5,17 @@ describe("multiSelect", function() {
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');
+ $('<option value="value'+i+'">text'+i+'</option>').appendTo($("#multi-select"));
};
select = $("#multi-select");
- select.multiSelect();
- msContainer = select.next();
});
- describe('init', function(){
+ describe('init without options', function(){
+
+ beforeEach(function() {
+ select.multiSelect();
+ msContainer = select.next();
+ });
it('should hide the standard select', function(){
expect(select.css('position')).toBe('absolute');
@@ -39,13 +42,53 @@ describe("multiSelect", function() {
expect($('.ms-selection ul.ms-list li').length).toEqual(0);
});
+ });
+
+ describe('init 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[ms-value="'+value+'"]')).toBe('.ms-selected');
+ });
+ expect($('.ms-selectable ul.ms-list li.ms-selected').length).toEqual(2);
+ });
+ });
+
+ describe('init with keepOrder option activated', function(){
+ beforeEach(function() {
+ $('#multi-select').multiSelect({ keepOrder: true });
+ msContainer = select.next();
+ firstItem = $('.ms-selectable ul.ms-list li').first()
+ lastItem = $('.ms-selectable ul.ms-list li').last();
+ lastItem.trigger('click');
+ firstItem.trigger('click');
+ });
+ it('should keep order on selection list', function(){
+ expect($('.ms-selection li', msContainer).first().attr('ms-value')).toBe('value1');
+ expect($('.ms-selection li', msContainer).last().attr('ms-value')).toBe('value10');
+ });
});
+
+
describe("When selectable item is clicked", function(){
var clickedItem;
- beforeEach(function(){
+ beforeEach(function() {
+ $('#multi-select').multiSelect();
clickedItem = $('.ms-selectable ul.ms-list li').first();
spyOnEvent(select, 'change');
clickedItem.trigger('click');
@@ -70,10 +113,14 @@ describe("multiSelect", function() {
it('should trigger the standard select change event', function(){
expect('change').toHaveBeenTriggeredOn("#multi-select");
});
+
+ afterEach(function(){
+ select.multiSelect('deselect_all');
+ });
+
});
afterEach(function () {
$("#multi-select, .ms-container").remove();
});
-
}); \ No newline at end of file