carlosbrando-remarkable 2.2.10 → 2.3.0

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/Manifest.txt CHANGED
@@ -20,7 +20,6 @@ lib/remarkable/active_record/macros/validations/have_class_methods_matcher.rb
20
20
  lib/remarkable/active_record/macros/validations/have_instance_methods_matcher.rb
21
21
  lib/remarkable/active_record/macros/validations/have_named_scope_matcher.rb
22
22
  lib/remarkable/active_record/macros/validations/have_readonly_attributes_matcher.rb
23
- lib/remarkable/active_record/macros/validations/protect_attributes_matcher.rb
24
23
  lib/remarkable/active_record/macros/validations/validate_acceptance_of_matcher.rb
25
24
  lib/remarkable/active_record/macros/validations/validate_associated_matcher.rb
26
25
  lib/remarkable/active_record/macros/validations/validate_confirmation_of_matcher.rb
@@ -44,7 +43,7 @@ lib/remarkable/controller/macros/respond_with_content_type_matcher.rb
44
43
  lib/remarkable/controller/macros/respond_with_matcher.rb
45
44
  lib/remarkable/controller/macros/set_session_matcher.rb
46
45
  lib/remarkable/controller/macros/route_matcher.rb
47
- lib/remarkable/controller/macros/set_the_flash_to_matcher.rb
46
+ lib/remarkable/controller/macros/set_the_flash_matcher.rb
48
47
  lib/remarkable/dsl.rb
49
48
  lib/remarkable/example/example_methods.rb
50
49
  lib/remarkable/helpers.rb
@@ -58,4 +57,4 @@ remarkable.gemspec
58
57
  script/console
59
58
  script/destroy
60
59
  script/generate
61
- tasks/rspec.rake
60
+
data/lib/remarkable.rb CHANGED
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module Remarkable
5
- VERSION = '2.2.10'
5
+ VERSION = '2.3.0'
6
6
  end
7
7
 
8
8
  if ENV['RAILS_ENV'] == 'test' && defined?(Spec)
@@ -38,7 +38,8 @@ module Remarkable # :nodoc:
38
38
  object = @spec ? @spec.instance_variable_get("@#{instance_variable_name_for(klass)}") : nil
39
39
  object ||= klass.new
40
40
  else
41
- object_or_klass
41
+ object = @spec ? @spec.instance_variable_get("@#{instance_variable_name_for(object_or_klass.class)}") : nil
42
+ object || object_or_klass
42
43
  end
43
44
  end
44
45
 
@@ -6,26 +6,8 @@ module Remarkable # :nodoc:
6
6
 
7
7
  arguments :attribute, :behavior, :ranges
8
8
 
9
- def low_message(message)
10
- warn "[DEPRECATION] should_ensure_value_in_range.low_message is deprecated. " <<
11
- "Use should_validate_inclusion_of.message instead."
12
- @options[:low_message] = message
13
- self
14
- end
15
-
16
- def high_message(message)
17
- warn "[DEPRECATION] should_ensure_value_in_range.high_message is deprecated. " <<
18
- "Use should_validate_inclusion_of.message instead."
19
- @options[:high_message] = message
20
- self
21
- end
22
-
23
- # TODO Low message and High message should be deprecated (not supported by
24
- # Rails API). In this while, we have to hack message.
25
9
  def message(message)
26
- @options[:high_message] = message
27
- @options[:low_message] = message
28
- @options[:message] = message
10
+ @options[:message] = message
29
11
  self
30
12
  end
31
13
 
@@ -55,7 +37,7 @@ module Remarkable # :nodoc:
55
37
 
56
38
  def less_than_minimum?
57
39
  return true unless @behavior == :inclusion
58
- return true if bad?(@range.first - 1, :low_message)
40
+ return true if bad?(@range.first - 1)
59
41
 
60
42
  @missing = "allow #{@attribute} to be less than #{@range.first}"
61
43
  return false
@@ -63,7 +45,7 @@ module Remarkable # :nodoc:
63
45
 
64
46
  def more_than_maximum?
65
47
  return true unless @behavior == :inclusion
66
- return true if bad?(@range.last + 1, :high_message)
48
+ return true if bad?(@range.last + 1)
67
49
 
68
50
  @missing = "allow #{@attribute} to be more than #{@range.last}"
69
51
  return false
@@ -71,7 +53,7 @@ module Remarkable # :nodoc:
71
53
 
72
54
  def less_than_maximum?
