rspec-mocks 2.0.0.beta.8 → 2.0.0.beta.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/README.markdown +1 -1
  2. data/Rakefile +10 -10
  3. data/VERSION +1 -1
  4. data/features/mocks/block_local_expectations.feature +5 -5
  5. data/features/mocks/mix_stubs_and_mocks.feature +2 -2
  6. data/features/mocks/warn_when_expectation_is_set_on_nil.feature +6 -6
  7. data/features/stubs/stub_implementation.feature +2 -2
  8. data/lib/rspec/mocks.rb +112 -137
  9. data/lib/rspec/mocks/argument_expectation.rb +1 -1
  10. data/lib/rspec/mocks/argument_matchers.rb +1 -1
  11. data/lib/rspec/mocks/error_generator.rb +2 -2
  12. data/lib/rspec/mocks/errors.rb +1 -1
  13. data/lib/rspec/mocks/extensions/instance_exec.rb +2 -2
  14. data/lib/rspec/mocks/extensions/object.rb +1 -1
  15. data/lib/rspec/mocks/message_expectation.rb +3 -3
  16. data/lib/rspec/mocks/method_double.rb +3 -3
  17. data/lib/rspec/mocks/methods.rb +1 -1
  18. data/lib/rspec/mocks/mock.rb +9 -6
  19. data/lib/rspec/mocks/order_group.rb +1 -1
  20. data/lib/rspec/mocks/proxy.rb +9 -8
  21. data/lib/rspec/mocks/space.rb +1 -1
  22. data/lib/rspec/mocks/spec_methods.rb +13 -15
  23. data/lib/rspec/mocks/version.rb +1 -1
  24. data/rspec-mocks.gemspec +11 -11
  25. data/spec/rspec/mocks/and_yield_spec.rb +4 -4
  26. data/spec/rspec/mocks/any_number_of_times_spec.rb +2 -2
  27. data/spec/rspec/mocks/argument_expectation_spec.rb +3 -3
  28. data/spec/rspec/mocks/at_least_spec.rb +7 -7
  29. data/spec/rspec/mocks/at_most_spec.rb +5 -5
  30. data/spec/rspec/mocks/bug_report_10260_spec.rb +1 -1
  31. data/spec/rspec/mocks/bug_report_15719_spec.rb +3 -3
  32. data/spec/rspec/mocks/bug_report_830_spec.rb +2 -2
  33. data/spec/rspec/mocks/double_spec.rb +1 -1
  34. data/spec/rspec/mocks/failing_argument_matchers_spec.rb +14 -14
  35. data/spec/rspec/mocks/hash_including_matcher_spec.rb +1 -1
  36. data/spec/rspec/mocks/hash_not_including_matcher_spec.rb +1 -1
  37. data/spec/rspec/mocks/mock_ordering_spec.rb +4 -4
  38. data/spec/rspec/mocks/mock_space_spec.rb +2 -2
  39. data/spec/rspec/mocks/mock_spec.rb +32 -25
  40. data/spec/rspec/mocks/multiple_return_value_spec.rb +12 -12
  41. data/spec/rspec/mocks/nil_expectation_warning_spec.rb +3 -3
  42. data/spec/rspec/mocks/null_object_mock_spec.rb +3 -3
  43. data/spec/rspec/mocks/once_counts_spec.rb +4 -4
  44. data/spec/rspec/mocks/options_hash_spec.rb +4 -4
  45. data/spec/rspec/mocks/partial_mock_spec.rb +9 -9
  46. data/spec/rspec/mocks/partial_mock_using_mocks_directly_spec.rb +3 -3
  47. data/spec/rspec/mocks/passing_argument_matchers_spec.rb +3 -3
  48. data/spec/rspec/mocks/precise_counts_spec.rb +3 -3
  49. data/spec/rspec/mocks/record_messages_spec.rb +2 -2
  50. data/spec/rspec/mocks/stash_spec.rb +1 -1
  51. data/spec/rspec/mocks/stub_chain_spec.rb +1 -1
  52. data/spec/rspec/mocks/stub_implementation_spec.rb +1 -1
  53. data/spec/rspec/mocks/stub_spec.rb +1 -1
  54. data/spec/rspec/mocks/stubbed_message_expectations_spec.rb +2 -2
  55. data/spec/rspec/mocks/twice_counts_spec.rb +5 -5
  56. data/spec/spec_helper.rb +4 -4
  57. metadata +10 -10
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
 
4
4
  class ArgumentExpectation
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
 
