validatious-on-rails 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/Rakefile +52 -0
  2. data/generators/validatious/templates/v2.standalone.full.min.js +7 -0
  3. data/generators/validatious/templates/validatious.config.js +83 -0
  4. data/generators/validatious/validatious_generator.rb +12 -0
  5. data/lib/validatious-on-rails/helpers.rb +20 -0
  6. data/lib/validatious-on-rails/model_validations.rb +312 -0
  7. data/lib/validatious-on-rails/rails/action_view_helpers.rb +114 -0
  8. data/lib/validatious-on-rails/rails.rb +2 -0
  9. data/lib/validatious-on-rails/validatious/client_side_validator.rb +14 -0
  10. data/lib/validatious-on-rails/validatious/remote_validator.rb +24 -0
  11. data/lib/validatious-on-rails/validatious/validator.rb +228 -0
  12. data/lib/validatious-on-rails/validatious/validators/exclusion_validator.rb +28 -0
  13. data/lib/validatious-on-rails/validatious/validators/format_validator.rb +33 -0
  14. data/lib/validatious-on-rails/validatious/validators/inclusion_validator.rb +28 -0
  15. data/lib/validatious-on-rails/validatious/validators/length/is_validator.rb +27 -0
  16. data/lib/validatious-on-rails/validatious/validators/length/maximum_validator.rb +27 -0
  17. data/lib/validatious-on-rails/validatious/validators/length/minimum_validator.rb +27 -0
  18. data/lib/validatious-on-rails/validatious/validators/numericality/equal_to_validator.rb +25 -0
  19. data/lib/validatious-on-rails/validatious/validators/numericality/even_validator.rb +24 -0
  20. data/lib/validatious-on-rails/validatious/validators/numericality/greater_than_or_equal_to_validator.rb +25 -0
  21. data/lib/validatious-on-rails/validatious/validators/numericality/greater_than_validator.rb +25 -0
  22. data/lib/validatious-on-rails/validatious/validators/numericality/less_than_or_equal_to_validator.rb +25 -0
  23. data/lib/validatious-on-rails/validatious/validators/numericality/less_than_validator.rb +25 -0
  24. data/lib/validatious-on-rails/validatious/validators/numericality/odd_validator.rb +24 -0
  25. data/lib/validatious-on-rails/validatious/validators/numericality/only_integer_validator.rb +24 -0
  26. data/lib/validatious-on-rails/validatious/validators.rb +3 -0
  27. data/lib/validatious-on-rails/validatious.rb +5 -0
  28. data/lib/validatious-on-rails.rb +41 -0
  29. data/rails/init.rb +2 -0
  30. data/test/test_helper.rb +93 -0
  31. data/test/validatious_on_rails/helpers_test.rb +47 -0
  32. data/test/validatious_on_rails/model_validations_test.rb +190 -0
  33. data/test/validatious_on_rails/rails/action_view_helpers_test.rb +168 -0
  34. data/test/validatious_on_rails/validatious/validator_test.rb +56 -0
  35. data/test/validatious_on_rails_test.rb +6 -0
  36. metadata +129 -0
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ require File.join(File.dirname(__FILE__), *%w[validatious-on-rails validatious])
3
+ require File.join(File.dirname(__FILE__), *%w[validatious-on-rails model_validations])
4
+ require File.join(File.dirname(__FILE__), *%w[validatious-on-rails rails])
5
+ require File.join(File.dirname(__FILE__), *%w[validatious-on-rails helpers])
6
+
7
+ module ValidatiousOnRails # :nodoc:
8
+
9
+ extend self
10
+
11
+ # Standard error: Acts as base error class for the plugin.
12
+ #
13
+ class ValidatiousOnRailsError < ::StandardError
14
+ def initialize(message)
15
+ ::Validatious.log message, :debug
16
+ super message
17
+ end
18
+ end
19
+
20
+ mattr_accessor :verbose
21
+
22
+ @@verbose = ::Object.const_defined?(:RAILS_ENV) ? (::RAILS_ENV.to_sym == :development) : true
23
+
24
+ # Logging helper: Internal debug-logging for the plugin.
25
+ #
26
+ def log(message, level = :info)
27
+ return unless @@verbose
28
+ level = :info if level.blank?
29
+ @@logger ||= ::Logger.new(::STDOUT)
30
+ @@logger.send(level.to_sym, message)
31
+ end
32
+
33
+ # Alias method for: ValidatiousOnRails::Helpers#custom_validatious_validators
34
+ #
35
+ def custom_validators
36
+ Helpers.custom_validatious_validators
37
+ end
38
+ alias :include_custom_validators :custom_validators
39
+ ::ActionController::Base.helper_method :custom_validators, :include_custom_validators
40
+
41
+ end
data/rails/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. lib validatious-on-rails)))
@@ -0,0 +1,93 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file loads up the in-memory database needed to run the tests, and adds a few
4
+ # convenience methods.
5
+ #
6
+
7
+ begin
8
+ require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. .. .. .. config environment)))
9
+ rescue LoadError
10
+ require 'rubygems'
11
+
12
+ gem 'test-unit', '1.2.3'
13
+ gem 'activerecord', '>= 1.2.3'
14
+ gem 'actionpack', '>= 1.2.3'
15
+ gem 'sqlite3-ruby', '>= 1.2.0'
16
+
17
+ require 'test/unit'
18
+ require 'active_record'
19
+ require 'action_controller'
20
+ require 'sqlite3'
21
+ end
22
+
23
+ begin
24
+ require 'context'
25
+ rescue LoadError
26
+ gem 'jeremymcanally-context', '>= 0.5.5'
27
+ require 'context'
28
+ end
29
+
30
+ begin
31
+ require 'rr'
32
+ rescue LoadError
33
+ gem 'rr', '>= 0.0.0'
34
+ require 'rr'
35
+ end
36
+ extend RR::Adapters::RRMethods
37
+
38
+ begin
39
+ require 'acts_as_fu'
40
+ rescue LoadError
41
+ gem 'nakajima-acts_as_fu', '>= 0.0.5'
42
+ require 'acts_as_fu'
43
+ end
44
+
45
+ require 'validatious-on-rails'
46
+
47
+ # TODO: Should extend Rails validators with this - to test respond_to.
48
+ module ActiveRecord
49
+ module Validations
50
+ module ClassMethods
51
+ def validates_craziness_of(*args)
52
+ #...
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ # Reflected_validations already freezed...ned to find a workaround.
59
+ # reflected_validatons = ActiveRecordExtensions::ValidationReflection.reflected_validations
60
+ # stub(ActiveRecordExtensions::ValidationReflection).reflected_validations {reflected_validatons + [:validates_craziness_of]}
61
+
62
+ build_model :bogus_items do
63
+ string :url
64
+ string :name
65
+ string :email
66
+
67
+ text :body
68
+ integer :variant
69
+ boolean :signed
70
+
71
+ validates_presence_of :name, :body, :variant
72
+ validates_confirmation_of :name
73
+ validates_acceptance_of :signed
74
+ validates_format_of :url,
75
+ :with => /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i,
76
+ :name => 'url', :message => 'Invalid URL.'
77
+ validates_inclusion_of :variant, :in => (1..5).to_a
78
+ validates_exclusion_of :variant, :in => (6..10).to_a
79
+
80
+ # TODO: Test: If this is a validator makro, then it should not cause any issues.
81
+ validates_craziness_of :name
82
+ end
83
+
84
+ #
85
+ # ValidationReflection seems to expect RAILS_ROOT to be defined, but it's not
86
+ # if it's tested outside of a Rails project. So, just set it to something random.
87
+ #
88
+ RAILS_ROOT = File.join(File.dirname(__FILE__)) unless defined?(RAILS_ROOT)
89
+
90
+ #
91
+ # Log file for testing only.
92
+ #
93
+ ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), 'debug.log'))
@@ -0,0 +1,47 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. test_helper)))
3
+
4
+ require 'action_view/test_case'
5
+
6
+ class HelpersTest < ::ActionView::TestCase
7
+
8
+ include ActionView::Helpers::FormHelper
9
+
10
+ attr_accessor :output_buffer
11
+
12
+ before do
13
+ @output_buffer ||= ''
14
+ end
15
+
16
+ context "helpers" do
17
+ context "custom_validatious_validators" do
18
+
19
+ test "should not output custom validators if there are none" do
20
+ helper_output = ::ValidatiousOnRails::Helpers.custom_validatious_validators
21
+ assert_equal '', helper_output.to_s
22
+ end
23
+
24
+ test "should output custom validators if they exists" do
25
+ form_for(::BogusItem.new, :url => '/bogus_items') do |f|
26
+ concat f.text_field(:url)
27
+ end
28
+
29
+ # FIXME: Not sure how to test content_for-helpers...returns nil.
30
+ concat ::ValidatiousOnRails::Helpers.custom_validatious_validators
31
+
32
+ # In parts...
33
+ # assert_match /<script.+>.*v2.Validator.*<\/script>/, output_buffer
34
+ # assert_match /<script.*id="custom_validatious_validators".*>/, helper_output
35
+ # assert_match /<script.*type="text\/javascript".*>/, helper_output
36
+ end
37
+
38
+ end
39
+ end
40
+
41
+ private
42
+
43
+ def protect_against_forgery?
44
+ false
45
+ end
46
+
47
+ end
@@ -0,0 +1,190 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. test_helper)))
3
+
4
+ require 'active_support/test_case'
5
+
6
+ class ModelValidationsTest < ::ActiveSupport::TestCase
7
+
8
+ include ActionView::Helpers::FormHelper
9
+
10
+ test "acceptance_of" do
11
+ validation = ::ValidatiousOnRails::ModelValidations.acceptance_of(validation(:validates_acceptance_of))
12
+ assert_equal 'required', validation[:class]
13
+ end
14
+
15
+ test "associated" do
16
+ # TODO: not implemented
17
+ end
18
+
19
+ test "confirmation_of" do
20
+ validation = ::ValidatiousOnRails::ModelValidations.confirmation_of(validation(:validates_confirmation_of))
21
+ assert_equal 'confirmation-of_name', validation[:class]
22
+ end
23
+
24
+ test "exclusion_of" do
25
+ values = (6..10).to_a
26
+ validation = ::ValidatiousOnRails::ModelValidations.exclusion_of(
27
+ validation(:validates_exclusion_of, :in => values)
28
+ )
29
+ assert_match /^exclusion-in-(\d+)/, validation[:class]
30
+ assert_match /#{values.to_json}/, validation[:validator].fn
31
+ end
32
+
33
+ test "format_of" do
34
+ pattern = /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i
35
+ validation = ::ValidatiousOnRails::ModelValidations.format_of(
36
+ validation(:validates_format_of, :with => pattern)
37
+ )
38
+ assert_match /^format-with-(\d+)/, validation[:class]
39
+ assert_match /#{pattern.inspect[1,-1]}/, validation[:validator].fn
40
+ end
41
+
42
+ test "inclusion_of" do
43
+ values = (1..5).to_a
44
+ validation = ::ValidatiousOnRails::ModelValidations.inclusion_of(
45
+ validation(:validates_inclusion_of, :in => values)
46
+ )
47
+ assert_match /^inclusion-in-(\d+)/, validation[:class]
48
+ assert_match /#{values.to_json}/, validation[:validator].fn
49
+ end
50
+
51
+ context "length_of" do
52
+
53
+ test "with :is" do
54
+ validation = ::ValidatiousOnRails::ModelValidations.length_of(
55
+ validation(:validates_length_of, :is => 2)
56
+ )
57
+ assert_equal 'length-is_2', validation[:class]
58
+ end
59
+
60
+ test "with :in" do
61
+ validation = ::ValidatiousOnRails::ModelValidations.length_of(
62
+ validation(:validates_length_of, :in => 2..10)
63
+ )
64
+ assert_equal 'length-minimum_2 length-maximum_10', validation[:class]
65
+ end
66
+
67
+ test "with :within" do
68
+ validation = ::ValidatiousOnRails::ModelValidations.length_of(
69
+ validation(:validates_length_of, :within => 2..10)
70
+ )
71
+ assert_equal 'length-minimum_2 length-maximum_10', validation[:class]
72
+ end
73
+
74
+ test "with :minimum" do
75
+ validation = ::ValidatiousOnRails::ModelValidations.length_of(
76
+ validation(:validates_length_of, :minimum => 2)
77
+ )
78
+ assert_equal 'length-minimum_2', validation[:class]
79
+ end
80
+
81
+ test "with :maximum" do
82
+ validation = ::ValidatiousOnRails::ModelValidations.length_of(
83
+ validation(:validates_length_of, :maximum => 10)
84
+ )
85
+ assert_equal 'length-maximum_10', validation[:class]
86
+ end
87
+
88
+ test "with :minimum + :maximum" do
89
+ validation = ::ValidatiousOnRails::ModelValidations.length_of(
90
+ validation(:validates_length_of, :minimum => 2, :maximum => 10)
91
+ )
92
+ assert_equal 'length-minimum_2 length-maximum_10', validation[:class]
93
+ end
94
+ end
95
+
96
+ context "numericality_of" do
97
+
98
+ context ":odd/:even" do
99
+ test "with :odd only" do
100
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
101
+ validation(:validates_numericality_of, :even => false, :odd => true)
102
+ )
103
+ assert_equal 'numericality-odd', validation[:class]
104
+ end
105
+
106
+ test "with :even only" do
107
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
108
+ validation(:validates_numericality_of, :even => true, :odd => false)
109
+ )
110
+ assert_equal 'numericality-even', validation[:class]
111
+ end
112
+
113
+ test "with :odd and :even" do
114
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
115
+ validation(:validates_numericality_of, :even => true, :odd => true)
116
+ )
117
+ assert_equal '', validation[:class]
118
+ end
119
+
120
+ test "with neither :odd or :even" do
121
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
122
+ validation(:validates_numericality_of)
123
+ )
124
+ assert_equal '', validation[:class]
125
+ end
126
+ end
127
+
128
+
129
+ test "with :only_integer" do
130
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
131
+ validation(:validates_numericality_of, :only_integer => true)
132
+ )
133
+ # Alt. more generic idea: assert_equal 'numericality-precision_0', validation[:class]
134
+ assert_equal 'numericality-only_integer', validation[:class]
135
+ end
136
+
137
+ test "with :greater_than" do
138
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
139
+ validation(:validates_numericality_of, :greater_than => 2)
140
+ )
141
+ assert_equal 'numericality-greater-than_2', validation[:class]
142
+ end
143
+
144
+ test "with :greater_than_or_equal_to" do
145
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
146
+ validation(:validates_numericality_of, :greater_than_or_equal_to => 2)
147
+ )
148
+ assert_equal 'numericality-greater-than-or-equal-to_2', validation[:class]
149
+ end
150
+
151
+ test "with :equal_to" do
152
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
153
+ validation(:validates_numericality_of, :equal_to => 2)
154
+ )
155
+ assert_equal 'numericality-equal-to_2', validation[:class]
156
+ end
157
+
158
+ test "with :less_than" do
159
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
160
+ validation(:validates_numericality_of, :less_than => 10)
161
+ )
162
+ assert_equal 'numericality-less-than_10', validation[:class]
163
+ end
164
+
165
+ test "with :less_than_or_equal_to" do
166
+ validation = ::ValidatiousOnRails::ModelValidations.numericality_of(
167
+ validation(:validates_numericality_of, :less_than_or_equal_to => 10)
168
+ )
169
+ assert_equal 'numericality-less-than-or-equal-to_10', validation[:class]
170
+ end
171
+ end
172
+
173
+ test "presence_of" do
174
+ validation = ::ValidatiousOnRails::ModelValidations.presence_of(validation(:validates_presence_of))
175
+ assert_equal 'required', validation[:class]
176
+ end
177
+
178
+ test "uniqueness_of" do
179
+ # TODO: not implemented
180
+ end
181
+
182
+ private
183
+
184
+ # Simulate a validation
185
+ #
186
+ def validation(macro, options = {})
187
+ ::ActiveRecord::Reflection::MacroReflection.new(macro, :name, options, BogusItem.new)
188
+ end
189
+
190
+ end
@@ -0,0 +1,168 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. .. test_helper)))
3
+
4
+ module Test::Unit::Assertions
5
+
6
+ #
7
+ # Assert that a piece of HTML includes the class name.
8
+ #
9
+ def assert_has_class(class_name, html, message = nil)
10
+ # Might need to consider this...but works a bit better.
11
+ classes = html.scan(/class="([^"]*)"/).collect { |c| c.to_s.split(' ') }.flatten
12
+ full_message = build_message(message, "<?>\nexpected to include class(es) <?>.\n", html, class_name)
13
+
14
+ assert_block(full_message) do
15
+ class_name.split(' ').all? { |cname| classes.include?(cname) }
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ require 'action_view/test_case'
22
+
23
+ class FormHelperTest < ::ActionView::TestCase
24
+
25
+ include ActionView::Helpers::FormHelper
26
+
27
+ def setup
28
+ @bogus_item = BogusItem.new
29
+ end
30
+
31
+ test "attach custom javascript validations to layout" do
32
+ @content_for_validatious = nil
33
+ view_output = form_for(@bogus_item, :url => '/bogus_items') do |f|
34
+ concat f.text_field(:url)
35
+ end
36
+ assert_match /v2.Validator/, @content_for_validatious
37
+ end
38
+
39
+ test "required :text_field" do
40
+ # Using helper
41
+ assert_has_class 'required', text_field(:bogus_item, :name)
42
+ assert_has_class 'required some_other_class', text_field(:bogus_item, :name, :class => 'some_other_class')
43
+
44
+ # Using builder
45
+ assert_has_class 'required', form_for(@bogus_item, :url => '/bogus_items') { |f|
46
+ concat f.text_field(:name)
47
+ }
48
+ assert_has_class 'required text', form_for(@bogus_item, :url => '/bogus_items') { |f|
49
+ concat f.text_field(:name, :class => 'text')
50
+ }
51
+ end
52
+
53
+ test "required :password_field" do
54
+ # Using helper
55
+ assert_has_class 'required', password_field(:bogus_item, :name)
56
+ assert_has_class 'required some_other_class', password_field(:bogus_item, :name, :class => 'some_other_class')
57
+
58
+ # Using builder
59
+ assert_has_class 'required', form_for(@bogus_item, :url => '/bogus_items') { |f|
60
+ concat f.password_field(:name)
61
+ }
62
+ assert_has_class 'required some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
63
+ concat f.password_field(:name, :class => 'some_other_class')
64
+ }
65
+ end
66
+
67
+ test "required :text_area" do
68
+ # Using helper
69
+ assert_has_class 'required', text_area(:bogus_item, :body)
70
+ assert_has_class 'required some_other_class', text_area(:bogus_item, :body, :class => 'some_other_class')
71
+
72
+ # Using builder
73
+ assert_has_class 'required', form_for(@bogus_item, :url => '/bogus_items') { |f|
74
+ concat f.text_area(:body)
75
+ }
76
+ assert_has_class 'required some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
77
+ concat f.text_area(:body, :class => 'some_other_class')
78
+ }
79
+ end
80
+
81
+ test "required :check_box" do # a.k.a. "acceptance required"
82
+ # Using helper
83
+ assert_has_class 'required', check_box(:bogus_item, :signed)
84
+ assert_has_class 'required some_other_class', check_box(:bogus_item, :signed, :class => 'some_other_class')
85
+
86
+ # Using builder
87
+ assert_has_class 'required', form_for(@bogus_item, :url => '/bogus_items') { |f|
88
+ concat f.check_box(:signed)
89
+ }
90
+ assert_has_class 'required some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
91
+ concat f.check_box(:signed, :class => 'some_other_class')
92
+ }
93
+ end
94
+
95
+ test "required :radio_button" do
96
+ # Using helper
97
+ assert_has_class 'required', radio_button(:bogus_item, :variant, 1)
98
+ assert_has_class 'required some_other_class', radio_button(:bogus_item, :variant, 1, :class => 'some_other_class')
99
+
100
+ assert_has_class 'required', form_for(@bogus_item, :url => '/bogus_items') { |f|
101
+ concat f.radio_button(:variant, 1)
102
+ }
103
+ assert_has_class 'required some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
104
+ concat f.radio_button(:variant, 1, :class => 'some_other_class')
105
+ }
106
+ end
107
+
108
+ test "confirmation_of :name field" do
109
+ # Using helper
110
+ assert_has_class 'confirmation-of_name', text_field(:bogus_item, :name_confirmation)
111
+ assert_has_class 'confirmation-of_name some_other_class', text_field(:bogus_item, :name_confirmation, :class => 'some_other_class')
112
+
113
+ # Using builder
114
+ assert_has_class 'confirmation-of_name', form_for(@bogus_item, :url => '/bogus_items') { |f|
115
+ concat f.text_field(:name_confirmation)
116
+ }
117
+ assert_has_class 'confirmation-of_name some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
118
+ concat f.text_field(:name_confirmation, :class => 'some_other_class')
119
+ }
120
+ end
121
+
122
+ test "format_of :url field" do
123
+ # Using helper
124
+ assert_has_class 'url', text_field(:bogus_item, :url)
125
+ assert_has_class 'url some_other_class', text_field(:bogus_item, :url, :class => 'some_other_class')
126
+
127
+ # Using builder
128
+ assert_has_class 'url', form_for(@bogus_item, :url => '/bogus_items') { |f|
129
+ concat f.text_field(:url)
130
+ }
131
+ assert_has_class 'url some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
132
+ concat f.text_field(:url, :class => 'some_other_class')
133
+ }
134
+ assert_match /v2.Validator\.add\(.*\{.*"url"/, @content_for_validatious
135
+ end
136
+
137
+ test "exclusion_of :variant field" do
138
+ # TODO
139
+ end
140
+
141
+ test "inclusion_of :variant field" do
142
+ # TODO
143
+ end
144
+
145
+ test "regular label" do
146
+ # Using helper
147
+ assert_equal "<label for=\"bogus_item_name\">Name</label>", label(:bogus_item, :name)
148
+ end
149
+
150
+ test "label with title" do
151
+ # Using helper
152
+ assert_equal "<label for=\"bogus_item_name\" title=\"craaazy\">Name</label>",
153
+ label(:bogus_item, :name, nil, :title => "craaazy")
154
+ end
155
+
156
+ test "label without title" do
157
+ # Using helper
158
+ assert_equal "<label for=\"bogus_item_name\" title=\"Name\">Your name</label>",
159
+ label(:bogus_item, :name, "Your name")
160
+ end
161
+
162
+ private
163
+
164
+ def protect_against_forgery?
165
+ false
166
+ end
167
+
168
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. .. test_helper)))
3
+
4
+ require 'active_support/test_case'
5
+
6
+ class ValidatorTest < ::ActiveSupport::TestCase
7
+
8
+ def setup
9
+ @empty_validator = ValidatiousOnRails::Validatious::Validator.new('dummie')
10
+ @custom_validator = returning ValidatiousOnRails::Validatious::Validator.new('dummie') do |v|
11
+ v.message = 'Fail, fail, fail!'
12
+ v.params = ['some', 'params']
13
+ v.aliases = ['some', 'aliases']
14
+ v.accept_empty = false
15
+ v.fn = "return false;"
16
+ end
17
+ end
18
+
19
+ test "creating an empty validator - and generate valid v2.Validator (using #to_s)" do
20
+ assert_equal 'dummie', @empty_validator.name
21
+ assert_equal '', @empty_validator.message
22
+ assert_equal ([]), @empty_validator.params
23
+ assert_equal ([]), @empty_validator.aliases
24
+ assert_equal true, @empty_validator.accept_empty
25
+ assert_equal "function(field, value, params) {return true;}", @empty_validator.fn.gsub(/\n/, '')
26
+
27
+ expected_v2_validator = 'v2.Validator.add({
28
+ acceptEmpty: true,
29
+ fn: function(field, value, params) {return true;},
30
+ name: "dummie"
31
+ });'
32
+
33
+ assert_equal expected_v2_validator.gsub(/[\n\s\t]/, ''), @empty_validator.to_s.gsub(/[\n\s\t]/, '')
34
+ end
35
+
36
+ test "creating a custom validator - and generate valid v2.Validator (using #to_s)" do
37
+ assert_equal 'dummie', @custom_validator.name
38
+ assert_equal 'Fail, fail, fail!', @custom_validator.message
39
+ assert_equal (["some", "params"]), @custom_validator.params
40
+ assert_equal (["some", "aliases"]), @custom_validator.aliases
41
+ assert_equal false, @custom_validator.accept_empty
42
+ assert_equal "function(field, value, params) {return false;}", @custom_validator.fn.gsub(/\n/, '')
43
+
44
+ expected_v2_validator = 'v2.Validator.add({
45
+ acceptEmpty: false,
46
+ aliases: ["some", "aliases"],
47
+ fn: function(field, value, params) {return false;},
48
+ message: "Fail, fail, fail!",
49
+ name: "dummie",
50
+ params: ["some", "params"]
51
+ });'
52
+
53
+ assert_equal expected_v2_validator.gsub(/[\n\s\t]/, ''), @custom_validator.to_s.gsub(/[\n\s\t]/, '')
54
+ end
55
+
56
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ require File.join(File.dirname(__FILE__), 'test_helper')
3
+
4
+ # class ValidatiousTest < Test::Unit::TestCase
5
+ #
6
+ # end