73
55
  return true unless @behavior == :exclusion
74
- return true if bad?(@range.last - 1, :low_message)
56
+ return true if bad?(@range.last - 1)
75
57
 
76
58
  @missing = "allow #{@attribute} to be less than #{@range.last}"
77
59
  return false
@@ -79,21 +61,21 @@ module Remarkable # :nodoc:
79
61
 
80
62
  def more_than_minimum?
81
63
  return true unless @behavior == :exclusion
82
- return true if bad?(@range.first + 1, :high_message)
64
+ return true if bad?(@range.first + 1)
83
65
 
84
66
  @missing = "allow #{@attribute} to be more than #{@range.first}"
85
67
  return false
86
68
  end
87
69
 
88
70
  def accepts_minimum?
89
- return true if boundary?(@range.first, :low_message)
71
+ return true if boundary?(@range.first)
90
72
 
91
73
  @missing = create_boundary_message("allow #{@attribute} to be #{@range.first}")
92
74
  return false
93
75
  end
94
76
 
95
77
  def accepts_maximum?
96
- return true if boundary?(@range.last, :high_message)
78
+ return true if boundary?(@range.last)
97
79
 
98
80
  @missing = create_boundary_message("allow #{@attribute} to be #{@range.last}")
99
81
  return false
@@ -125,36 +107,18 @@ module Remarkable # :nodoc:
125
107
  end
126
108
  end
127
109
 
128
- def boundary?(value, message_sym)
110
+ def boundary?(value)
129
111
  if @behavior == :exclusion
130
- bad?(value, message_sym)
112
+ bad?(value, :message)
131
113
  else
132
- good?(value, message_sym)
114
+ good?(value, :message)
133
115
  end
134
116
  end
135
117
 
136
118
  def default_options
137
- { :low_message => @behavior,
138
- :high_message => @behavior,
139
- :message => @behavior }
119
+ { :message => @behavior }
140
120
  end
141
121
  end
142
-
143
- # TODO Deprecate this method, but not the matcher.
144
- def ensure_value_in_range(attribute, range, *options) #:nodoc:
145
- hash_options = options.extract_options!
146
-
147
- warn "[DEPRECATION] should_ensure_value_in_range with :low_message is deprecated. " <<
148
- "Use should_validate_inclusion_of with :message instead." if hash_options[:low_message]
149
-
150
- warn "[DEPRECATION] should_ensure_value_in_range with :high_message is deprecated. " <<
151
- "Use should_validate_inclusion_of with :message instead." if hash_options[:high_message]
152
-
153
- warn "[DEPRECATION] should_ensure_value_in_range is deprecated. " <<
154
- "Use should_validate_inclusion_of instead." if hash_options[:low_message].blank? && hash_options[:high_message].blank?
155
-
156
- EnsureValueInRangeMatcher.new(attribute, :inclusion, range, *options)
157
- end
158
122
  end
159
123
  end
160
124
  end
@@ -65,13 +65,6 @@ module Remarkable # :nodoc:
65
65
  ValidateAcceptanceOfMatcher.new(*attributes)
66
66
  end
67
67
 
68
- # TODO Deprecate this method.
69
- def require_acceptance_of(*attributes) #:nodoc:
70
- warn "[DEPRECATION] should_require_acceptance_of is deprecated. " <<
71
- "Use should_validate_acceptance_of instead."
72
- ValidateAcceptanceOfMatcher.new(*attributes)
73
- end
74
-
75
68
  end
76
69
  end
77
70
  end
@@ -28,12 +28,12 @@ module Remarkable # :nodoc:
28
28
  # should_validate_exclusion_of :age, :in => 30..60
29
29
  #
30
30
  def validate_exclusion_of(attribute, *good_values)
31
- # TODO Remove this until the next comment
32
31
  options = good_values.extract_options!
33
32
 
33
+ # TODO Remove this until the next comment
34
34
  unless options.key?(:in) || good_values.empty?
35
- warn "[DEPRECATION] Please use validate_exclusion_of #{attribute.inspect}, :in => #{good_values[0..-2].inspect} " <<
36
- "instead of validate_exclusion_of #{attribute.inspect}, #{good_values[0..-2].inspect[1..-2]}."
35
+ warn "[DEPRECATION] Please use validate_exclusion_of(#{attribute.inspect}, :in => #{good_values.inspect}) " <<
36
+ "instead of validate_exclusion_of(#{attribute.inspect}, #{good_values.inspect[1..-2]})."
37
37
  end
