| 2 | | |
| 3 | | function methodTest( method ) { |
| 4 | | var v = jQuery("#form").validate(); |
| 5 | | var method = $.validator.methods[method]; |
| 6 | | var element = $("#firstname")[0]; |
| 7 | | return function(value) { |
| 8 | | element.value = value; |
| 9 | | return method.call( v, value, element ); |
| 10 | | }; |
| 11 | | } |
| 12 | | |
| 13 | | module("methods"); |
| 14 | | |
| 15 | | test("digit", function() { |
| 16 | | var method = methodTest("digits"); |
| 17 | | ok( method( "123" ), "Valid digits" ); |
| 18 | | ok(!method( "123.000" ), "Invalid digits" ); |
| 19 | | ok(!method( "123.000,00" ), "Invalid digits" ); |
| 20 | | ok(!method( "123.0.0,0" ), "Invalid digits" ); |
| 21 | | ok(!method( "x123" ), "Invalid digits" ); |
| 22 | | ok(!method( "100.100,0,0" ), "Invalid digits" ); |
| 23 | | }); |
| 24 | | |
| 25 | | test("url", function() { |
| 26 | | var method = methodTest("url"); |
| 27 | | ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); |
| 28 | | ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); |
| 29 | | ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); |
| 30 | | ok( method( "http://bassistance" ), "Valid url" ); |
| 31 | | ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" ); |
| 32 | | ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" ); |
| 33 | | ok( method( "http://bassistance." ), "Valid url" ); |
| 34 | | ok( method( "http://192.168.8.5" ), "Valid IP Address" ) |
| 35 | | ok(!method( "http://192.168.8." ), "Invalid IP Address" ) |
| 36 | | ok(!method( "http://bassistance,de" ), "Invalid url" ); |
| 37 | | ok(!method( "http://bassistance;de" ), "Invalid url" ); |
| 38 | | ok(!method( "http://.bassistancede" ), "Invalid url" ); |
| 39 | | ok(!method( "bassistance.de" ), "Invalid url" ); |
| 40 | | }); |
| 41 | | |
| 42 | | test("email", function() { |
| 43 | | var method = methodTest("email"); |
| 44 | | ok( method( "name@domain.tld" ), "Valid email" ); |
| 45 | | ok( method( "name@domain.tl" ), "Valid email" ); |
| 46 | | ok( method( "bart+bart@tokbox.com" ), "Valid email" ); |
| 47 | | ok( method( "bart+bart@tokbox.travel" ), "Valid email" ); |
| 48 | | ok( method( "n@d.tld" ), "Valid email" ); |
| 49 | | ok( method( "ole@føtex.dk"), "Valid email" ); |
| 50 | | ok( method( "jörn@bassistance.de"), "Valid email" ); |
| 51 | | ok( method( "bla.blu@g.mail.com"), "Valid email" ); |
| 52 | | ok( method( "name@domain" ), "Valid email" ); |
| 53 | | ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" ); |
| 54 | | ok( method( "\"Scott González\"@example.com" ), "Valid email" ); |
| 55 | | ok( method( "\"name.\"@domain" ), "Valid email" ); |
| 56 | | ok( method( "\"name,\"@domain" ), "Valid email" ); |
| 57 | | ok( method( "\"name;\"@domain" ), "Valid email" ); |
| 58 | | ok(!method( "name" ), "Invalid email" ); |
| 59 | | ok(!method( "name@" ), "Invalid email" ); |
| 60 | | ok(!method( "name.@domain.tld" ), "Invalid email" ); |
| 61 | | ok(!method( "name,@domain.tld" ), "Invalid email" ); |
| 62 | | ok(!method( "name;@domain.tld" ), "Invalid email" ); |
| 63 | | }); |
| 64 | | |
| 65 | | test("number", function() { |
| 66 | | var method = methodTest("number"); |
| 67 | | ok( method( "123" ), "Valid number" ); |
| 68 | | ok( method( "-123" ), "Valid number" ); |
| 69 | | ok( method( "123,000" ), "Valid number" ); |
| 70 | | ok( method( "-123,000" ), "Valid number" ); |
| 71 | | ok( method( "123,000.00" ), "Valid number" ); |
| 72 | | ok( method( "-123,000.00" ), "Valid number" ); |
| 73 | | ok(!method( "123.000,00" ), "Invalid number" ); |
| 74 | | ok(!method( "123.0.0,0" ), "Invalid number" ); |
| 75 | | ok(!method( "x123" ), "Invalid number" ); |
| 76 | | ok(!method( "100.100,0,0" ), "Invalid number" ); |
| 77 | | |
| 78 | | ok( method( "" ), "Blank is valid" ); |
| 79 | | ok( method( "123" ), "Valid decimal" ); |
| 80 | | ok( method( "123000" ), "Valid decimal" ); |
| 81 | | ok( method( "123000.12" ), "Valid decimal" ); |
| 82 | | ok( method( "-123000.12" ), "Valid decimal" ); |
| 83 | | ok( method( "123.000" ), "Valid decimal" ); |
| 84 | | ok( method( "123,000.00" ), "Valid decimal" ); |
| 85 | | ok( method( "-123,000.00" ), "Valid decimal" ); |
| 86 | | ok(!method( "1230,000.00" ), "Invalid decimal" ); |
| 87 | | ok(!method( "123.0.0,0" ), "Invalid decimal" ); |
| 88 | | ok(!method( "x123" ), "Invalid decimal" ); |
| 89 | | ok(!method( "100.100,0,0" ), "Invalid decimal" ); |
| 90 | | }); |
| 91 | | |
| 92 | | test("numberDE", function() { |
| 93 | | var method = methodTest("numberDE"); |
| 94 | | ok( method( "123" ), "Valid numberDE" ); |
| 95 | | ok( method( "-123" ), "Valid numberDE" ); |
| 96 | | ok( method( "123.000" ), "Valid numberDE" ); |
| 97 | | ok( method( "-123.000" ), "Valid numberDE" ); |
| 98 | | ok( method( "123.000,00" ), "Valid numberDE" ); |
| 99 | | ok( method( "-123.000,00" ), "Valid numberDE" ); |
| 100 | | ok(!method( "123,000.00" ), "Invalid numberDE" ); |
| 101 | | ok(!method( "123,0,0.0" ), "Invalid numberDE" ); |
| 102 | | ok(!method( "x123" ), "Invalid numberDE" ); |
| 103 | | ok(!method( "100,100.0.0" ), "Invalid numberDE" ); |
| 104 | | |
| 105 | | ok( method( "" ), "Blank is valid" ); |
| 106 | | ok( method( "123" ), "Valid decimalDE" ); |
| 107 | | ok( method( "123000" ), "Valid decimalDE" ); |
| 108 | | ok( method( "123000,12" ), "Valid decimalDE" ); |
| 109 | | ok( method( "-123000,12" ), "Valid decimalDE" ); |
| 110 | | ok( method( "123.000" ), "Valid decimalDE" ); |
| 111 | | ok( method( "123.000,00" ), "Valid decimalDE" ); |
| 112 | | ok( method( "-123.000,00" ), "Valid decimalDE" ) |
| 113 | | ok(!method( "123.0.0,0" ), "Invalid decimalDE" ); |
| 114 | | ok(!method( "x123" ), "Invalid decimalDE" ); |
| 115 | | ok(!method( "100,100.0.0" ), "Invalid decimalDE" ); |
| 116 | | }); |
| 117 | | |
| 118 | | test("date", function() { |
| 119 | | var method = methodTest("date"); |
| 120 | | ok( method( "06/06/1990" ), "Valid date" ); |
| 121 | | ok( method( "6/6/06" ), "Valid date" ); |
| 122 | | ok(!method( "1990x-06-06" ), "Invalid date" ); |
| 123 | | }); |
| 124 | | |
| 125 | | test("dateISO", function() { |
| 126 | | var method = methodTest("dateISO"); |
| 127 | | ok( method( "1990-06-06" ), "Valid date" ); |
| 128 | | ok( method( "1990/06/06" ), "Valid date" ); |
| 129 | | ok( method( "1990-6-6" ), "Valid date" ); |
| 130 | | ok( method( "1990/6/6" ), "Valid date" ); |
| 131 | | ok(!method( "1990-106-06" ), "Invalid date" ); |
| 132 | | ok(!method( "190-06-06" ), "Invalid date" ); |
| 133 | | }); |
| 134 | | |
| 135 | | test("dateDE", function() { |
| 136 | | var method = methodTest("dateDE"); |
| 137 | | ok( method( "03.06.1984" ), "Valid dateDE" ); |
| 138 | | ok( method( "3.6.84" ), "Valid dateDE" ); |
| 139 | | ok(!method( "6-6-06" ), "Invalid dateDE" ); |
| 140 | | ok(!method( "1990-06-06" ), "Invalid dateDE" ); |
| 141 | | ok(!method( "06/06/1990" ), "Invalid dateDE" ); |
| 142 | | ok(!method( "6/6/06" ), "Invalid dateDE" ); |
| 143 | | }); |
| 144 | | |
| 145 | | test("required", function() { |
| 146 | | var v = jQuery("#form").validate(); |
| 147 | | var method = $.validator.methods.required; |
| 148 | | e = $('#text1, #hidden2, #select1, #select2'); |
| 149 | | ok( method.call( v, e[0].value, e[0]), "Valid text input" ); |
| 150 | | ok(!method.call( v, e[1].value, e[1]), "Invalid text input" ); |
| 151 | | ok(!method.call( v, e[2].value, e[2]), "Invalid select" ); |
| 152 | | ok( method.call( v, e[3].value, e[3]), "Valid select" ); |
| 153 | | |
| 154 | | e = $('#area1, #area2, #pw1, #pw2'); |
| 155 | | ok( method.call( v, e[0].value, e[0]), "Valid textarea" ); |
| 156 | | ok(!method.call( v, e[1].value, e[1]), "Invalid textarea" ); |
| 157 | | ok( method.call( v, e[2].value, e[2]), "Valid password input" ); |
| 158 | | ok(!method.call( v, e[3].value, e[3]), "Invalid password input" ); |
| 159 | | |
| 160 | | e = $('#radio1, #radio2, #radio3'); |
| 161 | | ok(!method.call( v, e[0].value, e[0]), "Invalid radio" ); |
| 162 | | ok( method.call( v, e[1].value, e[1]), "Valid radio" ); |
| 163 | | ok( method.call( v, e[2].value, e[2]), "Valid radio" ); |
| 164 | | |
| 165 | | e = $('#check1, #check2'); |
| 166 | | ok( method.call( v, e[0].value, e[0]), "Valid checkbox" ); |
| 167 | | ok(!method.call( v, e[1].value, e[1]), "Invalid checkbox" ); |
| 168 | | |
| 169 | | e = $('#select1, #select2, #select3, #select4'); |
| 170 | | ok(!method.call( v, e[0].value, e[0]), "Invalid select" ); |
| 171 | | ok( method.call( v, e[1].value, e[1]), "Valid select" ); |
| 172 | | ok( method.call( v, e[2].value, e[2]), "Valid select" ); |
| 173 | | ok( method.call( v, e[3].value, e[3]), "Valid select" ); |
| 174 | | }); |
| 175 | | |
| 176 | | test("required with dependencies", function() { |
| 177 | | var v = jQuery("#form").validate(); |
| 178 | | var method = $.validator.methods.required; |
| 179 | | e = $('#hidden2, #select1, #area2, #radio1, #check2'); |
| 180 | | ok( method.call( v, e[0].value, e[0], "asffsaa"), "Valid text input due to depencie not met" ); |
| 181 | | ok(!method.call( v, e[0].value, e[0], "input"), "Invalid text input" ); |
| 182 | | ok( method.call( v, e[0].value, e[0], function() { return false; }), "Valid text input due to depencie not met" ); |
| 183 | | ok(!method.call( v, e[0].value, e[0], function() { return true; }), "Invalid text input" ); |
| 184 | | ok( method.call( v, e[1].value, e[1], "asfsfa"), "Valid select due to dependency not met" ); |
| 185 | | ok(!method.call( v, e[1].value, e[1], "input"), "Invalid select" ); |
| 186 | | ok( method.call( v, e[2].value, e[2], "asfsafsfa"), "Valid textarea due to dependency not met" ); |
| 187 | | ok(!method.call( v, e[2].value, e[2], "input"), "Invalid textarea" ); |
| 188 | | ok( method.call( v, e[3].value, e[3], "asfsafsfa"), "Valid radio due to dependency not met" ); |
| 189 | | ok(!method.call( v, e[3].value, e[3], "input"), "Invalid radio" ); |
| 190 | | ok( method.call( v, e[4].value, e[4], "asfsafsfa"), "Valid checkbox due to dependency not met" ); |
| 191 | | ok(!method.call( v, e[4].value, e[4], "input"), "Invalid checkbox" ); |
| 192 | | }); |
| 193 | | |
| 194 | | test("minLength", function() { |
| 195 | | var v = jQuery("#form").validate(); |
| 196 | | var method = $.validator.methods.minLength, |
| 197 | | param = 2, |
| 198 | | e = $('#text1, #text2, #text3'); |
| 199 | | ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); |
| 200 | | ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" ); |
| 201 | | ok( method.call( v, e[2].value, e[2], param), "Valid text input" ); |
| 202 | | |
| 203 | | e = $('#check1, #check2, #check3'); |
| 204 | | ok(!method.call( v, e[0].value, e[0], param), "Valid checkbox" ); |
| 205 | | ok( method.call( v, e[1].value, e[1], param), "Valid checkbox" ); |
| 206 | | ok( method.call( v, e[2].value, e[2], param), "Invalid checkbox" ); |
| 207 | | |
| 208 | | e = $('#select1, #select2, #select3, #select4, #select5'); |
| 209 | | ok(method.call( v, e[0].value, e[0], param), "Valid select" ); |
| 210 | | ok(!method.call( v, e[1].value, e[1], param), "Invalid select" ); |
| 211 | | ok( method.call( v, e[2].value, e[2], param), "Valid select" ); |
| 212 | | ok( method.call( v, e[3].value, e[3], param), "Valid select" ); |
| 213 | | ok( method.call( v, e[3].value, e[3], param), "Valid select" ); |
| 214 | | }); |
| 215 | | |
| 216 | | test("maxLength", function() { |
| 217 | | var v = jQuery("#form").validate(); |
| 218 | | var method = $.validator.methods.maxLength, |
| 219 | | param = 4, |
| 220 | | e = $('#text1, #text2, #text3'); |
| 221 | | ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); |
| 222 | | ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); |
| 223 | | ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); |
| 224 | | |
| 225 | | e = $('#check1, #check2, #check3'); |
| 226 | | ok( method.call( v, e[0].value, e[0], param), "Valid checkbox" ); |
| 227 | | ok( method.call( v, e[1].value, e[1], param), "Invalid checkbox" ); |
| 228 | | ok(!method.call( v, e[2].value, e[2], param), "Invalid checkbox" ); |
| 229 | | |
| 230 | | e = $('#select1, #select2, #select3, #select4'); |
| 231 | | ok( method.call( v, e[0].value, e[0], param), "Valid select" ); |
| 232 | | ok( method.call( v, e[1].value, e[1], param), "Valid select" ); |
| 233 | | ok( method.call( v, e[2].value, e[2], param), "Valid select" ); |
| 234 | | ok(!method.call( v, e[3].value, e[3], param), "Invalid select" ); |
| 235 | | }); |
| 236 | | |
| 237 | | test("rangeLength", function() { |
| 238 | | var v = jQuery("#form").validate(); |
| 239 | | var method = $.validator.methods.rangeLength, |
| 240 | | param = [2, 4], |
| 241 | | e = $('#text1, #text2, #text3'); |
| 242 | | ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); |
| 243 | | ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" ); |
| 244 | | ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); |
| 245 | | }); |
| 246 | | |
| 247 | | test("minValue", function() { |
| 248 | | var v = jQuery("#form").validate(); |
| 249 | | var method = $.validator.methods.minValue, |
| 250 | | param = 8, |
| 251 | | e = $('#value1, #value2, #value3'); |
| 252 | | ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" ); |
| 253 | | ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); |
| 254 | | ok( method.call( v, e[2].value, e[2], param), "Valid text input" ); |
| 255 | | }); |
| 256 | | |
| 257 | | test("maxValue", function() { |
| 258 | | var v = jQuery("#form").validate(); |
| 259 | | var method = $.validator.methods.maxValue, |
| 260 | | param = 12, |
| 261 | | e = $('#value1, #value2, #value3'); |
| 262 | | ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); |
| 263 | | ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); |
| 264 | | ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); |
| 265 | | }); |
| 266 | | |
| 267 | | test("rangeValue", function() { |
| 268 | | var v = jQuery("#form").validate(); |
| 269 | | var method = $.validator.methods.rangeValue, |
| 270 | | param = [4,12], |
| 271 | | e = $('#value1, #value2, #value3'); |
| 272 | | ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" ); |
| 273 | | ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); |
| 274 | | ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); |
| 275 | | }); |
| 276 | | |
| 277 | | test("equalTo", function() { |
| 278 | | var v = jQuery("#form").validate(); |
| 279 | | var method = $.validator.methods.equalTo, |
| 280 | | e = $('#text1, #text2'); |
| 281 | | ok( method.call( v, "Test", e[0], "#text1"), "Text input" ); |
| 282 | | ok( method.call( v, "T", e[1], "#text2"), "Another one" ); |
| 283 | | }); |
| 284 | | |
| 285 | | |
| 286 | | test("method default messages", function() { |
| 287 | | var m = $.validator.methods; |
| 288 | | $.each(m, function(key) { |
| 289 | | ok( jQuery.validator.messages[key], key + " has a default message." ); |
| 290 | | }); |
| 291 | | }); |
| 292 | | |
| 293 | | module("additional methods"); |
| 294 | | |
| 295 | | test("phone (us)", function() { |
| 296 | | var method = methodTest("phone"); |
| 297 | | ok( method( "1(212)-999-2345" ), "Valid us phone number" ); |
| 298 | | ok( method( "212 999 2344" ), "Valid us phone number" ); |
| 299 | | ok( method( "212-999-0983" ), "Valid us phone number" ); |
| 300 | | ok(!method( "111-123-5434" ), "Invalid us phone number" ); |
| 301 | | ok(!method( "212 123 4567" ), "Invalid us phone number" ); |
| 302 | | }); |
| 303 | | |
| 304 | | test("dateITA", function() { |
| 305 | | var method = methodTest("dateITA"); |
| 306 | | ok( method( "01/01/1900" ), "Valid date ITA" ); |
| 307 | | ok(!method( "01/13/1990" ), "Invalid date ITA" ); |
| 308 | | ok(!method( "01.01.1900" ), "Invalid date ITA" ); |
| 309 | | }); |