checklist test
This commit is contained in:
parent
0f795a3882
commit
0487380535
src
test
@ -38,7 +38,7 @@
|
|||||||
* for details see http://stackoverflow.com/questions/7410348/how-to-set-json-format-to-html5-data-attributes-in-the-jquery
|
* for details see http://stackoverflow.com/questions/7410348/how-to-set-json-format-to-html5-data-attributes-in-the-jquery
|
||||||
*/
|
*/
|
||||||
tryParseJson: function(s, safe) {
|
tryParseJson: function(s, safe) {
|
||||||
if (typeof s === 'string' && s.length && s.match(/^\{.*\}$/)) {
|
if (typeof s === 'string' && s.length && s.match(/^[\{\[].*[\}\]]$/)) {
|
||||||
if (safe) {
|
if (safe) {
|
||||||
try {
|
try {
|
||||||
/*jslint evil: true*/
|
/*jslint evil: true*/
|
||||||
|
@ -55,7 +55,7 @@ $(function(){
|
|||||||
str2value: function(str) {
|
str2value: function(str) {
|
||||||
var reg, value = null;
|
var reg, value = null;
|
||||||
if(typeof str === 'string' && str.length) {
|
if(typeof str === 'string' && str.length) {
|
||||||
reg = new RegExp('\s*'+$.trim(this.options.separator)+'\s*');
|
reg = new RegExp('\\s*'+$.trim(this.options.separator)+'\\s*');
|
||||||
value = str.split(reg);
|
value = str.split(reg);
|
||||||
} else if($.isArray(str)) {
|
} else if($.isArray(str)) {
|
||||||
value = str;
|
value = str;
|
||||||
@ -86,9 +86,9 @@ $(function(){
|
|||||||
|
|
||||||
//collect text of checked boxes
|
//collect text of checked boxes
|
||||||
value2htmlFinal: function(value, element) {
|
value2htmlFinal: function(value, element) {
|
||||||
var selected = [], html = '';
|
var selected = [], item, i, html = '';
|
||||||
if($.isArray(value) && value.length <= this.options.limit) {
|
if($.isArray(value) && value.length <= this.options.limit) {
|
||||||
for(var i=0; i<value.length; i++){
|
for(i=0; i<value.length; i++){
|
||||||
item = this.itemByVal(value[i]);
|
item = this.itemByVal(value[i]);
|
||||||
if(item) {
|
if(item) {
|
||||||
selected.push($('<div>').text(item.text).html());
|
selected.push($('<div>').text(item.text).html());
|
||||||
@ -140,9 +140,9 @@ $(function(){
|
|||||||
|
|
||||||
@property limitText
|
@property limitText
|
||||||
@type string
|
@type string
|
||||||
@default 'Checked {checked} options of {count}'
|
@default 'Selected {checked} of {count}'
|
||||||
**/
|
**/
|
||||||
limitText: 'Checked {checked} options of {count}'
|
limitText: 'Selected {checked} of {count}'
|
||||||
});
|
});
|
||||||
|
|
||||||
$.fn.editableform.types.checklist = Checklist;
|
$.fn.editableform.types.checklist = Checklist;
|
||||||
|
@ -209,7 +209,7 @@ List - abstract class for inputs that have source option loaded from js array or
|
|||||||
//search for item by particular value
|
//search for item by particular value
|
||||||
itemByVal: function(val) {
|
itemByVal: function(val) {
|
||||||
if($.isArray(this.sourceData)) {
|
if($.isArray(this.sourceData)) {
|
||||||
for(i=0; i<this.sourceData.length; i++){
|
for(var i=0; i<this.sourceData.length; i++){
|
||||||
/*jshint eqeqeq: false*/
|
/*jshint eqeqeq: false*/
|
||||||
if(this.sourceData[i].value == val) {
|
if(this.sourceData[i].value == val) {
|
||||||
/*jshint eqeqeq: true*/
|
/*jshint eqeqeq: true*/
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
<script src="unit/select.js"></script>
|
<script src="unit/select.js"></script>
|
||||||
<script src="unit/textarea.js"></script>
|
<script src="unit/textarea.js"></script>
|
||||||
<script src="unit/api.js"></script>
|
<script src="unit/api.js"></script>
|
||||||
|
<script src="unit/checklist.js"></script>
|
||||||
<script>
|
<script>
|
||||||
if(fc.f === 'bootstrap') {
|
if(fc.f === 'bootstrap') {
|
||||||
loadJs('unit/date.js');
|
loadJs('unit/date.js');
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
var timeout = 200;
|
var timeout = 200;
|
||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
$.mockjaxSettings.responseTime = 50;
|
$.mockjaxSettings.responseTime = 50;
|
||||||
|
|
||||||
$.mockjax({
|
$.mockjax({
|
||||||
url: 'post.php',
|
url: 'post.php',
|
||||||
@ -23,6 +23,38 @@ $(function () {
|
|||||||
this.responseText = settings;
|
this.responseText = settings;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
window.groups = {
|
||||||
|
0: 'Guest',
|
||||||
|
1: 'Service',
|
||||||
|
2: 'Customer',
|
||||||
|
3: 'Operator',
|
||||||
|
4: 'Support',
|
||||||
|
5: 'Admin',
|
||||||
|
6: '',
|
||||||
|
'': 'Nothing'
|
||||||
|
};
|
||||||
|
|
||||||
|
//groups as array
|
||||||
|
window.groupsArr = [];
|
||||||
|
for(var i in groups) {
|
||||||
|
groupsArr.push({value: i, text: groups[i]});
|
||||||
|
}
|
||||||
|
|
||||||
|
window.size = groupsArr.length;
|
||||||
|
|
||||||
|
$.mockjax({
|
||||||
|
url: 'groups.php',
|
||||||
|
responseText: groups
|
||||||
|
});
|
||||||
|
|
||||||
|
$.mockjax({
|
||||||
|
url: 'groups-error.php',
|
||||||
|
status: 500,
|
||||||
|
responseText: 'Internal Server Error'
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// usefull functions
|
// usefull functions
|
||||||
|
96
test/unit/checklist.js
Normal file
96
test/unit/checklist.js
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
$(function () {
|
||||||
|
|
||||||
|
module("checklist", {
|
||||||
|
setup: function(){
|
||||||
|
sfx = $('#qunit-fixture'),
|
||||||
|
fx = $('#async-fixture');
|
||||||
|
$.fn.editable.defaults.name = 'name2';
|
||||||
|
//clear cache
|
||||||
|
$(document).removeData('groups.php-'+$.fn.editable.defaults.name);
|
||||||
|
$.support.transition = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
asyncTest("should load options, set correct value and save new value", function () {
|
||||||
|
var sep = '-',
|
||||||
|
newValue,
|
||||||
|
e = $('<a href="#" data-type="checklist" data-url="post.php"></a>').appendTo(fx).editable({
|
||||||
|
pk: 1,
|
||||||
|
source: groupsArr,
|
||||||
|
value: [2, 3],
|
||||||
|
viewseparator: sep
|
||||||
|
});
|
||||||
|
|
||||||
|
equal(e.text(), groups[2]+sep+groups[3], 'autotext ok');
|
||||||
|
|
||||||
|
e.click();
|
||||||
|
var p = tip(e);
|
||||||
|
equal(p.find('input[type="checkbox"]').length, groupsArr.length, 'checkboxes rendered');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').length, 2, 'checked count ok');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').eq(0).val(), 2, '1st checked');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').eq(1).val(), 3, '2nd checked');
|
||||||
|
|
||||||
|
//set new value
|
||||||
|
p.find('input[type="checkbox"]:checked').eq(0).click();
|
||||||
|
p.find('input[type="checkbox"]').first().click();
|
||||||
|
newValue = p.find('input[type="checkbox"]').first().val();
|
||||||
|
|
||||||
|
//submit
|
||||||
|
p.find('form').submit();
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
ok(!p.is(':visible'), 'popup closed');
|
||||||
|
|
||||||
|
equal(e.data('editable').value.join(''), [newValue, 3].join(''), 'new value ok')
|
||||||
|
equal(e.text(), groups[newValue]+sep+groups[3], 'new text ok');
|
||||||
|
|
||||||
|
// open container again to see what checked
|
||||||
|
e.click()
|
||||||
|
p = tip(e);
|
||||||
|
|
||||||
|
equal(p.find('input[type="checkbox"]').length, groupsArr.length, 'checkboxes rendered');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').length, 2, 'checked count ok');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').eq(0).val(), newValue, '1st checked');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').eq(1).val(), 3, '2nd checked');
|
||||||
|
|
||||||
|
e.remove();
|
||||||
|
start();
|
||||||
|
}, timeout);
|
||||||
|
});
|
||||||
|
|
||||||
|
asyncTest("test limit", function () {
|
||||||
|
var e = $('<a href="#" data-type="checklist" data-value="2,3" data-url="post.php"></a>').appendTo(fx).editable({
|
||||||
|
pk: 1,
|
||||||
|
source: groupsArr,
|
||||||
|
limit: 1,
|
||||||
|
limitText: '{checked} of {count}'
|
||||||
|
});
|
||||||
|
|
||||||
|
equal(e.text(), '2 of '+groupsArr.length, 'autotext ok');
|
||||||
|
|
||||||
|
e.click();
|
||||||
|
var p = tip(e);
|
||||||
|
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').length, 2, 'checked count ok');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').eq(0).val(), 2, '1st checked');
|
||||||
|
equal(p.find('input[type="checkbox"]:checked').eq(1).val(), 3, '2nd checked');
|
||||||
|
|
||||||
|
//set new value
|
||||||
|
p.find('input[type="checkbox"]').first().click();
|
||||||
|
newValue = p.find('input[type="checkbox"]').first().val();
|
||||||
|
|
||||||
|
//submit
|
||||||
|
p.find('form').submit();
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
ok(!p.is(':visible'), 'popup closed');
|
||||||
|
|
||||||
|
equal(e.text(), '3 of '+groupsArr.length, 'autotext ok');
|
||||||
|
|
||||||
|
e.remove();
|
||||||
|
start();
|
||||||
|
}, timeout);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
@ -1,34 +1,4 @@
|
|||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
window.groups = {
|
|
||||||
0: 'Guest',
|
|
||||||
1: 'Service',
|
|
||||||
2: 'Customer',
|
|
||||||
3: 'Operator',
|
|
||||||
4: 'Support',
|
|
||||||
5: 'Admin',
|
|
||||||
6: '',
|
|
||||||
'': 'Nothing'
|
|
||||||
};
|
|
||||||
|
|
||||||
//groups as array
|
|
||||||
window.groupsArr = [];
|
|
||||||
for(var i in groups) {
|
|
||||||
groupsArr.push({value: i, text: groups[i]});
|
|
||||||
}
|
|
||||||
|
|
||||||
window.size = groupsArr.length;
|
|
||||||
|
|
||||||
$.mockjax({
|
|
||||||
url: 'groups.php',
|
|
||||||
responseText: groups
|
|
||||||
});
|
|
||||||
|
|
||||||
$.mockjax({
|
|
||||||
url: 'groups-error.php',
|
|
||||||
status: 500,
|
|
||||||
responseText: 'Internal Server Error'
|
|
||||||
});
|
|
||||||
|
|
||||||
module("select", {
|
module("select", {
|
||||||
setup: function(){
|
setup: function(){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user