38
38
 
39
39
  options[:in] ||= good_values
@@ -28,12 +28,12 @@ module Remarkable # :nodoc:
28
28
  # should_validate_inclusion_of :age, :in => 18..100
29
29
  #
30
30
  def validate_inclusion_of(attribute, *good_values)
31
- # TODO Remove this until the next comment
32
31
  options = good_values.extract_options!
33
32
 
33
+ # TODO Remove this until the next comment
34
34
  unless options.key?(:in) || good_values.empty?
35
- warn "[DEPRECATION] Please use validate_inclusion_of #{attribute.inspect}, :in => #{good_values[0..-2].inspect} " <<
36
- "instead of validate_inclusion_of #{attribute.inspect}, #{good_values[0..-2].inspect[1..-2]}."
35
+ warn "[DEPRECATION] Please use validate_inclusion_of(#{attribute.inspect}, :in => #{good_values.inspect}) " <<
36
+ "instead of validate_inclusion_of(#{attribute.inspect}, #{good_values.inspect[1..-2]})."
37
37
  end
38
38
 
39
39
  options[:in] ||= good_values
@@ -127,7 +127,7 @@ module Remarkable # :nodoc:
127
127
  #
128
128
  def default_message_for(validation_type)
129
129
  return :message if @options[:message]
130
- @options.key?(:is) ? :wrong_length : validation_type
130
+ @behavior == :is ? :wrong_length : validation_type
131
131
  end
132
132
  end
133
133
 
@@ -184,34 +184,6 @@ module Remarkable # :nodoc:
184
184
  matcher
185
185
  end
186
186
  alias :validate_size_of :validate_length_of
187
-
188
- # TODO This one is for shoulda compatibility. Deprecate it?
189
- def ensure_length_of(*attributes) #:nodoc:
190
- warn "[DEPRECATION] should_ensure_length_of is deprecated. " <<
191
- "Use should_validate_length_of instead."
192
- validate_length_of(*attributes)
193
- end
194
-
195
- # TODO Deprecate me
196
- def ensure_length_in_range(attribute, range, options = {}) #:nodoc:
197
- warn "[DEPRECATION] should_ensure_length_in_range is deprecated. " <<
198
- "Use should_validate_length_of(#{attribute.inspect}, :in => #{range.inspect}) instead."
199
- ValidateLengthOfMatcher.new(:within, range, attribute, options)
200
- end
201
-
202
- # TODO Deprecate me
203
- def ensure_length_at_least(attribute, range, options = {}) #:nodoc:
204
- warn "[DEPRECATION] should_ensure_length_at_least is deprecated. " <<
205
- "Use should_validate_length_of(#{attribute.inspect}, :minimum => #{range.inspect}) instead."
206
- ValidateLengthOfMatcher.new(:minimum, range, attribute, options)
207
- end
208
-
209
- # TODO Deprecate me
210
- def ensure_length_is(attribute, range, options = {}) #:nodoc:
211
- warn "[DEPRECATION] should_ensure_length_is is deprecated. " <<
212
- "Use should_validate_length_of(#{attribute.inspect}, :is => #{range.inspect}) instead."
213
- ValidateLengthOfMatcher.new(:is, range, attribute, options)
214
- end
215
187
  end
216
188
  end
217
189
  end
@@ -215,20 +215,6 @@ module Remarkable # :nodoc:
215
215
  def validate_numericality_of(*attributes)
216
216
  ValidateNumericalityOfMatcher.new(*attributes)
217
217
  end
218
-
219
- # TODO Deprecate me
220
- def only_allow_numeric_values_for(*attributes) #:nodoc:
221
- warn "[DEPRECATION] should_only_allow_numeric_values_for is deprecated. " <<
222
- "Use should_validate_numericality_of instead."
223
- ValidateNumericalityOfMatcher.new(*attributes)
224
- end
225
-
226
- # TODO Deprecate me
227
- def only_allow_numeric_or_blank_values_for(*attributes)
228
- warn "[DEPRECATION] should_only_allow_numeric_or_blank_values_for is deprecated. " <<
229
- "Use should_validate_numericality_of with :allow_blank => true instead."
230
- ValidateNumericalityOfMatcher.new(*attributes).allow_blank
231
- end
232
218
  end
233
219
  end
234
220
  end
@@ -42,13 +42,6 @@ module Remarkable # :nodoc:
42
42
  ValidatePresenceOfMatcher.new(*attributes)
