client_side_validations 3.1.5 → 3.2.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. data/client_side_validations.gemspec +1 -9
  2. data/lib/client_side_validations.rb +6 -2
  3. data/lib/client_side_validations/action_view/form_builder.rb +4 -2
  4. data/lib/client_side_validations/action_view/form_helper.rb +15 -7
  5. data/lib/client_side_validations/active_model.rb +5 -2
  6. data/lib/client_side_validations/active_record.rb +2 -1
  7. data/lib/client_side_validations/active_record/middleware.rb +15 -2
  8. data/lib/client_side_validations/active_record/uniqueness.rb +0 -1
  9. data/lib/client_side_validations/core_ext/regexp.rb +1 -1
  10. data/lib/client_side_validations/middleware.rb +40 -16
  11. data/lib/client_side_validations/version.rb +1 -1
  12. data/lib/generators/templates/client_side_validations/initializer.rb +0 -3
  13. data/vendor/assets/javascripts/rails.validations.js +135 -170
  14. metadata +22 -329
  15. data/lib/client_side_validations/formtastic.rb +0 -21
  16. data/lib/client_side_validations/mongo_mapper.rb +0 -9
  17. data/lib/client_side_validations/mongo_mapper/middleware.rb +0 -20
  18. data/lib/client_side_validations/mongo_mapper/uniqueness.rb +0 -29
  19. data/lib/client_side_validations/mongoid.rb +0 -9
  20. data/lib/client_side_validations/mongoid/format.rb +0 -10
  21. data/lib/client_side_validations/mongoid/length.rb +0 -24
  22. data/lib/client_side_validations/mongoid/middleware.rb +0 -20
  23. data/lib/client_side_validations/mongoid/presence.rb +0 -10
  24. data/lib/client_side_validations/mongoid/uniqueness.rb +0 -29
  25. data/lib/client_side_validations/simple_form.rb +0 -24
  26. data/lib/generators/templates/client_side_validations/README.rails.3.0 +0 -6
  27. data/test/action_view/cases/helper.rb +0 -176
  28. data/test/action_view/cases/test_helpers.rb +0 -635
  29. data/test/action_view/cases/test_legacy_helpers.rb +0 -217
  30. data/test/action_view/models.rb +0 -3
  31. data/test/action_view/models/comment.rb +0 -35
  32. data/test/action_view/models/post.rb +0 -35
  33. data/test/active_model/cases/helper.rb +0 -4
  34. data/test/active_model/cases/test_acceptance_validator.rb +0 -16
  35. data/test/active_model/cases/test_base.rb +0 -11
  36. data/test/active_model/cases/test_confirmation_validator.rb +0 -16
  37. data/test/active_model/cases/test_exclusion_validator.rb +0 -20
  38. data/test/active_model/cases/test_format_validator.rb +0 -21
  39. data/test/active_model/cases/test_inclusion_validator.rb +0 -21
  40. data/test/active_model/cases/test_length_validator.rb +0 -61
  41. data/test/active_model/cases/test_numericality_validator.rb +0 -46
  42. data/test/active_model/cases/test_presence_validator.rb +0 -16
  43. data/test/active_model/cases/test_validations.rb +0 -175
  44. data/test/active_model/models/person.rb +0 -17
  45. data/test/active_record/cases/helper.rb +0 -12
  46. data/test/active_record/cases/test_base.rb +0 -11
  47. data/test/active_record/cases/test_middleware.rb +0 -175
  48. data/test/active_record/cases/test_uniqueness_validator.rb +0 -56
  49. data/test/active_record/models/guid.rb +0 -7
  50. data/test/active_record/models/user.rb +0 -14
  51. data/test/base_helper.rb +0 -21
  52. data/test/core_ext/cases/test_core_ext.rb +0 -46
  53. data/test/formtastic/cases/helper.rb +0 -7
  54. data/test/formtastic/cases/test_form_builder.rb +0 -11
  55. data/test/formtastic/cases/test_form_helper.rb +0 -21
  56. data/test/generators/cases/test_generators.rb +0 -70
  57. data/test/javascript/config.ru +0 -3
  58. data/test/javascript/public/test/callbacks/elementAfter.js +0 -54
  59. data/test/javascript/public/test/callbacks/elementBefore.js +0 -54
  60. data/test/javascript/public/test/callbacks/elementFail.js +0 -70
  61. data/test/javascript/public/test/callbacks/elementPass.js +0 -70
  62. data/test/javascript/public/test/callbacks/formAfter.js +0 -45
  63. data/test/javascript/public/test/callbacks/formBefore.js +0 -45
  64. data/test/javascript/public/test/callbacks/formFail.js +0 -51
  65. data/test/javascript/public/test/callbacks/formPass.js +0 -50
  66. data/test/javascript/public/test/form_builders/validateForm.js +0 -66
  67. data/test/javascript/public/test/form_builders/validateFormtastic.js +0 -54
  68. data/test/javascript/public/test/form_builders/validateNestedForm.js +0 -66
  69. data/test/javascript/public/test/form_builders/validateSimpleForm.js +0 -57
  70. data/test/javascript/public/test/settings.js +0 -15
  71. data/test/javascript/public/test/validateElement.js +0 -179
  72. data/test/javascript/public/test/validators/acceptance.js +0 -42
  73. data/test/javascript/public/test/validators/confirmation.js +0 -25
  74. data/test/javascript/public/test/validators/exclusion.js +0 -41
  75. data/test/javascript/public/test/validators/format.js +0 -27
  76. data/test/javascript/public/test/validators/inclusion.js +0 -42
  77. data/test/javascript/public/test/validators/length.js +0 -76
  78. data/test/javascript/public/test/validators/numericality.js +0 -158
  79. data/test/javascript/public/test/validators/presence.js +0 -21
  80. data/test/javascript/public/test/validators/uniqueness.js +0 -107
  81. data/test/javascript/public/vendor/jquery.metadata.js +0 -122
  82. data/test/javascript/public/vendor/qunit.css +0 -196
  83. data/test/javascript/public/vendor/qunit.js +0 -1374
  84. data/test/javascript/server.rb +0 -84
  85. data/test/javascript/views/index.erb +0 -20
  86. data/test/javascript/views/layout.erb +0 -21
  87. data/test/middleware/cases/helper.rb +0 -7
  88. data/test/middleware/cases/test_middleware.rb +0 -8
  89. data/test/mongo_mapper/cases/helper.rb +0 -9
  90. data/test/mongo_mapper/cases/test_base.rb +0 -15
  91. data/test/mongo_mapper/cases/test_middleware.rb +0 -77
  92. data/test/mongo_mapper/cases/test_uniqueness_validator.rb +0 -55
  93. data/test/mongo_mapper/models/magazine.rb +0 -11
  94. data/test/mongoid/cases/helper.rb +0 -12
  95. data/test/mongoid/cases/test_base.rb +0 -15
  96. data/test/mongoid/cases/test_format_validator.rb +0 -21
  97. data/test/mongoid/cases/test_length_validator.rb +0 -60
  98. data/test/mongoid/cases/test_middleware.rb +0 -77
  99. data/test/mongoid/cases/test_presence_validator.rb +0 -16
  100. data/test/mongoid/cases/test_uniqueness_validator.rb +0 -54
  101. data/test/mongoid/models/book.rb +0 -12
  102. data/test/simple_form/cases/helper.rb +0 -5
  103. data/test/simple_form/cases/test_form_builder.rb +0 -14
  104. data/test/simple_form/cases/test_form_helper.rb +0 -24
  105. data/test/test_loader.rb +0 -6
