mirror of
https://github.com/Hopiu/jquery-mobile.git
synced 2026-04-04 06:40:24 +00:00
94 lines
2.8 KiB
JavaScript
94 lines
2.8 KiB
JavaScript
/*
|
|
* mobile checkboxradio unit tests
|
|
*/
|
|
(function($){
|
|
module('jquery.mobile.forms.checkboxradio.js');
|
|
|
|
test( "widget can be disabled and enabled", function(){
|
|
var input = $("#checkbox-1");
|
|
var button = input.parent().find(".ui-btn");
|
|
|
|
input.checkboxradio("disable");
|
|
input.checkboxradio("enable");
|
|
ok(!input.attr("disabled"), "start input as enabled");
|
|
ok(!input.parent().hasClass("ui-disabled"), "no disabled styles");
|
|
ok(!input.attr("checked"), "not checked before click");
|
|
button.trigger("click");
|
|
ok(input.attr("checked"), "checked after click");
|
|
ok(button.hasClass("ui-btn-active"), "active styles after click");
|
|
button.trigger("click");
|
|
|
|
input.checkboxradio("disable");
|
|
ok(input.attr("disabled"), "input disabled");
|
|
ok(input.parent().hasClass("ui-disabled"), "disabled styles");
|
|
ok(!input.attr("checked"), "not checked before click");
|
|
button.trigger("click");
|
|
ok(!input.attr("checked"), "not checked after click");
|
|
ok(!button.hasClass("ui-btn-active"), "no active styles after click");
|
|
});
|
|
|
|
asyncTest( "change events fired on checkbox for both check and uncheck", function(){
|
|
var $checkbox = $("#checkbox-2"),
|
|
$checkboxLabel = $checkbox.parent().find(".ui-btn");
|
|
|
|
$checkbox.unbind("change");
|
|
|
|
expect( 2 );
|
|
|
|
$checkbox.change(function(){
|
|
ok(true, "change fired on click to check the box");
|
|
});
|
|
|
|
$checkboxLabel.trigger("click");
|
|
|
|
//test above will be triggered twice, and the start here once
|
|
$checkbox.change(function(){
|
|
start();
|
|
});
|
|
|
|
$checkboxLabel.trigger("click");
|
|
});
|
|
|
|
asyncTest( "radio button labels should update the active button class to last clicked and clear checked", function(){
|
|
var $radioBtns = $('#radio-active-btn-test input'),
|
|
singleActiveAndChecked = function(){
|
|
same($("#radio-active-btn-test .ui-btn-active").length, 1, "there should be only one active button");
|
|
same($("#radio-active-btn-test :checked").length, 1, "there should be only one checked");
|
|
};
|
|
|
|
$.testHelper.sequence([
|
|
function(){
|
|
$radioBtns.last().siblings('label').click();
|
|
},
|
|
|
|
function(){
|
|
ok($radioBtns.last().attr('checked'));
|
|
ok($radioBtns.last().siblings('label').hasClass('ui-btn-active'),
|
|
"last input label is an active button");
|
|
|
|
ok(!$radioBtns.first().attr('checked'));
|
|
ok(!$radioBtns.first().siblings('label').hasClass('ui-btn-active'),
|
|
"first input label is not active");
|
|
|
|
singleActiveAndChecked();
|
|
|
|
$radioBtns.first().siblings('label').click();
|
|
},
|
|
|
|
function(){
|
|
ok($radioBtns.first().attr('checked'));
|
|
ok($radioBtns.first().siblings('label').hasClass('ui-btn-active'),
|
|
"first input label is an active button");
|
|
|
|
ok(!$radioBtns.last().attr('checked'));
|
|
ok(!$radioBtns.last().siblings('label').hasClass('ui-btn-active'),
|
|
"last input label is not active");
|
|
|
|
singleActiveAndChecked();
|
|
|
|
start();
|
|
}
|
|
], 500);
|
|
|
|
});
|
|
})(jQuery);
|