README.md in rspec_candy-0.4.1 vs README.md in rspec_candy-0.5.0
- old
+ new
@@ -8,104 +8,118 @@
- RSpec 1 / Rails 2.3
- RSpec 2 / Rails 3.2
- RSpec 3 / Rails 4.2
-##Installation
+## Installation
Add `rspec_candy` to your Gemfile.
Now, in your `spec_helper.rb`, add this after your RSpec requires:
- require 'rspec_candy/all'
+```ruby
+require 'rspec_candy/all'
+```
If you only care about the matchers or helpers you can also more specifically require:
- require 'rspec_candy/matchers'
- require 'rspec_candy/helpers'
+```ruby
+require 'rspec_candy/matchers'
+require 'rspec_candy/helpers'
+```
+## Matchers provided
-##Matchers provided
-
**be_same_number_as**
Tests if the given number is the "same" as the receiving number, regardless of whether you're comparing `Fixnums` (integers), `Floats` and `BigDecimals`:
- 100.should be_same_number_as(100.0)
- 50.4.should be_same_number_as(BigDecimal('50.4'))
+```ruby
+100.should be_same_number_as(100.0)
+50.4.should be_same_number_as(BigDecimal('50.4'))
+```
Note that "same" means "same for your purposes". Internally the matcher compares normalized results of `#to_s`.
**be_same_second_as**
Tests if the given `Time` or `DateTime` is the same as the receiving `Time` or `DateTime`, [ignoring sub-second differences](https://makandracards.com/makandra/1057-why-two-ruby-time-objects-are-not-equal-although-they-appear-to-be):
- Time.parse('2012-12-01 14:00:00.5').should == Time.parse('2012-12-01 14:00')
+```ruby
+Time.parse('2012-12-01 14:00:00.5').should == Time.parse('2012-12-01 14:00')
+```
Note that two times in a different time zones will still be considered different.
**include_hash**
Matches if the given hash is included in the receiving hash:
- { :foo => 'a', :bar => 'b' }.should include_hash(:foo => 'a') # passes
- { :foo => 'a', :bar => 'b' }.should include_hash(:foo => 'b') # fails
- { :foo => 'a', :bar => 'b' }.should include_hash(:foo => 'a', :baz => 'c') # fails
+```ruby
+{ :foo => 'a', :bar => 'b' }.should include_hash(:foo => 'a') # passes
+{ :foo => 'a', :bar => 'b' }.should include_hash(:foo => 'b') # fails
+{ :foo => 'a', :bar => 'b' }.should include_hash(:foo => 'a', :baz => 'c') # fails
+```
+## Helpers provided
-##Helpers provided
-
### Extensions to **Object**
**should_receive_and_execute**
Like "should_receive", but also executes the method.
**should_receive_and_return**
Expects multiple returns at once:
-
- dog.should_receive_and_return(:bark => "Woof", :fetch => "stick")
+```ruby
+dog.should_receive_and_return(:bark => "Woof", :fetch => "stick")
+```
**should_receive_chain**
Expect a chain of method calls:
- dog.should_receive_chain(:bark, :upcase).and_return("WOOF")
+```ruby
+dog.should_receive_chain(:bark, :upcase).and_return("WOOF")
+```
-
You can also expect arguments, like:
+
+```ruby
+dog.should_receive_chain([:bark, 'loudly'], :upcase).and_return("WOOF!!!")
+```
- dog.should_receive_chain([:bark, 'loudly'], :upcase).and_return("WOOF!!!")
-
-
**stub_existing**
- Like stub, put complains if the method did not exist in the first place.
+ Like stub, but complains if the method did not exist in the first place.
### Extensions to **Class**
**disposable_copy**
Like dup for classes. This will temporarily add a method to a class:
- copy = Model.disposable_copy do
- def foo; end
- end
+```ruby
+copy = Model.disposable_copy do
+ def foo; end
+end
- object = copy.new
+object = copy.new
+```
-
**new_with_stubs**
Instantiates and stubs in one call:
- Model.new_with_stubs(:to_param => '1')
+```ruby
+Model.new_with_stubs(:to_param => '1')
+```
**stub_any_instance**
Backport for `any_instance.stub` to RSpec1.
@@ -116,47 +130,30 @@
Extension to 'it_should_behave_like`, not necessary for RSpec2.
Allows parametrizing shared examples, exposes parameters as lets:
- shared_examples_for "an animal" do
- it 'should make noises' do
- subject.say.should == expected_noise
- end
- end
+```ruby
+shared_examples_for "an animal" do
+ it 'should make noises' do
+ subject.say.should == expected_noise
+ end
+end
- describe Dog do
- it_should_act_like 'an animal', :expected_noise => 'Woof!'
- end
+describe Dog do
+ it_should_act_like 'an animal', :expected_noise => 'Woof!'
+end
+```
-
Blocks are passed as a let named "block".
-**it_should_run_callbacks**
- Only on Rails.
-
- Check if callbacks are run. Note the name of the describe block is significant:
-
- describe Model, '#after_save' do
- it_should_run_callbacks :notify_this, :notify_that
- end
-
-
-
-**it_should_run_callbacks_in_order**
-
- Like `it_should_run_callbacks`, but also checks the correct order.
-
-
-
-
### Extensions to **ActiveRecord::Base**
**store_with_values**
-
+
Only on Rails.
Creates a record without validations or callbacks (like a stub in the database). Can be significantly faster than a factory.
@@ -166,7 +163,5 @@
- `new_and_store` has been renamed to `store_with_values`
- `create_without_callbacks` has been renamed to `store_with_values`
- `keep_invalid!` has been renamed to `prevent_storage`
- `Object#should_not_receive_and_execute` has been removed (same as `Object#should_not_receive`)
- `should_receive_all_with` (over-generic method name for a helper that is rarely useful)
-
-