4
4
  # ArgumentMatchers are messages that you can include in message
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  class ErrorGenerator
4
4
  attr_writer :opts
@@ -67,7 +67,7 @@ module Rspec
67
67
 
68
68
  def __raise(message)
69
69
  message = opts[:message] unless opts[:message].nil?
70
- Kernel::raise(Rspec::Mocks::MockExpectationError, message)
70
+ Kernel::raise(RSpec::Mocks::MockExpectationError, message)
71
71
  end
72
72
 
73
73
  def arg_message(*args)
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  class MockExpectationError < Exception
4
4
  end
@@ -1,5 +1,5 @@
1
- module Rspec
2
- module Core
1
+ module RSpec
2
+ module Mocks
3
3
  module InstanceExec
4
4
  unless respond_to?(:instance_exec)
5
5
  # based on Bounded Spec InstanceExec (Mauricio Fernandez)
@@ -1,3 +1,3 @@
1
1
  class Object
2
- include Rspec::Mocks::Methods
2
+ include RSpec::Mocks::Methods
3
3
  end
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
 
4
4
  class BaseExpectation
@@ -90,7 +90,7 @@ module Rspec
90
90
  if block
91
91
  require 'rspec/mocks/extensions/instance_exec'
92
92
  @eval_context = Object.new
93
- @eval_context.extend Rspec::Core::InstanceExec
93
+ @eval_context.extend RSpec::Mocks::InstanceExec
94
94
  yield @eval_context
95
95
  end
96
96
 
@@ -206,7 +206,7 @@ module Rspec
206
206
  return if expected_messages_received? || failed_fast?
207
207
 
208
208
  generate_error
209
- rescue Rspec::Mocks::MockExpectationError => error
209
+ rescue RSpec::Mocks::MockExpectationError => error
210
210
  error.backtrace.insert(0, @expected_from)
211
211
  Kernel::raise error
212
212
  end
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  class MethodDouble < Hash
4
4
  attr_reader :method_name
@@ -145,13 +145,13 @@ module Rspec
145
145
  end
146
146
 
147
147
  def warn_if_nil_class
148
- if proxy_for_nil_class? & Rspec::Mocks::Proxy.warn_about_expectations_on_nil
148
+ if proxy_for_nil_class? & RSpec::Mocks::Proxy.warn_about_expectations_on_nil
149
149
  Kernel.warn("An expectation of :#{@method_name} was set on nil. Called from #{caller[4]}. Use allow_message_expectations_on_nil to disable warnings.")
150
150
  end
151
151
  end
152
152
 
153
153
  def reset_nil_expectations_warning
154
- Rspec::Mocks::Proxy.warn_about_expectations_on_nil = true if proxy_for_nil_class?
154
+ RSpec::Mocks::Proxy.warn_about_expectations_on_nil = true if proxy_for_nil_class?
155
155
  end
156
156
  end
157
157
  end
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  module Methods
4
4
  def should_receive(sym, opts={}, &block)
@@ -1,12 +1,10 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  class Mock
4
4
  include Methods
5
5
 
6
- # Creates a new mock with a +name+ (that will be used in error messages
7
- # only) == Options:
8
- # * <tt>:null_object</tt> - if true, the mock object acts as a forgiving
9
- # null object allowing any message to be sent to it.
6
+ # Creates a new test double with a +name+ (that will be used in error messages
7
+ # only)
10
8
  def initialize(name=nil, stubs_and_options={})
11
9
  if name.is_a?(Hash) && stubs_and_options.empty?
12
10
  stubs_and_options = name
@@ -34,6 +32,8 @@ module Rspec
34
32
  inspect.gsub('<','[').gsub('>',']')
35
33
  end
36
34
 
35
+ alias_method :to_str, :to_s
36
+
37
37
  private
38
38
 
39
39
  def method_missing(sym, *args, &block)
@@ -47,8 +47,11 @@ module Rspec
47
47
  end
48
48
 
49
49
  def extract_options(stubs_and_options)
50
+ if stubs_and_options[:null_object]
51
+ @null_object = stubs_and_options.delete(:null_object)
52
+ RSpec.deprecate(%Q["double('name', :null_object => true)"], %Q["double('name').as_null_object"])
53
+ end
50
54
  options = {}
51
- extract_option(stubs_and_options, options, :null_object)
52
55
  extract_option(stubs_and_options, options, :__declared_as, 'Mock')
53
56
  options
54
57
  end
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  class OrderGroup
4
4
  def initialize error_generator