43
43
  end
44
44
 
45
- # TODO Deprecate me
46
- def require_attributes(*attributes) #:nodoc:
47
- warn "[DEPRECATION] should_require_attributes is deprecated. " <<
48
- "Use should_validate_presence_of instead."
49
- ValidatePresenceOfMatcher.new(*attributes)
50
- end
51
-
52
45
  end
53
46
  end
54
47
  end
@@ -8,21 +8,13 @@ module Remarkable # :nodoc:
8
8
  optional :case_sensitive, :default => true
9
9
 
10
10
  assertions :find_first_object?, :have_attribute?, :case_sensitive?,
11
- :valid_when_changing_scoped_attribute?, :find_nil_object?,
12
- :allow_nil?, :find_blank_object?, :allow_blank?
11
+ :valid_when_changing_scoped_attribute?, :allow_nil?, :allow_blank?
13
12
 
14
13
  def scope(scope)
15
14
  @options[:scope] = [*scope].compact
16
15
  self
17
16
  end
18
17
 
19
- # TODO Deprecate this
20
- #
21
- def scoped_to(scoped)
22
- warn "[DEPRECATION] scoped_to is deprecated. Use only scope instead."
23
- scope(scoped)
24
- end
25
-
26
18
  def description
27
19
  message = "require unique "
28
20
 
@@ -49,12 +41,7 @@ module Remarkable # :nodoc:
49
41
  end
50
42
 
51
43
  def after_initialize
52
- if @options[:scoped_to] # TODO Deprecate scoped_to
53
- warn "[DEPRECATION] :scoped_to is deprecated in should_validate_uniqueness_of. Use :scope instead."
54
- @options[:scope] = [*@options.delete(:scoped_to)].compact
55
- else
56
- @options[:scope] = [*@options[:scope]].compact
57
- end
44
+ @options[:scope] = [*@options[:scope]].compact
58
45
  end
59
46
 
60
47
  # Tries to find an object in the database.
@@ -79,28 +66,6 @@ module Remarkable # :nodoc:
79
66
  false
80
67
  end
81
68
 
82
- # Tries to find an object where the given attribute is nil.
83
- # This is required to test if the validation allows nil.
84
- #
85
- def find_nil_object?
86
- return true unless @options.key? :allow_nil
87
- return true if subject_class.find(:first, :conditions => "#{@attribute} IS NULL")
88
-
89
- @missing = "can't find #{subject_class} with #{@attribute} nil"
90
- false
91
- end
92
-
93
- # Tries to find an object where the given attribute is blank.
94
- # This is required to test if the validation allows blank.
95
- #
96
- def find_blank_object?
97
- return true unless @options.key? :allow_blank
98
- return true if subject_class.find(:first, :conditions => "#{@attribute} = ''")
99
-
100
- @missing = "can't find #{subject_class} with #{@attribute} blank"
101
- false
102
- end
103
-
104
69
  # Check if the attribute given is valid and if the validation fails
105
70
  # for equal values.
106
71
  #
@@ -162,6 +127,20 @@ module Remarkable # :nodoc:
162
127
  (@existing.send(scope) || 999).next
163
128
  end
164
129
 
130
+ # Change the existing object attribute to nil to run allow nil validation.
131
+ #
132
+ def allow_nil?
133
+ @existing.update_attribute(@attribute, nil)
134
+ super
135
+ end
136
+
137
+ # Change the existing object attribute to blank to run allow blank validation.
138
+ #
139
+ def allow_blank?
140
+ @existing.update_attribute(@attribute, '')
141
+ super
142
+ end
143
+
165
144
  def expectation
166
145
  message = "that the #{subject_name} can be saved if "
167
146
 
@@ -180,8 +159,7 @@ module Remarkable # :nodoc:
180
159
  #
181
160
  # Requires an existing record in the database. If you supply :allow_nil as
182
161
  # option, you need to have in the database a record with the given attribute
183
- # nil and another with the given attribute not nil. The same is required for
184
- # allow_blank option.
162
+ # not nil. The same is required for allow_blank option.
185
163
  #
186
164
  # If an instance variable has been created in the setup named after the
187
165
  # model being tested, then this method will use that. Otherwise, it will
@@ -206,13 +184,6 @@ module Remarkable # :nodoc:
206
184
  def validate_uniqueness_of(*attributes)
207
185
  ValidateUniquenessOfMatcher.new(*attributes)
