cassandra_object 0.6.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/cassandra_object/associations/one_to_many.rb +136 -0
- data/lib/cassandra_object/associations/one_to_one.rb +77 -0
- data/lib/cassandra_object/associations.rb +35 -0
- data/lib/cassandra_object/attributes.rb +93 -0
- data/lib/cassandra_object/base.rb +104 -0
- data/lib/cassandra_object/callbacks.rb +10 -0
- data/lib/cassandra_object/collection.rb +8 -0
- data/lib/cassandra_object/cursor.rb +86 -0
- data/lib/cassandra_object/dirty.rb +27 -0
- data/lib/cassandra_object/identity/abstract_key_factory.rb +36 -0
- data/lib/cassandra_object/identity/key.rb +20 -0
- data/lib/cassandra_object/identity/natural_key_factory.rb +51 -0
- data/lib/cassandra_object/identity/uuid_key_factory.rb +37 -0
- data/lib/cassandra_object/identity.rb +61 -0
- data/lib/cassandra_object/indexes.rb +129 -0
- data/lib/cassandra_object/legacy_callbacks.rb +33 -0
- data/lib/cassandra_object/migrations.rb +72 -0
- data/lib/cassandra_object/mocking.rb +15 -0
- data/lib/cassandra_object/persistence.rb +193 -0
- data/lib/cassandra_object/serialization.rb +6 -0
- data/lib/cassandra_object/type_registration.rb +7 -0
- data/lib/cassandra_object/types.rb +128 -0
- data/lib/cassandra_object/validation.rb +58 -0
- data/lib/cassandra_object.rb +30 -0
- data/vendor/active_support_shims.rb +4 -0
- data/vendor/activemodel/CHANGELOG +13 -0
- data/vendor/activemodel/CHANGES +12 -0
- data/vendor/activemodel/MIT-LICENSE +21 -0
- data/vendor/activemodel/README +21 -0
- data/vendor/activemodel/Rakefile +52 -0
- data/vendor/activemodel/activemodel.gemspec +19 -0
- data/vendor/activemodel/examples/validations.rb +29 -0
- data/vendor/activemodel/lib/active_model/attribute_methods.rb +291 -0
- data/vendor/activemodel/lib/active_model/callbacks.rb +91 -0
- data/vendor/activemodel/lib/active_model/conversion.rb +8 -0
- data/vendor/activemodel/lib/active_model/deprecated_error_methods.rb +33 -0
- data/vendor/activemodel/lib/active_model/dirty.rb +126 -0
- data/vendor/activemodel/lib/active_model/errors.rb +162 -0
- data/vendor/activemodel/lib/active_model/lint.rb +91 -0
- data/vendor/activemodel/lib/active_model/locale/en.yml +27 -0
- data/vendor/activemodel/lib/active_model/naming.rb +45 -0
- data/vendor/activemodel/lib/active_model/observing.rb +191 -0
- data/vendor/activemodel/lib/active_model/railtie.rb +2 -0
- data/vendor/activemodel/lib/active_model/serialization.rb +30 -0
- data/vendor/activemodel/lib/active_model/serializers/json.rb +96 -0
- data/vendor/activemodel/lib/active_model/serializers/xml.rb +204 -0
- data/vendor/activemodel/lib/active_model/state_machine/event.rb +62 -0
- data/vendor/activemodel/lib/active_model/state_machine/machine.rb +75 -0
- data/vendor/activemodel/lib/active_model/state_machine/state.rb +47 -0
- data/vendor/activemodel/lib/active_model/state_machine/state_transition.rb +40 -0
- data/vendor/activemodel/lib/active_model/state_machine.rb +70 -0
- data/vendor/activemodel/lib/active_model/test_case.rb +18 -0
- data/vendor/activemodel/lib/active_model/translation.rb +44 -0
- data/vendor/activemodel/lib/active_model/validations/acceptance.rb +55 -0
- data/vendor/activemodel/lib/active_model/validations/confirmation.rb +47 -0
- data/vendor/activemodel/lib/active_model/validations/exclusion.rb +42 -0
- data/vendor/activemodel/lib/active_model/validations/format.rb +64 -0
- data/vendor/activemodel/lib/active_model/validations/inclusion.rb +42 -0
- data/vendor/activemodel/lib/active_model/validations/length.rb +117 -0
- data/vendor/activemodel/lib/active_model/validations/numericality.rb +111 -0
- data/vendor/activemodel/lib/active_model/validations/presence.rb +42 -0
- data/vendor/activemodel/lib/active_model/validations/with.rb +59 -0
- data/vendor/activemodel/lib/active_model/validations.rb +120 -0
- data/vendor/activemodel/lib/active_model/validator.rb +110 -0
- data/vendor/activemodel/lib/active_model/version.rb +9 -0
- data/vendor/activemodel/lib/active_model.rb +61 -0
- data/vendor/activemodel/test/cases/attribute_methods_test.rb +46 -0
- data/vendor/activemodel/test/cases/callbacks_test.rb +70 -0
- data/vendor/activemodel/test/cases/helper.rb +23 -0
- data/vendor/activemodel/test/cases/lint_test.rb +28 -0
- data/vendor/activemodel/test/cases/naming_test.rb +28 -0
- data/vendor/activemodel/test/cases/observing_test.rb +133 -0
- data/vendor/activemodel/test/cases/serializeration/json_serialization_test.rb +83 -0
- data/vendor/activemodel/test/cases/serializeration/xml_serialization_test.rb +110 -0
- data/vendor/activemodel/test/cases/state_machine/event_test.rb +49 -0
- data/vendor/activemodel/test/cases/state_machine/machine_test.rb +43 -0
- data/vendor/activemodel/test/cases/state_machine/state_test.rb +72 -0
- data/vendor/activemodel/test/cases/state_machine/state_transition_test.rb +84 -0
- data/vendor/activemodel/test/cases/state_machine_test.rb +312 -0
- data/vendor/activemodel/test/cases/tests_database.rb +37 -0
- data/vendor/activemodel/test/cases/translation_test.rb +45 -0
- data/vendor/activemodel/test/cases/validations/acceptance_validation_test.rb +71 -0
- data/vendor/activemodel/test/cases/validations/conditional_validation_test.rb +141 -0
- data/vendor/activemodel/test/cases/validations/confirmation_validation_test.rb +58 -0
- data/vendor/activemodel/test/cases/validations/exclusion_validation_test.rb +47 -0
- data/vendor/activemodel/test/cases/validations/format_validation_test.rb +118 -0
- data/vendor/activemodel/test/cases/validations/i18n_generate_message_validation_test.rb +175 -0
- data/vendor/activemodel/test/cases/validations/i18n_validation_test.rb +527 -0
- data/vendor/activemodel/test/cases/validations/inclusion_validation_test.rb +71 -0
- data/vendor/activemodel/test/cases/validations/length_validation_test.rb +437 -0
- data/vendor/activemodel/test/cases/validations/numericality_validation_test.rb +180 -0
- data/vendor/activemodel/test/cases/validations/presence_validation_test.rb +70 -0
- data/vendor/activemodel/test/cases/validations/with_validation_test.rb +166 -0
- data/vendor/activemodel/test/cases/validations_test.rb +215 -0
- data/vendor/activemodel/test/config.rb +3 -0
- data/vendor/activemodel/test/fixtures/topics.yml +41 -0
- data/vendor/activemodel/test/models/contact.rb +7 -0
- data/vendor/activemodel/test/models/custom_reader.rb +17 -0
- data/vendor/activemodel/test/models/developer.rb +6 -0
- data/vendor/activemodel/test/models/person.rb +9 -0
- data/vendor/activemodel/test/models/reply.rb +34 -0
- data/vendor/activemodel/test/models/topic.rb +9 -0
- data/vendor/activemodel/test/models/track_back.rb +4 -0
- data/vendor/activemodel/test/schema.rb +14 -0
- data/vendor/activesupport/lib/active_support/autoload.rb +48 -0
- data/vendor/activesupport/lib/active_support/concern.rb +25 -0
- data/vendor/activesupport/lib/active_support/core_ext/array/wrap.rb +20 -0
- data/vendor/activesupport/lib/active_support/core_ext/object/blank.rb +58 -0
- data/vendor/activesupport/lib/active_support/core_ext/object/tap.rb +6 -0
- data/vendor/activesupport/lib/active_support/dependency_module.rb +17 -0
- data/vendor/activesupport/lib/active_support/i18n.rb +2 -0
- data/vendor/activesupport/lib/active_support/locale/en.yml +33 -0
- metadata +230 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'cases/helper'
|
|
3
|
+
require 'cases/tests_database'
|
|
4
|
+
|
|
5
|
+
require 'models/topic'
|
|
6
|
+
require 'models/person'
|
|
7
|
+
|
|
8
|
+
class ExclusionValidationTest < ActiveModel::TestCase
|
|
9
|
+
include ActiveModel::TestsDatabase
|
|
10
|
+
|
|
11
|
+
def teardown
|
|
12
|
+
Topic.reset_callbacks(:validate)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_validates_exclusion_of
|
|
16
|
+
Topic.validates_exclusion_of( :title, :in => %w( abe monkey ) )
|
|
17
|
+
|
|
18
|
+
assert Topic.create("title" => "something", "content" => "abc").valid?
|
|
19
|
+
assert !Topic.create("title" => "monkey", "content" => "abc").valid?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_validates_exclusion_of_with_formatted_message
|
|
23
|
+
Topic.validates_exclusion_of( :title, :in => %w( abe monkey ), :message => "option {{value}} is restricted" )
|
|
24
|
+
|
|
25
|
+
assert Topic.create("title" => "something", "content" => "abc")
|
|
26
|
+
|
|
27
|
+
t = Topic.create("title" => "monkey")
|
|
28
|
+
assert !t.valid?
|
|
29
|
+
assert t.errors[:title].any?
|
|
30
|
+
assert_equal ["option monkey is restricted"], t.errors[:title]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_validates_exclusion_of_for_ruby_class
|
|
34
|
+
Person.validates_exclusion_of :karma, :in => %w( abe monkey )
|
|
35
|
+
|
|
36
|
+
p = Person.new
|
|
37
|
+
p.karma = "abe"
|
|
38
|
+
assert p.invalid?
|
|
39
|
+
|
|
40
|
+
assert_equal ["is reserved"], p.errors[:karma]
|
|
41
|
+
|
|
42
|
+
p.karma = "Lifo"
|
|
43
|
+
assert p.valid?
|
|
44
|
+
ensure
|
|
45
|
+
Person.reset_callbacks(:validate)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'cases/helper'
|
|
3
|
+
require 'cases/tests_database'
|
|
4
|
+
|
|
5
|
+
require 'models/topic'
|
|
6
|
+
require 'models/developer'
|
|
7
|
+
require 'models/person'
|
|
8
|
+
|
|
9
|
+
class PresenceValidationTest < ActiveModel::TestCase
|
|
10
|
+
include ActiveModel::TestsDatabase
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
Topic.reset_callbacks(:validate)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_validate_format
|
|
17
|
+
Topic.validates_format_of(:title, :content, :with => /^Validation\smacros \w+!$/, :message => "is bad data")
|
|
18
|
+
|
|
19
|
+
t = Topic.create("title" => "i'm incorrect", "content" => "Validation macros rule!")
|
|
20
|
+
assert !t.valid?, "Shouldn't be valid"
|
|
21
|
+
assert !t.save, "Shouldn't save because it's invalid"
|
|
22
|
+
assert_equal ["is bad data"], t.errors[:title]
|
|
23
|
+
assert t.errors[:content].empty?
|
|
24
|
+
|
|
25
|
+
t.title = "Validation macros rule!"
|
|
26
|
+
|
|
27
|
+
assert t.save
|
|
28
|
+
assert t.errors[:title].empty?
|
|
29
|
+
|
|
30
|
+
assert_raise(ArgumentError) { Topic.validates_format_of(:title, :content) }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_validate_format_with_allow_blank
|
|
34
|
+
Topic.validates_format_of(:title, :with => /^Validation\smacros \w+!$/, :allow_blank=>true)
|
|
35
|
+
assert !Topic.create("title" => "Shouldn't be valid").valid?
|
|
36
|
+
assert Topic.create("title" => "").valid?
|
|
37
|
+
assert Topic.create("title" => nil).valid?
|
|
38
|
+
assert Topic.create("title" => "Validation macros rule!").valid?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# testing ticket #3142
|
|
42
|
+
def test_validate_format_numeric
|
|
43
|
+
Topic.validates_format_of(:title, :content, :with => /^[1-9][0-9]*$/, :message => "is bad data")
|
|
44
|
+
|
|
45
|
+
t = Topic.create("title" => "72x", "content" => "6789")
|
|
46
|
+
assert !t.valid?, "Shouldn't be valid"
|
|
47
|
+
assert !t.save, "Shouldn't save because it's invalid"
|
|
48
|
+
assert_equal ["is bad data"], t.errors[:title]
|
|
49
|
+
assert t.errors[:content].empty?
|
|
50
|
+
|
|
51
|
+
t.title = "-11"
|
|
52
|
+
assert !t.valid?, "Shouldn't be valid"
|
|
53
|
+
|
|
54
|
+
t.title = "03"
|
|
55
|
+
assert !t.valid?, "Shouldn't be valid"
|
|
56
|
+
|
|
57
|
+
t.title = "z44"
|
|
58
|
+
assert !t.valid?, "Shouldn't be valid"
|
|
59
|
+
|
|
60
|
+
t.title = "5v7"
|
|
61
|
+
assert !t.valid?, "Shouldn't be valid"
|
|
62
|
+
|
|
63
|
+
t.title = "1"
|
|
64
|
+
|
|
65
|
+
assert t.save
|
|
66
|
+
assert t.errors[:title].empty?
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_validate_format_with_formatted_message
|
|
70
|
+
Topic.validates_format_of(:title, :with => /^Valid Title$/, :message => "can't be {{value}}")
|
|
71
|
+
t = Topic.create(:title => 'Invalid title')
|
|
72
|
+
assert_equal ["can't be Invalid title"], t.errors[:title]
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_validate_format_with_not_option
|
|
76
|
+
Topic.validates_format_of(:title, :without => /foo/, :message => "should not contain foo")
|
|
77
|
+
t = Topic.new
|
|
78
|
+
|
|
79
|
+
t.title = "foobar"
|
|
80
|
+
t.valid?
|
|
81
|
+
assert_equal ["should not contain foo"], t.errors[:title]
|
|
82
|
+
|
|
83
|
+
t.title = "something else"
|
|
84
|
+
t.valid?
|
|
85
|
+
assert_equal [], t.errors[:title]
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_validate_format_of_without_any_regexp_should_raise_error
|
|
89
|
+
assert_raise(ArgumentError) { Topic.validates_format_of(:title) }
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_validates_format_of_with_both_regexps_should_raise_error
|
|
93
|
+
assert_raise(ArgumentError) { Topic.validates_format_of(:title, :with => /this/, :without => /that/) }
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def test_validates_format_of_when_with_isnt_a_regexp_should_raise_error
|
|
97
|
+
assert_raise(ArgumentError) { Topic.validates_format_of(:title, :with => "clearly not a regexp") }
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_validates_format_of_when_not_isnt_a_regexp_should_raise_error
|
|
101
|
+
assert_raise(ArgumentError) { Topic.validates_format_of(:title, :without => "clearly not a regexp") }
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def test_validates_format_of_for_ruby_class
|
|
105
|
+
Person.validates_format_of :karma, :with => /\A\d+\Z/
|
|
106
|
+
|
|
107
|
+
p = Person.new
|
|
108
|
+
p.karma = "Pixies"
|
|
109
|
+
assert p.invalid?
|
|
110
|
+
|
|
111
|
+
assert_equal ["is invalid"], p.errors[:karma]
|
|
112
|
+
|
|
113
|
+
p.karma = "1234"
|
|
114
|
+
assert p.valid?
|
|
115
|
+
ensure
|
|
116
|
+
Person.reset_callbacks(:validate)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
require "cases/helper"
|
|
2
|
+
require 'cases/tests_database'
|
|
3
|
+
|
|
4
|
+
require 'models/person'
|
|
5
|
+
|
|
6
|
+
class I18nGenerateMessageValidationTest < ActiveModel::TestCase
|
|
7
|
+
def setup
|
|
8
|
+
Person.reset_callbacks(:validate)
|
|
9
|
+
@person = Person.new
|
|
10
|
+
|
|
11
|
+
@old_load_path, @old_backend = I18n.load_path, I18n.backend
|
|
12
|
+
I18n.load_path.clear
|
|
13
|
+
I18n.backend = I18n::Backend::Simple.new
|
|
14
|
+
|
|
15
|
+
I18n.backend.store_translations :'en', {
|
|
16
|
+
:activemodel => {
|
|
17
|
+
:errors => {
|
|
18
|
+
:messages => {
|
|
19
|
+
:inclusion => "is not included in the list",
|
|
20
|
+
:exclusion => "is reserved",
|
|
21
|
+
:invalid => "is invalid",
|
|
22
|
+
:confirmation => "doesn't match confirmation",
|
|
23
|
+
:accepted => "must be accepted",
|
|
24
|
+
:empty => "can't be empty",
|
|
25
|
+
:blank => "can't be blank",
|
|
26
|
+
:too_long => "is too long (maximum is {{count}} characters)",
|
|
27
|
+
:too_short => "is too short (minimum is {{count}} characters)",
|
|
28
|
+
:wrong_length => "is the wrong length (should be {{count}} characters)",
|
|
29
|
+
:not_a_number => "is not a number",
|
|
30
|
+
:greater_than => "must be greater than {{count}}",
|
|
31
|
+
:greater_than_or_equal_to => "must be greater than or equal to {{count}}",
|
|
32
|
+
:equal_to => "must be equal to {{count}}",
|
|
33
|
+
:less_than => "must be less than {{count}}",
|
|
34
|
+
:less_than_or_equal_to => "must be less than or equal to {{count}}",
|
|
35
|
+
:odd => "must be odd",
|
|
36
|
+
:even => "must be even"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def teardown
|
|
44
|
+
I18n.load_path.replace @old_load_path
|
|
45
|
+
I18n.backend = @old_backend
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# validates_inclusion_of: generate_message(attr_name, :inclusion, :default => configuration[:message], :value => value)
|
|
49
|
+
def test_generate_message_inclusion_with_default_message
|
|
50
|
+
assert_equal 'is not included in the list', @person.errors.generate_message(:title, :inclusion, :default => nil, :value => 'title')
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_generate_message_inclusion_with_custom_message
|
|
54
|
+
assert_equal 'custom message title', @person.errors.generate_message(:title, :inclusion, :default => 'custom message {{value}}', :value => 'title')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# validates_exclusion_of: generate_message(attr_name, :exclusion, :default => configuration[:message], :value => value)
|
|
58
|
+
def test_generate_message_exclusion_with_default_message
|
|
59
|
+
assert_equal 'is reserved', @person.errors.generate_message(:title, :exclusion, :default => nil, :value => 'title')
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_generate_message_exclusion_with_custom_message
|
|
63
|
+
assert_equal 'custom message title', @person.errors.generate_message(:title, :exclusion, :default => 'custom message {{value}}', :value => 'title')
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# validates_format_of: generate_message(attr_name, :invalid, :default => configuration[:message], :value => value)
|
|
67
|
+
def test_generate_message_invalid_with_default_message
|
|
68
|
+
assert_equal 'is invalid', @person.errors.generate_message(:title, :invalid, :default => nil, :value => 'title')
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_generate_message_invalid_with_custom_message
|
|
72
|
+
assert_equal 'custom message title', @person.errors.generate_message(:title, :invalid, :default => 'custom message {{value}}', :value => 'title')
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# validates_confirmation_of: generate_message(attr_name, :confirmation, :default => configuration[:message])
|
|
76
|
+
def test_generate_message_confirmation_with_default_message
|
|
77
|
+
assert_equal "doesn't match confirmation", @person.errors.generate_message(:title, :confirmation, :default => nil)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def test_generate_message_confirmation_with_custom_message
|
|
81
|
+
assert_equal 'custom message', @person.errors.generate_message(:title, :confirmation, :default => 'custom message')
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# validates_acceptance_of: generate_message(attr_name, :accepted, :default => configuration[:message])
|
|
85
|
+
def test_generate_message_accepted_with_default_message
|
|
86
|
+
assert_equal "must be accepted", @person.errors.generate_message(:title, :accepted, :default => nil)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def test_generate_message_accepted_with_custom_message
|
|
90
|
+
assert_equal 'custom message', @person.errors.generate_message(:title, :accepted, :default => 'custom message')
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# add_on_empty: generate_message(attr, :empty, :default => custom_message)
|
|
94
|
+
def test_generate_message_empty_with_default_message
|
|
95
|
+
assert_equal "can't be empty", @person.errors.generate_message(:title, :empty, :default => nil)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def test_generate_message_empty_with_custom_message
|
|
99
|
+
assert_equal 'custom message', @person.errors.generate_message(:title, :empty, :default => 'custom message')
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# add_on_blank: generate_message(attr, :blank, :default => custom_message)
|
|
103
|
+
def test_generate_message_blank_with_default_message
|
|
104
|
+
assert_equal "can't be blank", @person.errors.generate_message(:title, :blank, :default => nil)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_generate_message_blank_with_custom_message
|
|
108
|
+
assert_equal 'custom message', @person.errors.generate_message(:title, :blank, :default => 'custom message')
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# validates_length_of: generate_message(attr, :too_long, :default => options[:too_long], :count => option_value.end)
|
|
112
|
+
def test_generate_message_too_long_with_default_message
|
|
113
|
+
assert_equal "is too long (maximum is 10 characters)", @person.errors.generate_message(:title, :too_long, :default => nil, :count => 10)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def test_generate_message_too_long_with_custom_message
|
|
117
|
+
assert_equal 'custom message 10', @person.errors.generate_message(:title, :too_long, :default => 'custom message {{count}}', :count => 10)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# validates_length_of: generate_message(attr, :too_short, :default => options[:too_short], :count => option_value.begin)
|
|
121
|
+
def test_generate_message_too_short_with_default_message
|
|
122
|
+
assert_equal "is too short (minimum is 10 characters)", @person.errors.generate_message(:title, :too_short, :default => nil, :count => 10)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def test_generate_message_too_short_with_custom_message
|
|
126
|
+
assert_equal 'custom message 10', @person.errors.generate_message(:title, :too_short, :default => 'custom message {{count}}', :count => 10)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# validates_length_of: generate_message(attr, key, :default => custom_message, :count => option_value)
|
|
130
|
+
def test_generate_message_wrong_length_with_default_message
|
|
131
|
+
assert_equal "is the wrong length (should be 10 characters)", @person.errors.generate_message(:title, :wrong_length, :default => nil, :count => 10)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def test_generate_message_wrong_length_with_custom_message
|
|
135
|
+
assert_equal 'custom message 10', @person.errors.generate_message(:title, :wrong_length, :default => 'custom message {{count}}', :count => 10)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# validates_numericality_of: generate_message(attr_name, :not_a_number, :value => raw_value, :default => configuration[:message])
|
|
139
|
+
def test_generate_message_not_a_number_with_default_message
|
|
140
|
+
assert_equal "is not a number", @person.errors.generate_message(:title, :not_a_number, :default => nil, :value => 'title')
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def test_generate_message_not_a_number_with_custom_message
|
|
144
|
+
assert_equal 'custom message title', @person.errors.generate_message(:title, :not_a_number, :default => 'custom message {{value}}', :value => 'title')
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# validates_numericality_of: generate_message(attr_name, option, :value => raw_value, :default => configuration[:message])
|
|
148
|
+
def test_generate_message_greater_than_with_default_message
|
|
149
|
+
assert_equal "must be greater than 10", @person.errors.generate_message(:title, :greater_than, :default => nil, :value => 'title', :count => 10)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def test_generate_message_greater_than_or_equal_to_with_default_message
|
|
153
|
+
assert_equal "must be greater than or equal to 10", @person.errors.generate_message(:title, :greater_than_or_equal_to, :default => nil, :value => 'title', :count => 10)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def test_generate_message_equal_to_with_default_message
|
|
157
|
+
assert_equal "must be equal to 10", @person.errors.generate_message(:title, :equal_to, :default => nil, :value => 'title', :count => 10)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def test_generate_message_less_than_with_default_message
|
|
161
|
+
assert_equal "must be less than 10", @person.errors.generate_message(:title, :less_than, :default => nil, :value => 'title', :count => 10)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def test_generate_message_less_than_or_equal_to_with_default_message
|
|
165
|
+
assert_equal "must be less than or equal to 10", @person.errors.generate_message(:title, :less_than_or_equal_to, :default => nil, :value => 'title', :count => 10)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def test_generate_message_odd_with_default_message
|
|
169
|
+
assert_equal "must be odd", @person.errors.generate_message(:title, :odd, :default => nil, :value => 'title', :count => 10)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def test_generate_message_even_with_default_message
|
|
173
|
+
assert_equal "must be even", @person.errors.generate_message(:title, :even, :default => nil, :value => 'title', :count => 10)
|
|
174
|
+
end
|
|
175
|
+
end
|