lib/shoulda/macros.rb in thoughtbot-shoulda-2.0.6 vs lib/shoulda/macros.rb in thoughtbot-shoulda-2.9.0
- old
+ new
@@ -1,74 +1,73 @@
require 'shoulda/private_helpers'
-module ThoughtBot # :nodoc:
- module Shoulda # :nodoc:
- module Macros
- # Macro that creates a test asserting a change between the return value
- # of an expression that is run before and after the current setup block
- # is run. This is similar to Active Support's <tt>assert_difference</tt>
- # assertion, but supports more than just numeric values. See also
- # should_not_change.
- #
- # Example:
- #
- # context "Creating a post" do
- # setup { Post.create }
- # should_change "Post.count", :by => 1
- # end
- #
- # As shown in this example, the <tt>:by</tt> option expects a numeric
- # difference between the before and after values of the expression. You
- # may also specify <tt>:from</tt> and <tt>:to</tt> options:
- #
- # should_change "Post.count", :from => 0, :to => 1
- # should_change "@post.title", :from => "old", :to => "new"
- #
- # Combinations of <tt>:by</tt>, <tt>:from</tt>, and <tt>:to</tt> are allowed:
- #
- # should_change "@post.title" # => assert the value changed in some way
- # should_change "@post.title", :from => "old" # => assert the value changed to anything other than "old"
- # should_change "@post.title", :to => "new" # => assert the value changed from anything other than "new"
- def should_change(expression, options = {})
- by, from, to = get_options!([options], :by, :from, :to)
- stmt = "change #{expression.inspect}"
- stmt << " from #{from.inspect}" if from
- stmt << " to #{to.inspect}" if to
- stmt << " by #{by.inspect}" if by
+module Shoulda # :nodoc:
+ module Macros
+ # Macro that creates a test asserting a change between the return value
+ # of an expression that is run before and after the current setup block
+ # is run. This is similar to Active Support's <tt>assert_difference</tt>
+ # assertion, but supports more than just numeric values. See also
+ # should_not_change.
+ #
+ # Example:
+ #
+ # context "Creating a post" do
+ # setup { Post.create }
+ # should_change "Post.count", :by => 1
+ # end
+ #
+ # As shown in this example, the <tt>:by</tt> option expects a numeric
+ # difference between the before and after values of the expression. You
+ # may also specify <tt>:from</tt> and <tt>:to</tt> options:
+ #
+ # should_change "Post.count", :from => 0, :to => 1
+ # should_change "@post.title", :from => "old", :to => "new"
+ #
+ # Combinations of <tt>:by</tt>, <tt>:from</tt>, and <tt>:to</tt> are allowed:
+ #
+ # should_change "@post.title" # => assert the value changed in some way
+ # should_change "@post.title", :from => "old" # => assert the value changed to anything other than "old"
+ # should_change "@post.title", :to => "new" # => assert the value changed from anything other than "new"
+ def should_change(expression, options = {})
+ by, from, to = get_options!([options], :by, :from, :to)
+ stmt = "change #{expression.inspect}"
+ stmt << " from #{from.inspect}" if from
+ stmt << " to #{to.inspect}" if to
+ stmt << " by #{by.inspect}" if by
- expression_eval = lambda { eval(expression) }
- before = lambda { @_before_should_change = expression_eval.bind(self).call }
- should stmt, :before => before do
- old_value = @_before_should_change
- new_value = expression_eval.bind(self).call
- assert_operator from, :===, old_value, "#{expression.inspect} did not originally match #{from.inspect}" if from
- assert_not_equal old_value, new_value, "#{expression.inspect} did not change" unless by == 0
- assert_operator to, :===, new_value, "#{expression.inspect} was not changed to match #{to.inspect}" if to
- assert_equal old_value + by, new_value if by
- end
+ expression_eval = lambda { eval(expression) }
+ before = lambda { @_before_should_change = expression_eval.bind(self).call }
+ should stmt, :before => before do
+ old_value = @_before_should_change
+ new_value = expression_eval.bind(self).call
+ assert_operator from, :===, old_value, "#{expression.inspect} did not originally match #{from.inspect}" if from
+ assert_not_equal old_value, new_value, "#{expression.inspect} did not change" unless by == 0
+ assert_operator to, :===, new_value, "#{expression.inspect} was not changed to match #{to.inspect}" if to
+ assert_equal old_value + by, new_value if by
end
+ end
- # Macro that creates a test asserting no change between the return value
- # of an expression that is run before and after the current setup block
- # is run. This is the logical opposite of should_change.
- #
- # Example:
- #
- # context "Updating a post" do
- # setup { @post.update_attributes(:title => "new") }
- # should_not_change "Post.count"
- # end
- def should_not_change(expression)
- expression_eval = lambda { eval(expression) }
- before = lambda { @_before_should_not_change = expression_eval.bind(self).call }
- should "not change #{expression.inspect}", :before => before do
- new_value = expression_eval.bind(self).call
- assert_equal @_before_should_not_change, new_value, "#{expression.inspect} changed"
- end
+ # Macro that creates a test asserting no change between the return value
+ # of an expression that is run before and after the current setup block
+ # is run. This is the logical opposite of should_change.
+ #
+ # Example:
+ #
+ # context "Updating a post" do
+ # setup { @post.update_attributes(:title => "new") }
+ # should_not_change "Post.count"
+ # end
+ def should_not_change(expression)
+ expression_eval = lambda { eval(expression) }
+ before = lambda { @_before_should_not_change = expression_eval.bind(self).call }
+ should "not change #{expression.inspect}", :before => before do
+ new_value = expression_eval.bind(self).call
+ assert_equal @_before_should_not_change, new_value, "#{expression.inspect} changed"
end
+ end
- private
+ private
- include ThoughtBot::Shoulda::Private
- end
+ include Shoulda::Private
end
end
+