208
186
  end
209
-
210
- #TODO Deprecate this alias, the deprecation warning is the matcher
211
- def require_unique_attributes(*attributes)
212
- warn "[DEPRECATION] should_require_unique_attributes is deprecated. " <<
213
- "Use should_validate_uniqueness_of instead."
214
- validate_uniqueness_of(*attributes)
215
- end
216
187
  end
217
188
  end
218
189
  end
@@ -94,11 +94,15 @@ h2. set_session
94
94
 
95
95
  Macro that creates a test asserting that a value returned from the session is correct. You can given a string to compare to or a proc which will be evaluated.
96
96
 
97
+ Options:
98
+
99
+ * :to - A string or a proc which is evaluated and compared with the retrieved session variable.
100
+
97
101
  Example:
98
102
 
99
- should_set_session(:user_id, proc { @user.id })
103
+ should_set_session(:user_id, :to => proc { @user.id })
100
104
  should_set_session(:user_id){ @user.id }
101
- it { should set_session(:message, 'Free stuff') }
105
+ it { should set_session(:message, :to => 'Free stuff') }
102
106
 
103
107
  h2. route
104
108
 
@@ -119,18 +123,22 @@ Examples:
119
123
  it { should route(:get, "/users/1/posts/1",
120
124
  :controller => :posts, :action => :show, :id => 1, :user_id => 1) }</code></pre>
121
125
 
122
- h2. set_the_flash_to
126
+ h2. set_the_flash
123
127
 
124
128
  Macro that creates a test asserting that the flash contains the given value. val can be a String, a Regex, or nil (indicating that the flash should not be set).
125
129
 
130
+ Options:
131
+
132
+ * :to - A value to check if it exists in flash or not.
133
+
126
134
  Example:
127
135
 
128
- <pre><code> should_set_the_flash_to "Thank you for placing this order."
129
- should_set_the_flash_to /created/i
136
+ <pre><code> should_set_the_flash :to => "Thank you for placing this order."
137
+ should_set_the_flash :to => /created/i
130
138
  should_not set_the_flash
131
139
 
132
- it { should set_the_flash_to("Thank you for placing this order.") }
133
- it { should set_the_flash_to(/created/i) }
140
+ it { should set_the_flash.to("Thank you for placing this order.") }
141
+ it { should set_the_flash.to(/created/i) }
134
142
  it { should_not set_the_flash }</code></pre>
135
143
 
136
144
  h2. redirect_to
@@ -22,8 +22,7 @@ module Remarkable # :nodoc:
22
22
  elsif url.is_a?(Proc)
23
23
  self.instance_eval &url
24
24
  else
25
- warn "[DEPRECATION] Strings given to should_redirect_to won't be evaluated anymore. Give a proc or a block instead." if url.is_a?(String)
26
- self.instance_eval(url) rescue url
25
+ url
27
26
  end
28
27
 
29
28
  response.should redirect_to(redirect_url)
@@ -37,8 +36,7 @@ module Remarkable # :nodoc:
37
36
  elsif url.is_a?(Proc)
38
37
  self.instance_eval &url
39
38
  else
40
- warn "[DEPRECATION] Strings given to should_not_redirect_to won't be evaluated anymore. Give a proc or a block instead." if url.is_a?(String)
41
- self.instance_eval(url) rescue url
39
+ url
42
40
  end
43
41
 
44
42
  response.should_not redirect_to(redirect_url)
@@ -11,7 +11,6 @@ module Remarkable # :nodoc:
11
11
  @names = names
12
12
  @options[:equals] = block if block_given?
13
13
 
14
- warn "[DEPRECATION] Strings given in :equals to should_assign_to won't be evaluated anymore. You can give procs or use blocks instead." if @options[:equals].is_a?(String)
15
14
  warn "[DEPRECATION] :equals option is deprecated in should_assign_to. Please give :with instead." if @options[:equals]
16
15
  warn "[DEPRECATION] :class option is deprecated in should_assign_to. Please give :with_kind_of instead." if @options[:class]
17
16
 
@@ -66,9 +65,7 @@ module Remarkable # :nodoc:
66
65
  def is_equals_expected_value?
67
66
  return true unless @options[:with]
68
67
 
69
- expected_value = if @options[:with].is_a?(String)
70
- @spec.instance_eval(@options[:with]) rescue @options[:with]
71
- elsif @options[:with].is_a?(Proc)
68
+ expected_value = if @options[:with].is_a?(Proc)
72
69
  @spec.instance_eval &@options[:with]