@@ -1,70 +0,0 @@
1
- module('Element Validate Pass Callback', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'ActionView::Helpers::FormBuilder',
5
- input_tag: '<div class="field_with_errors"><span id="input_tag" /><label for="user_name" class="message"></label></div>',
6
- label_tag: '<div class="field_with_errors"><label id="label_tag" /></div>',
7
- validators: {"user[name]":{"presence":{"message": "must be present"}}}
8
- }
9
-
10
- $('#qunit-fixture')
11
- .append($('<span id="result" />'))
12
- .append($('<form />', {
13
- action: '/users',
14
- 'data-validate': true,
15
- method: 'post',
16
- id: 'new_user'
17
- }))
18
- .find('form')
19
- .append($('<input />', {
20
- name: 'user[name]',
21
- id: 'user_name',
22
- 'data-validate': 'true',
23
- type: 'text'
24
- }))
25
- .append($('<label for="user_name">Name</label>'));
26
-
27
- clientSideValidations.callbacks.element.pass = function(element) {
28
- $('#result').text('Element Validate Pass ' + element.attr('id'));
29
- }
30
- $('form#new_user').validate();
31
- },
32
- teardown: function() {
33
- clientSideValidations.callbacks.element.pass = function(element, callback) { callback() }
34
- }
35
- });
36
-
37
- test('runs callback when form element validate', function() {
38
- var input = $('input');
39
-
40
- equal($('#result').text(), '');
41
-
42
- input.val('')
43
- input.trigger('change');
44
- input.trigger('focusout');
45
- equal($('#result').text(), '');
46
-
47
- input.val('test')
48
- input.trigger('change');
49
- input.trigger('focusout');
50
- equal($('#result').text(), 'Element Validate Pass user_name');
51
- });
52
-
53
- test('runs callback when form validates', function() {
54
- var form = $('form'), input = form.find('input');
55
-
56
- equal($('#result').text(), '');
57
-
58
- input.val('')
59
- input.trigger('change');
60
- form.trigger('submit');
61
-
62
- equal($('#result').text(), '');
63
-
64
- input.val('test')
65
- input.trigger('change');
66
- form.trigger('submit');
67
-
68
- equal($('#result').text(), 'Element Validate Pass user_name');
69
- });
70
-
@@ -1,45 +0,0 @@
1
- module('Form Validate After Callback', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'ActionView::Helpers::FormBuilder',
5
- input_tag: '<div class="field_with_errors"><span id="input_tag" /><label for="user_name" class="message"></label></div>',
6
- label_tag: '<div class="field_with_errors"><label id="label_tag" /></div>',
7
- validators: {"user[name]":{"presence":{"message": "must be present"}}}
8
- }
9
-
10
- $('#qunit-fixture')
11
- .append($('<span id="result" />'))
12
- .append($('<form />', {
13
- action: '/users',
14
- 'data-validate': true,
15
- method: 'post',
16
- id: 'new_user'
17
- }))
18
- .find('form')
19
- .append($('<input />', {
20
- name: 'user[name]',
21
- id: 'user_name',
22
- 'data-validate': 'true',
23
- type: 'text'
24
- }))
25
- .append($('<label for="user_name">Name</label>'));
26
-
27
- clientSideValidations.callbacks.form.after = function(form, message) {
28
- $('#result').text('Form Validate After ' + form.attr('id'));
29
- }
30
- $('form#new_user').validate();
31
- },
32
- teardown: function() {
33
- clientSideValidations.callbacks.form.after = function(form, eventData) {}
34
- }
35
- });
36
-
37
- test('runs callback', function() {
38
- var form = $('form'), input = form.find('input');
39
-
40
- equal($('#result').text(), '');
41
-
42
- form.submit();
43
- equal($('#result').text(), 'Form Validate After new_user');
44
- });
45
-
@@ -1,45 +0,0 @@
1
- module('Form Validate Before Callback', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'ActionView::Helpers::FormBuilder',
5
- input_tag: '<div class="field_with_errors"><span id="input_tag" /><label for="user_name" class="message"></label></div>',
6
- label_tag: '<div class="field_with_errors"><label id="label_tag" /></div>',
7
- validators: {"user[name]":{"presence":{"message": "must be present"}}}
8
- }
9
-
10
- $('#qunit-fixture')
11
- .append($('<span id="result" />'))
12
- .append($('<form />', {
13
- action: '/users',
14
- 'data-validate': true,
15
- method: 'post',
16
- id: 'new_user'
17
- }))
18
- .find('form')
19
- .append($('<input />', {
20
- name: 'user[name]',
21
- id: 'user_name',
22
- 'data-validate': 'true',
23
- type: 'text'
24
- }))
25
- .append($('<label for="user_name">Name</label>'));
26
-
27
- clientSideValidations.callbacks.form.before = function(form, message) {
28
- $('#result').text('Form Validate Before ' + form.attr('id'));
29
- }
30
- $('form#new_user').validate();
31
- },
32
- teardown: function() {
33
- clientSideValidations.callbacks.form.before = function(form, eventData) {}
34
- }
35
- });
36
-
37
- test('runs callback', function() {
38
- var form = $('form'), input = form.find('input');
39
-
40
- equal($('#result').text(), '');
41
-
42
- form.submit();
43
- equal($('#result').text(), 'Form Validate Before new_user');
44
- });
45
-
@@ -1,51 +0,0 @@
1
- module('Form Validate Fail Callback', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'ActionView::Helpers::FormBuilder',
5
- input_tag: '<div class="field_with_errors"><span id="input_tag" /><label for="user_name" class="message"></label></div>',
6
- label_tag: '<div class="field_with_errors"><label id="label_tag" /></div>',
7
- validators: {"user[name]":{"presence":{"message": "must be present"}}}
8
- }
9
-
10
- $('#qunit-fixture')
11
- .append($('<span id="result" />'))
12
- .append($('<form />', {
13
- action: '/users',
14
- 'data-validate': true,
15
- method: 'post',
16
- id: 'new_user'
17
- }))
18
- .find('form')
19
- .append($('<input />', {
20
- name: 'user[name]',
21
- id: 'user_name',
22
- 'data-validate': 'true',
23
- type: 'text'
24
- }))
25
- .append($('<label for="user_name">Name</label>'));
26
-
27
- clientSideValidations.callbacks.form.fail = function(form, message) {
28
- $('#result').text('Form Validate Fail ' + form.attr('id'));
29
- }
30
- $('form#new_user').validate();
31
- },
32
- teardown: function() {
33
- clientSideValidations.callbacks.form.fail = function(form, eventData) {}
34
- }
35
- });
36
-
37
- test('runs callback', function() {
38
- var form = $('form'), input = form.find('input');
39
-
40
- equal($('#result').text(), '');
41
-
42
- form.submit();
43
- equal($('#result').text(), 'Form Validate Fail new_user');
44
-
45
- $('#result').text('');
46
- input.val('test');
47
- input.trigger('change');
48
- form.submit();
49
- equal($('#result').text(), '');
50
- });
51
-
@@ -1,50 +0,0 @@
1
- module('Form Validate Pass Callback', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'ActionView::Helpers::FormBuilder',
5
- input_tag: '<div class="field_with_errors"><span id="input_tag" /><label for="user_name" class="message"></label></div>',
6
- label_tag: '<div class="field_with_errors"><label id="label_tag" /></div>',
7
- validators: {"user[name]":{"presence":{"message": "must be present"}}}
8
- }
9
-
10
- $('#qunit-fixture')
11
- .append($('<span id="result" />'))
12
- .append($('<form />', {
13
- action: '/users',
14
- 'data-validate': true,
15
- method: 'post',
16
- id: 'new_user'
17
- }))
18
- .find('form')
19
- .append($('<input />', {
20
- name: 'user[name]',
21
- id: 'user_name',
22
- 'data-validate': 'true',
23
- type: 'text'
24
- }))
25
- .append($('<label for="user_name">Name</label>'));
26
-
27
- clientSideValidations.callbacks.form.pass = function(form, message) {
28
- $('#result').text('Form Validate Pass ' + form.attr('id'));
29
- }
30
- $('form#new_user').validate();
31
- },
32
- teardown: function() {
33
- clientSideValidations.callbacks.form.pass = function(form, eventData) {}
34
- }
35
- });
36
-
37
- test('runs callback', function() {
38
- var form = $('form'), input = form.find('input');
39
-
40
- equal($('#result').text(), '');
41
-
42
- form.submit();
43
- equal($('#result').text(), '');
44
-
45
- input.val('test');
46
- input.trigger('change');
47
- form.submit();
48
- equal($('#result').text(), 'Form Validate Pass new_user');
49
- });
50
-
@@ -1,66 +0,0 @@
1
- module('Validate Form', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'ActionView::Helpers::FormBuilder',
5
- input_tag: '<div class="field_with_errors"><span id="input_tag" /><label for="user_name" class="message"></label></div>',
6
- label_tag: '<div class="field_with_errors"><label id="label_tag" /></div>',
7
- validators: {'user[name]':{"presence":{"message": "must be present"}}}
8
- }
9
-
10
- $('#qunit-fixture')
11
- .append($('<form />', {
12
- action: '/users',
13
- 'data-validate': true,
14
- method: 'post',
15
- id: 'new_user'
16
- }))
17
- .find('form')
18
- .append($('<input />', {
19
- name: 'user[name]',
20
- id: 'user_name',
21
- 'data-validate': 'true',
22
- type: 'text'
23
- }))
24
- .append($('<label for="user_name">Name</label>'));
25
- $('form#new_user').validate();
26
- }
27
- });
28
-
29
- asyncTest('Validate form with invalid form', 4, function() {
30
- var form = $('form#new_user'), input = form.find('input#user_name');
31
- var label = $('label[for="user_name"]');
32
-
33
- form.trigger('submit');
34
- setTimeout(function() {
35
- start();
36
- ok(input.parent().hasClass('field_with_errors'));
37
- ok(label.parent().hasClass('field_with_errors'));
38
- ok(input.parent().find('label:contains("must be present")')[0]);
39
- ok(!$('iframe').contents().find('p:contains("Form submitted")')[0]);
40
- }, 30);
41
- });
42
-
43
- asyncTest('Validate form with valid form', 1, function() {
44
- var form = $('form#new_user'), input = form.find('input#user_name');
45
- input.val('Test');
46
-
47
- form.trigger('submit');
48
- setTimeout(function() {
49
- start();
50
- ok($('iframe').contents().find('p:contains("Form submitted")')[0]);
51
- }, 30);
52
- });
53
-
54
- asyncTest('Validate form with an input changed to false', 1, function() {
55
- var form = $('form#new_user'), input = form.find('input#user_name');
56
- input.val('Test');
57
- input.attr('changed', false);
58
- input.attr('data-valid', true);
59
-
60
- form.trigger('submit');
61
- setTimeout(function() {
62
- start();
63
- ok($('iframe').contents().find('p:contains("Form submitted")')[0]);
64
- }, 30);
65
- });
66
-
@@ -1,54 +0,0 @@
1
- module('Validate Formtastic', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'Formtastic::FormBuilder',
5
- inline_error_class: 'inline-errors',
6
- validators: {
7
- "user[name]":{"presence":{"message": "must be present"}, "format":{"message":"is invalid","with":/\d+/}}
8
- }
9
- }
10
-
11
- $('#qunit-fixture')
12
- .append($('<form />', {
13
- action: '/users',
14
- 'data-validate': true,
15
- method: 'post',
16
- id: 'new_user'
17
- }))
18
- .find('form')
19
- .append('<li />').find('li')
20
- .append($('<input />', {
21
- name: 'user[name]',
22
- id: 'user_name',
23
- 'data-validate': 'true',
24
- type: 'text'
25
- }))
26
- .append($('<label for="user_name">Name</label>'));
27
- $('form#new_user').validate();
28
- }
29
- });
30
-
31
- test('Validate error attaching and detaching', function() {
32
- var form = $('form#new_user'), input = form.find('input#user_name');
33
- var label = $('label[for="user_name"]');
34
-
35
- input.trigger('focusout')
36
- ok(input.parent().hasClass('error'));
37
- ok(label.parent().hasClass('error'));
38
- ok(input.parent().find('p.inline-errors:contains("must be present")')[0]);
39
-
40
- input.val('abc')
41
- input.trigger('change')
42
- input.trigger('focusout')
43
- ok(input.parent().hasClass('error'));
44
- ok(label.parent().hasClass('error'));
45
- ok(input.parent().find('p.inline-errors:contains("is invalid")')[0]);
46
-
47
- input.val('123')
48
- input.trigger('change')
49
- input.trigger('focusout')
50
- ok(!input.parent().hasClass('error'));
51
- ok(!label.parent().hasClass('error'));
52
- ok(!input.parent().find('p.inline-errors')[0]);
53
- });
54
-
@@ -1,66 +0,0 @@
1
- module('Validate Form', {
2
- setup: function() {
3
- window['new_user'] = {
4
- type: 'NestedForm::Builder',
5
- input_tag: '<div class="field_with_errors"><span id="input_tag" /><label for="user_name" class="message"></label></div>',
6
- label_tag: '<div class="field_with_errors"><label id="label_tag" /></div>',
7
- validators: {'user[name]':{"presence":{"message": "must be present"}}}
8
- }
9
-
10
- $('#qunit-fixture')
11
- .append($('<form />', {
12
- action: '/users',
13
- 'data-validate': true,
14
- method: 'post',
15
- id: 'new_user'
16
- }))
17
- .find('form')
18
- .append($('<input />', {
19
- name: 'user[name]',
20
- id: 'user_name',
21
- 'data-validate': 'true',
22
- type: 'text'
23
- }))
24
- .append($('<label for="user_name">Name</label>'));
25
- $('form#new_user').validate();
26
- }
27
- });
28
-
29
- asyncTest('Validate form with invalid form', 4, function() {
30
- var form = $('form#new_user'), input = form.find('input#user_name');
31
- var label = $('label[for="user_name"]');
32
-
33
- form.trigger('submit');
34
- setTimeout(function() {
35
- start();
36
- ok(input.parent().hasClass('field_with_errors'));
37
- ok(label.parent().hasClass('field_with_errors'));
38
- ok(input.parent().find('label:contains("must be present")')[0]);
39
- ok(!$('iframe').contents().find('p:contains("Form submitted")')[0]);
40
- }, 30);
41
- });
42
-
43
- asyncTest('Validate form with valid form', 1, function() {
44
- var form = $('form#new_user'), input = form.find('input#user_name');
45
- input.val('Test');
46
-
47
- form.trigger('submit');
48
- setTimeout(function() {
49
- start();
50
- ok($('iframe').contents().find('p:contains("Form submitted")')[0]);
51
- }, 30);
52
- });
53
-
54
- asyncTest('Validate form with an input changed to false', 1, function() {
55
- var form = $('form#new_user'), input = form.find('input#user_name');
56
- input.val('Test');
57
- input.attr('changed', false);
58
- input.attr('data-valid', true);
59
-
60
- form.trigger('submit');
61
- setTimeout(function() {
62
- start();
63
- ok($('iframe').contents().find('p:contains("Form submitted")')[0]);
64
- }, 30);
65
- });
66
-