remarkable_activerecord 3.1.0 → 3.1.1
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/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
* validate_length_of accepts :with_kind_of to enable it to work with associations [#69]
|
2
|
+
In your Post specs now you can write:
|
3
|
+
|
4
|
+
should_validate_length_of :comments, :maximum => 10, :with_kind_of => Comment
|
5
|
+
|
1
6
|
# v3.1
|
2
7
|
|
3
8
|
* Allow validate_presence_of to work with associations [#63]
|
@@ -5,9 +5,10 @@ module Remarkable
|
|
5
5
|
arguments :collection => :attributes, :as => :attribute
|
6
6
|
|
7
7
|
optional :within, :alias => :in
|
8
|
-
optional :minimum, :maximum, :is
|
8
|
+
optional :minimum, :maximum, :is
|
9
|
+
optional :with_kind_of
|
9
10
|
optional :allow_nil, :allow_blank, :default => true
|
10
|
-
optional :message, :too_short, :too_long, :wrong_length
|
11
|
+
optional :message, :too_short, :too_long, :wrong_length
|
11
12
|
|
12
13
|
collection_assertions :less_than_min_length?, :exactly_min_length?,
|
13
14
|
:more_than_max_length?, :exactly_max_length?,
|
@@ -55,8 +56,14 @@ module Remarkable
|
|
55
56
|
@max_value.nil? || @min_value == @max_value || good?(value_for_length(@max_value), default_message_for(:too_long))
|
56
57
|
end
|
57
58
|
|
58
|
-
def value_for_length(value)
|
59
|
-
|
59
|
+
def value_for_length(value)
|
60
|
+
repeatable = if @options[:with_kind_of]
|
61
|
+
[ @options[:with_kind_of].new ]
|
62
|
+
else
|
63
|
+
"x"
|
64
|
+
end
|
65
|
+
|
66
|
+
repeatable * value
|
60
67
|
end
|
61
68
|
|
62
69
|
def interpolation_options
|
@@ -96,6 +103,13 @@ module Remarkable
|
|
96
103
|
# Regexp, string or symbol. Default = <tt>I18n.translate('activerecord.errors.messages.wrong_length') % range.last</tt>
|
97
104
|
# * <tt>:message</tt> - value the test expects to find in <tt>errors.on(:attribute)</tt>.
|
98
105
|
# Regexp, string or symbol. Default = <tt>I18n.translate('activerecord.errors.messages.wrong_length') % value</tt>
|
106
|
+
#
|
107
|
+
# It also accepts an extra option called :with_kind_of. If you are validating
|
108
|
+
# the size of an association array, you have to specify the kind of the array
|
109
|
+
# being validated. For example, if your post accepts maximum 10 comments, you
|
110
|
+
# can do:
|
111
|
+
#
|
112
|
+
# validate_length_of :comments, :maximum => 10, :with_kind_of => Comment
|
99
113
|
#
|
100
114
|
# == Gotcha
|
101
115
|
#
|
data/locale/en.yml
CHANGED
@@ -203,7 +203,9 @@ en:
|
|
203
203
|
minimum:
|
204
204
|
positive: "is minimum {{inspect}} characters"
|
205
205
|
is:
|
206
|
-
positive: "is equal to {{inspect}} characters"
|
206
|
+
positive: "is equal to {{inspect}} characters"
|
207
|
+
with_kind_of:
|
208
|
+
positive: "with kind of {{value}}"
|
207
209
|
|
208
210
|
validate_numericality_of:
|
209
211
|
description: "ensure numericality of {{attributes}}"
|
@@ -143,6 +143,29 @@ describe 'validate_length_of' do
|
|
143
143
|
it { should define_and_validate(:is => 3).is(3) }
|
144
144
|
it { should_not define_and_validate(:is => 3).is(2) }
|
145
145
|
it { should_not define_and_validate(:is => 3).is(4) }
|
146
|
+
end
|
147
|
+
|
148
|
+
describe "with with kind of" do
|
149
|
+
def define_and_validate(options)
|
150
|
+
define_model :variant, :product_id => :integer
|
151
|
+
|
152
|
+
@model = define_model :product do
|
153
|
+
has_many :variants
|
154
|
+
validates_length_of :variants, options
|
155
|
+
end
|
156
|
+
|
157
|
+
validate_length_of(:variants)
|
158
|
+
end
|
159
|
+
|
160
|
+
it { should define_and_validate(:within => 3..6).within(3..6).with_kind_of(Variant) }
|
161
|
+
it { should_not define_and_validate(:within => 2..6).within(3..6).with_kind_of(Variant) }
|
162
|
+
it { should_not define_and_validate(:within => 3..7).within(3..6).with_kind_of(Variant) }
|
163
|
+
|
164
|
+
it "should raise association type mismatch if with_kind_of is not supplied" do
|
165
|
+
lambda {
|
166
|
+
should_not define_and_validate(:within => 3..6).within(3..6)
|
167
|
+
}.should raise_error(ActiveRecord::AssociationTypeMismatch)
|
168
|
+
end
|
146
169
|
end
|
147
170
|
|
148
171
|
# Those are macros to test optionals which accept only boolean values
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remarkable_activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carlos Brando
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2009-05-
|
14
|
+
date: 2009-05-13 00:00:00 +02:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
requirements:
|
23
23
|
- - ">="
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 3.1.
|
25
|
+
version: 3.1.1
|
26
26
|
version:
|
27
27
|
description: "Remarkable ActiveRecord: collection of matchers and macros with I18n for ActiveRecord"
|
28
28
|
email:
|