73
70
  else
74
71
  @options[:with]
@@ -10,6 +10,11 @@ module Remarkable # :nodoc:
10
10
  @expected = block if block_given?
11
11
  end
12
12
 
13
+ def to(value)
14
+ @expected = value
15
+ self
16
+ end
17
+
13
18
  def matches?(subject)
14
19
  @subject = subject
15
20
 
@@ -34,8 +39,7 @@ module Remarkable # :nodoc:
34
39
  expected_value = if @expected.is_a?(Proc)
35
40
  @spec.instance_eval &@expected
36
41
  else
37
- warn "[DEPRECATION] Strings given to should_set_session won't be evaluated anymore. Give a block or a proc instead."
38
- @spec.instance_eval(@expected) rescue @expected
42
+ @expected
39
43
  end
40
44
  return true if @session[@key] == expected_value
41
45
 
@@ -57,13 +61,18 @@ module Remarkable # :nodoc:
57
61
  end
58
62
 
59
63
  def set_session(key, expected=nil, &block)
64
+ expected = if expected.is_a?(Hash)
65
+ expected[:to]
66
+ elsif expected
67
+ warn "[DEPRECATION] set_session(#{key.inspect}, #{expected.inspect}) is deprecated. " <<
68
+ "Please use set_session(#{key.inspect}, :to => #{expected.inspect})"
69
+ expected
70
+ else
71
+ expected
72
+ end
73
+
60
74
  SetSessionMatcher.new(key, expected, &block)
61
75
  end
62
-
63
- def return_from_session(*args, &block)
64
- warn "[DEPRECATION] should_return_from_session is deprecated. Use should_set_session instead."
65
- set_session(*args, &block)
66
- end
67
76
  end
68
77
  end
69
78
  end
@@ -1,11 +1,23 @@
1
1
  module Remarkable # :nodoc:
2
2
  module Controller # :nodoc:
3
3
  module Matchers # :nodoc:
4
- class SetTheFlashTo < Remarkable::Matcher::Base
4
+ class SetTheFlash < Remarkable::Matcher::Base
5
5
  include Remarkable::Controller::Helpers
6
6
 
7
7
  def initialize(val)
8
+ @val = if val.is_a?(Hash)
9
+ val[:to]
10
+ elsif val
11
+ warn "[DEPRECATION] set_the_flash(#{val.inspect}) is deprecated, please use set_the_flash(:to => #{val.inspect}) instead"
12
+ val
13
+ else
14
+ val
15
+ end
16
+ end
17
+
18
+ def to(val)
8
19
  @val = val
20
+ self
9
21
  end
10
22
 
11
23
  def matches?(subject)
@@ -36,7 +48,7 @@ module Remarkable # :nodoc:
36
48
  return true if assert_contains(@flash.values, @val)
37
49
  @missing = "not have #{@val} in the flash"
38
50
  else
39
- return true if @flash == {}
51
+ return true if @flash.blank?
40
52
  @missing = "flash is not empty"
41
53
  end
42
54
  return false
@@ -51,10 +63,14 @@ module Remarkable # :nodoc:
51
63
  end
52
64
  end
53
65
 
54
- def set_the_flash_to(val = '')
55
- SetTheFlashTo.new(val)
66
+ def set_the_flash(val={:to=>''})
67
+ SetTheFlash.new(val)
68
+ end
69
+
70
+ def set_the_flash_to(val={:to=>''})
71
+ warn "[DEPRECATION] set_the_flash_to matcher is deprecated, please use set_the_flash instead"
72
+ SetTheFlash.new(val)
56
73
  end
57
- alias_method :set_the_flash, :set_the_flash_to
58
74
  end
59
75
  end
60
76
  end
data/remarkable.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{remarkable}
5
- s.version = "2.2.10"
5
+ s.version = "2.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Carlos Brando", "Jos\303\251 Valim", "Diego Carrion"]
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.description = %q{}
11
11
  s.email = ["eduardobrando@gmail.com", "jose.valim@gmail.com", "dc.rec1@gmail.com"]