@@ -1,8 +1,6 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  class Proxy
4
- DEFAULT_OPTIONS = { :null_object => false }
5
-
6
4
  class << self
7
5
  def warn_about_expectations_on_nil
8
6
  defined?(@warn_about_expectations_on_nil) ? @warn_about_expectations_on_nil : true
@@ -31,24 +29,27 @@ module Rspec
31
29
  @error_generator = ErrorGenerator.new object, name, options
32
30
  @expectation_ordering = OrderGroup.new @error_generator
33
31
  @messages_received = []
34
- @options = options ? DEFAULT_OPTIONS.dup.merge(options) : DEFAULT_OPTIONS
32
+ @options = options
35
33
  @already_proxied_respond_to = false
34
+ @null_object = false
36
35
  end
37
36
 
38
37
  def null_object?
39
- @options[:null_object]
38
+ @null_object
40
39
  end
41
40
 
41
+ # Tells the object to ignore any messages that aren't explicitly set as
42
+ # stubs or message expectations.
42
43
  def as_null_object
43
- @options[:null_object] = true
44
+ @null_object = true
44
45
  @object
45
46
  end
46
47
 
47
- def already_proxied_respond_to
48
+ def already_proxied_respond_to # :nodoc:
48
49
  @already_proxied_respond_to = true
49
50
  end
50
51
 
51
- def already_proxied_respond_to?
52
+ def already_proxied_respond_to? # :nodoc:
52
53
  @already_proxied_respond_to
53
54
  end
54
55
 
@@ -1,4 +1,4 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  class Space
4
4
  def add(obj)
@@ -1,25 +1,23 @@
1
- module Rspec
1
+ module RSpec
2
2
  module Mocks
3
3
  module ExampleMethods
4
- include Rspec::Mocks::ArgumentMatchers
4
+ include RSpec::Mocks::ArgumentMatchers
5
5
 
6
- # Shortcut for creating an instance of Rspec::Mocks::Mock.
6
+ # Creates an instance of RSpec::Mocks::Mock.
7
7
  #
8
- # +name+ is used for failure reporting, so you should use the
9
- # role that the mock is playing in the example.
8
+ # +name+ is used for failure reporting, so you should use the role that
9
+ # the mock is playing in the example.
10
10
  #
11
- # +stubs_and_options+ lets you assign options and stub values
12
- # at the same time. The only option available is :null_object.
13
- # Anything else is treated as a stub value.
11
+ # Use +stubs+ to declare one or more method stubs in one statement.
14
12
  #
15
13
  # == Examples
16
14
  #
17
- # stub_thing = double("thing", :a => "A")
18
- # stub_thing.a == "A" => true
15
+ # book = double("book", :title => "The RSpec Book")
16
+ # book.title => "The RSpec Book"
19
17
  #
20
- # stub_person = stub("thing", :name => "Joe", :email => "joe@domain.com")
21
- # stub_person.name => "Joe"
22
- # stub_person.email => "joe@domain.com"
18
+ # card = double("card", :suit => "Spades", :rank => "A"
19
+ # card.suit => "Spades"
20
+ # card.rank => "A"
23
21
  def double(*args)
24
22
  declare_double('Double', *args)
25
23
  end
@@ -44,10 +42,10 @@ module Rspec
44
42
 
45
43
  private
46
44
 
47
- def declare_double(declared_as, *args) # :nodoc:
45
+ def declare_double(declared_as, *args)
48
46
  args << {} unless Hash === args.last
49
47
  args.last[:__declared_as] = declared_as
50
- Rspec::Mocks::Mock.new(*args)
48
+ RSpec::Mocks::Mock.new(*args)
51
49
  end
52
50
 
53
51
  end
@@ -1,4 +1,4 @@
1
- module Rspec # :nodoc:
1
+ module RSpec # :nodoc:
2
2
  module Mocks # :nodoc:
3
3
  module Version # :nodoc:
