module("messages"); test("predefined message not overwritten by addMethod(a, b, undefined)", function () { var message = "my custom message"; $.validator.messages.custom = message; $.validator.addMethod("custom", function () { }); deepEqual(message, $.validator.messages.custom); delete $.validator.messages.custom; delete $.validator.methods.custom; }); test("group error messages", function () { $.validator.addClassRules({ requiredDateRange: {required: true, date: true, dateRange: true} }); $.validator.addMethod("dateRange", function () { return new Date($("#fromDate").val()) < new Date($("#toDate").val()); }, "Please specify a correct date range."); var form = $("#dateRangeForm"); form.validate({ groups: { dateRange: "fromDate toDate" }, errorPlacement: function (error) { form.find(".errorContainer").append(error); } }); ok(!form.valid()); equal(1, form.find(".errorContainer *").length); equal("Please enter a valid date.", form.find(".errorContainer label.error").text()); $("#fromDate").val("12/03/2006"); $("#toDate").val("12/01/2006"); ok(!form.valid()); equal("Please specify a correct date range.", form.find(".errorContainer label.error").text()); $("#toDate").val("12/04/2006"); ok(form.valid()); ok(form.find(".errorContainer label.error").is(":hidden")); }); test("read messages from metadata", function () { var form = $("#testForm9"); form.validate(); var e = $("#testEmail9"); e.valid(); equal(form.find("label").text(), "required"); e.val("bla").valid(); equal(form.find("label").text(), "email"); }); test("read messages from metadata, with meta option specified, but no metadata in there", function () { var form = $("#testForm1clean"); form.validate({ meta: "validate", rules: { firstname: "required" } }); ok(!form.valid(), "not valid"); });