12
12
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc"]
13
- s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "init.rb", "lib/remarkable.rb", "lib/remarkable/active_record/README.markdown", "lib/remarkable/active_record/active_record.rb", "lib/remarkable/active_record/helpers.rb", "lib/remarkable/active_record/macros.rb", "lib/remarkable/active_record/macros/associations/association_matcher.rb", "lib/remarkable/active_record/macros/callbacks/callback_matcher.rb", "lib/remarkable/active_record/macros/database/have_db_column_matcher.rb", "lib/remarkable/active_record/macros/database/index_matcher.rb", "lib/remarkable/active_record/macros/validations/allow_mass_assignment_of_matcher.rb", "lib/remarkable/active_record/macros/validations/ensure_value_in_list_matcher.rb", "lib/remarkable/active_record/macros/validations/ensure_value_in_range_matcher.rb", "lib/remarkable/active_record/macros/validations/have_class_methods_matcher.rb", "lib/remarkable/active_record/macros/validations/have_instance_methods_matcher.rb", "lib/remarkable/active_record/macros/validations/have_named_scope_matcher.rb", "lib/remarkable/active_record/macros/validations/have_readonly_attributes_matcher.rb", "lib/remarkable/active_record/macros/validations/protect_attributes_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_acceptance_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_associated_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_confirmation_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_exclusion_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_format_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_inclusion_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_length_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_numericality_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_presence_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_uniqueness_of_matcher.rb", "lib/remarkable/assertions.rb", "lib/remarkable/controller/README.markdown", "lib/remarkable/controller/controller.rb", "lib/remarkable/controller/helpers.rb", "lib/remarkable/controller/macros.rb", "lib/remarkable/controller/macros/assign_matcher.rb", "lib/remarkable/controller/macros/filter_params_matcher.rb", "lib/remarkable/controller/macros/metadata_matcher.rb", "lib/remarkable/controller/macros/render_with_layout_matcher.rb", "lib/remarkable/controller/macros/respond_with_content_type_matcher.rb", "lib/remarkable/controller/macros/respond_with_matcher.rb", "lib/remarkable/controller/macros/set_session_matcher.rb", "lib/remarkable/controller/macros/route_matcher.rb", "lib/remarkable/controller/macros/set_the_flash_to_matcher.rb", "lib/remarkable/dsl.rb", "lib/remarkable/example/example_methods.rb", "lib/remarkable/helpers.rb", "lib/remarkable/inflections.rb", "lib/remarkable/matcher_base.rb", "lib/remarkable/private_helpers.rb", "lib/remarkable/rails.rb", "lib/remarkable/rails/extract_options.rb", "rails/init.rb", "remarkable.gemspec", "script/console", "script/destroy", "script/generate", "tasks/rspec.rake"]
13
+ s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "init.rb", "lib/remarkable.rb", "lib/remarkable/active_record/README.markdown", "lib/remarkable/active_record/active_record.rb", "lib/remarkable/active_record/helpers.rb", "lib/remarkable/active_record/macros.rb", "lib/remarkable/active_record/macros/associations/association_matcher.rb", "lib/remarkable/active_record/macros/callbacks/callback_matcher.rb", "lib/remarkable/active_record/macros/database/have_db_column_matcher.rb", "lib/remarkable/active_record/macros/database/index_matcher.rb", "lib/remarkable/active_record/macros/validations/allow_mass_assignment_of_matcher.rb", "lib/remarkable/active_record/macros/validations/ensure_value_in_list_matcher.rb", "lib/remarkable/active_record/macros/validations/ensure_value_in_range_matcher.rb", "lib/remarkable/active_record/macros/validations/have_class_methods_matcher.rb", "lib/remarkable/active_record/macros/validations/have_instance_methods_matcher.rb", "lib/remarkable/active_record/macros/validations/have_named_scope_matcher.rb", "lib/remarkable/active_record/macros/validations/have_readonly_attributes_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_acceptance_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_associated_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_confirmation_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_exclusion_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_format_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_inclusion_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_length_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_numericality_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_presence_of_matcher.rb", "lib/remarkable/active_record/macros/validations/validate_uniqueness_of_matcher.rb", "lib/remarkable/assertions.rb", "lib/remarkable/controller/README.markdown", "lib/remarkable/controller/controller.rb", "lib/remarkable/controller/helpers.rb", "lib/remarkable/controller/macros.rb", "lib/remarkable/controller/macros/assign_matcher.rb", "lib/remarkable/controller/macros/filter_params_matcher.rb", "lib/remarkable/controller/macros/metadata_matcher.rb", "lib/remarkable/controller/macros/render_with_layout_matcher.rb", "lib/remarkable/controller/macros/respond_with_content_type_matcher.rb", "lib/remarkable/controller/macros/respond_with_matcher.rb", "lib/remarkable/controller/macros/set_session_matcher.rb", "lib/remarkable/controller/macros/route_matcher.rb", "lib/remarkable/controller/macros/set_the_flash_matcher.rb", "lib/remarkable/dsl.rb", "lib/remarkable/example/example_methods.rb", "lib/remarkable/helpers.rb", "lib/remarkable/inflections.rb", "lib/remarkable/matcher_base.rb", "lib/remarkable/private_helpers.rb", "lib/remarkable/rails.rb", "lib/remarkable/rails/extract_options.rb", "rails/init.rb", "remarkable.gemspec", "script/console", "script/destroy", "script/generate"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://www.nomedojogo.com/2008/11/18/shoulda-for-rspec-is-remarkable/}
16
16
  s.post_install_message = %q{PostInstall.txt}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carlosbrando-remarkable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.10
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Brando
@@ -91,7 +91,6 @@ files:
91
91
  - lib/remarkable/active_record/macros/validations/have_instance_methods_matcher.rb
