forked from DavyJonesLocker/client_side_validations
/
validateNestedSimpleForm.js
57 lines (51 loc) · 1.72 KB
/
validateNestedSimpleForm.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
module('Validate Nested SimpleForm', {
setup: function() {
window['new_user'] = {
type: 'NestedForm::SimpleBuilder',
error_class: 'error',
error_tag: 'span',
wrapper_error_class: 'field_with_errors',
wrapper_tag: 'div',
validators: {
"user[name]":{"presence":{"message": "must be present"}, "format":{"message":"is invalid","with":/\d+/}}
}
}
$('#qunit-fixture')
.append($('<form />', {
action: '/users',
'data-validate': true,
method: 'post',
id: 'new_user'
}))
.find('form')
.append('<div />').find('div')
.append($('<input />', {
name: 'user[name]',
id: 'user_name',
'data-validate': 'true',
type: 'text'
}))
.append($('<label for="user_name">Name</label>'));
$('form#new_user').validate();
}
});
test('Validate error attaching and detaching', function() {
var form = $('form#new_user'), input = form.find('input#user_name');
var label = $('label[for="user_name"]');
input.trigger('focusout');
ok(input.parent().hasClass('field_with_errors'));
ok(label.parent().hasClass('field_with_errors'));
ok(input.parent().find('span.error:contains("must be present")')[0]);
input.val('abc')
input.trigger('change')
input.trigger('focusout')
ok(input.parent().hasClass('field_with_errors'));
ok(label.parent().hasClass('field_with_errors'));
ok(input.parent().find('span.error:contains("is invalid")')[0]);
input.val('123')
input.trigger('change')
input.trigger('focusout')
ok(!input.parent().hasClass('field_with_errors'));
ok(!label.parent().hasClass('field_with_errors'));
ok(!input.parent().find('span.error')[0]);
});