4
4
  STRING = File.readlines(File.expand_path('../../../../VERSION', __FILE__)).first
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rspec-mocks}
8
- s.version = "2.0.0.beta.8"
8
+ s.version = "2.0.0.beta.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["David Chelimsky", "Chad Humphries"]
12
- s.date = %q{2010-04-27}
13
- s.description = %q{Rspec's 'test double' framework, with support for stubbing and mocking}
12
+ s.date = %q{2010-05-27}
13
+ s.description = %q{RSpec's 'test double' framework, with support for stubbing and mocking}
14
14
  s.email = %q{dchelimsky@gmail.com;chad.humphries@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "README.markdown"
@@ -98,7 +98,7 @@ Gem::Specification.new do |s|
98
98
  s.homepage = %q{http://github.com/rspec/mocks}
99
99
  s.post_install_message = %q{**************************************************
100
100
 
101
- Thank you for installing rspec-mocks-2.0.0.beta.8
101
+ Thank you for installing rspec-mocks-2.0.0.beta.9
102
102
 
103
103
  This is beta software. If you are looking
104
104
  for a supported production release, please
@@ -110,7 +110,7 @@ Gem::Specification.new do |s|
110
110
  s.require_paths = ["lib"]
111
111
  s.rubyforge_project = %q{rspec}
112
112
  s.rubygems_version = %q{1.3.6}
113
- s.summary = %q{rspec-mocks-2.0.0.beta.8}
113
+ s.summary = %q{rspec-mocks-2.0.0.beta.9}
114
114
  s.test_files = [
115
115
  "spec/rspec/mocks/and_yield_spec.rb",
116
116
  "spec/rspec/mocks/any_number_of_times_spec.rb",
@@ -162,15 +162,15 @@ Gem::Specification.new do |s|
162
162
  s.specification_version = 3
163
163
 
164
164
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
165
- s.add_development_dependency(%q<rspec-core>, ["= 2.0.0.beta.8"])
166
- s.add_development_dependency(%q<rspec-expectations>, ["= 2.0.0.beta.8"])
165
+ s.add_development_dependency(%q<rspec-core>, ["= 2.0.0.beta.9"])
166
+ s.add_development_dependency(%q<rspec-expectations>, ["= 2.0.0.beta.9"])
167
167
  else
168
- s.add_dependency(%q<rspec-core>, ["= 2.0.0.beta.8"])
169
- s.add_dependency(%q<rspec-expectations>, ["= 2.0.0.beta.8"])
168
+ s.add_dependency(%q<rspec-core>, ["= 2.0.0.beta.9"])
169
+ s.add_dependency(%q<rspec-expectations>, ["= 2.0.0.beta.9"])
170
170
  end
171
171
  else
172
- s.add_dependency(%q<rspec-core>, ["= 2.0.0.beta.8"])
173
- s.add_dependency(%q<rspec-expectations>, ["= 2.0.0.beta.8"])
172
+ s.add_dependency(%q<rspec-core>, ["= 2.0.0.beta.9"])
173
+ s.add_dependency(%q<rspec-expectations>, ["= 2.0.0.beta.9"])
174
174
  end
175
175
  end
176
176
 
@@ -3,7 +3,7 @@ def obj
3
3
  @obj ||= mock
4
4
  end
5
5
 
6
- describe Rspec::Mocks::Mock do
6
+ describe RSpec::Mocks::Mock do
7
7
  describe "#and_yield" do
8
8
  context "with eval context as block argument" do
9
9
 
@@ -63,7 +63,7 @@ describe Rspec::Mocks::Mock do
63
63
  # foo is not called here
64
64
  end
65
65
 
66
- lambda {configured_eval_context.rspec_verify}.should raise_error(Rspec::Mocks::MockExpectationError)
66
+ lambda {configured_eval_context.rspec_verify}.should raise_error(RSpec::Mocks::MockExpectationError)
67
67
  end
68
68
 
69
69
  end
@@ -102,8 +102,8 @@ describe Rspec::Mocks::Mock do
102
102
  # foo is not called here
103
103
  end
104
104
 
105
- lambda {configured_eval_context.rspec_verify}.should raise_error(Rspec::Mocks::MockExpectationError)
106
- lambda {yielded_arg.rspec_verify}.should raise_error(Rspec::Mocks::MockExpectationError)
105
+ lambda {configured_eval_context.rspec_verify}.should raise_error(RSpec::Mocks::MockExpectationError)
106
+ lambda {yielded_arg.rspec_verify}.should raise_error(RSpec::Mocks::MockExpectationError)
107
107
  end
108
108
 
109
109
  end
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- module Rspec
3
+ module RSpec
4
4
  module Mocks
5
5
 
6
6
  describe "AnyNumberOfTimes" do
7
7
  before(:each) do
8
- @mock = Rspec::Mocks::Mock.new("test mock")
8
+ @mock = RSpec::Mocks::Mock.new("test mock")
9
9
  end
10
10
 
11
11
  it "should pass if any number of times method is called many times" do
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- module Rspec
3
+ module RSpec
4
4
  module Mocks
5
5
  describe ArgumentExpectation do
6
6
  it "should consider an object that responds to #matches? and #description to be a matcher" do
7
- argument_expecatation = Rspec::Mocks::ArgumentExpectation.new([])
7
+ argument_expecatation = RSpec::Mocks::ArgumentExpectation.new([])
8
8
  obj = double("matcher")
9
9
  obj.should_receive(:respond_to?).with(:matches?).and_return(true)
10
10
  obj.should_receive(:respond_to?).with(:description).and_return(true)
@@ -12,7 +12,7 @@ module Rspec
12
12
  end
13
13
 
14
14
  it "should NOT consider an object that only responds to #matches? to be a matcher" do
15
- argument_expecatation = Rspec::Mocks::ArgumentExpectation.new([])
15
+ argument_expecatation = RSpec::Mocks::ArgumentExpectation.new([])
16
16
  obj = double("matcher")
17
17
  obj.should_receive(:respond_to?).with(:matches?).and_return(true)
18
18
  obj.should_receive(:respond_to?).with(:description).and_return(false)
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
- module Rspec
3
+ module RSpec
4
4
  module Mocks
5
5
  describe "at_least" do
6
6
  before(:each) do
7
- @mock = Rspec::Mocks::Mock.new("test mock")
7
+ @mock = RSpec::Mocks::Mock.new("test mock")
8
8
  end
9
9
 
10
10
  it "should fail if method is never called" do
11
11
  @mock.should_receive(:random_call).at_least(4).times
12
12
  lambda do
13
13
  @mock.rspec_verify
14
- end.should raise_error(Rspec::Mocks::MockExpectationError)
14
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
15
15
  end
16
16
 
17
17
  it "should fail when called less than n times" do
@@ -21,14 +21,14 @@ module Rspec
21
21
  @mock.random_call
22
22
  lambda do
23
23
  @mock.rspec_verify
24
- end.should raise_error(Rspec::Mocks::MockExpectationError)
24
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
25
25
  end
26
26
 
27
27
  it "should fail when at least once method is never called" do
28
28
  @mock.should_receive(:random_call).at_least(:once)
29
29
  lambda do
30
30
  @mock.rspec_verify
31
- end.should raise_error(Rspec::Mocks::MockExpectationError)
31
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
32
32
  end
33
33
 
34
34
  it "should fail when at least twice method is called once" do
@@ -36,14 +36,14 @@ module Rspec
36
36
  @mock.random_call
37
37
  lambda do
38
38
  @mock.rspec_verify
39
- end.should raise_error(Rspec::Mocks::MockExpectationError)
39
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
40
40
  end
41
41
 
42
42
  it "should fail when at least twice method is never called" do
43
43
  @mock.should_receive(:random_call).at_least(:twice)
44
44
  lambda do
45
45
  @mock.rspec_verify
46
- end.should raise_error(Rspec::Mocks::MockExpectationError)
46
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
47
47
  end
48
48
 
49
49
  it "should pass when at least n times method is called exactly n times" do
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- module Rspec
3
+ module RSpec
4
4
  module Mocks
5
5
  describe "at_most" do
6
6
  before(:each) do
7
- @mock = Rspec::Mocks::Mock.new("test mock")
7
+ @mock = RSpec::Mocks::Mock.new("test mock")
8
8
  end
9
9
 
10
10
  it "should fail when at most n times method is called n plus 1 times" do
@@ -16,7 +16,7 @@ module Rspec
16
16
  @mock.random_call
17
17
  lambda do
18
18
  @mock.rspec_verify
19
- end.should raise_error(Rspec::Mocks::MockExpectationError)
19
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
20
20
  end
21
21
 
22
22
  it "should fail when at most once method is called twice" do
@@ -25,7 +25,7 @@ module Rspec
25
25
  @mock.random_call
26
26
  lambda do
27
27
  @mock.rspec_verify
28
- end.should raise_error(Rspec::Mocks::MockExpectationError)
28
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
29
29
  end
30
30
 
31
31
  it "should fail when at most twice method is called three times" do
@@ -35,7 +35,7 @@ module Rspec
35
35
  @mock.random_call
36
36
  lambda do
37
37
  @mock.rspec_verify
38
- end.should raise_error(Rspec::Mocks::MockExpectationError)
38
+ end.should raise_error(RSpec::Mocks::MockExpectationError)
39
39
  end
40
40
 
41
41
  it "should pass when at most n times method is called exactly n times" do