92
92
  - lib/remarkable/active_record/macros/validations/have_named_scope_matcher.rb
93
93
  - lib/remarkable/active_record/macros/validations/have_readonly_attributes_matcher.rb
94
- - lib/remarkable/active_record/macros/validations/protect_attributes_matcher.rb
95
94
  - lib/remarkable/active_record/macros/validations/validate_acceptance_of_matcher.rb
96
95
  - lib/remarkable/active_record/macros/validations/validate_associated_matcher.rb
97
96
  - lib/remarkable/active_record/macros/validations/validate_confirmation_of_matcher.rb
@@ -115,7 +114,7 @@ files:
115
114
  - lib/remarkable/controller/macros/respond_with_matcher.rb
116
115
  - lib/remarkable/controller/macros/set_session_matcher.rb
117
116
  - lib/remarkable/controller/macros/route_matcher.rb
118
- - lib/remarkable/controller/macros/set_the_flash_to_matcher.rb
117
+ - lib/remarkable/controller/macros/set_the_flash_matcher.rb
119
118
  - lib/remarkable/dsl.rb
120
119
  - lib/remarkable/example/example_methods.rb
121
120
  - lib/remarkable/helpers.rb
@@ -129,7 +128,6 @@ files:
129
128
  - script/console
130
129
  - script/destroy
131
130
  - script/generate
132
- - tasks/rspec.rake
133
131
  has_rdoc: true
134
132
  homepage: http://www.nomedojogo.com/2008/11/18/shoulda-for-rspec-is-remarkable/
135
133
  post_install_message: PostInstall.txt
@@ -1,51 +0,0 @@
1
- module Remarkable # :nodoc:
2
- module ActiveRecord # :nodoc:
3
- module Matchers # :nodoc:
4
- class ProtectAttributes < Remarkable::Matcher::Base
5
- def initialize(*attributes)
6
- attributes.extract_options!
7
- @attributes = attributes
8
- end
9
-
10
- def matches?(subject)
11
- @subject = subject
12
-
13
- assert_matcher_for(@attributes) do |attribute|
14
- @attribute = attribute
15
- protect_from_mass_updates?
16
- end
17
- end
18
-
19
- def description
20
- "protect #{@attributes.to_sentence} from mass updates"
21
- end
22
-
23
- private
24
-
25
- def protect_from_mass_updates?
26
- attribute = @attribute.to_sym
27
- protected = subject_class.protected_attributes || []
28
- accessible = subject_class.accessible_attributes || []
29
-
30
- return true if !protected.empty? && protected.include?(attribute.to_s)
31
- return true if !accessible.empty? && !accessible.include?(attribute.to_s)
32
-
33
- @missing = accessible.empty? ? "#{subject_class} is protecting #{protected.to_a.to_sentence}, but not #{attribute}." :
34
- "#{subject_class} has made #{attribute} accessible"
35
- return false
36
- end
37
-
38
- def expectation
39
- "that #{@attribute} cannot be set on mass update"
40
- end
41
- end
42
-
43
- # TODO Deprecate this method and the matcher.
44
- def protect_attributes(*attributes) #:nodoc:
45
- warn "[DEPRECATION] should_protect_attributes is deprecated. " <<
46
- "Use should_not_allow_mass_assignment_of instead."
47
- ProtectAttributes.new(*attributes)
48
- end
49
- end
50
- end
51
- end