From 7fa15c41572b91d5deba2f4b28ae93bff4cd610e Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Wed, 18 Jan 2012 21:16:49 -0600 Subject: [PATCH] mock_model(XXX).as_null_object.unknown_method returns self - Fixes #488. --- Changelog.md | 7 +++++++ lib/rspec/rails/mocks.rb | 2 +- spec/rspec/rails/mocks/mock_model_spec.rb | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index e388afba76..20a9b526a7 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,10 @@ +### dev + +[full changelog](http://github.com/rspec/rspec-rails/compare/v2.8.1...master) + +Bug fixes +* mock_model(XXX).as_null_object.unknown_method returns self again + ### 2.8.1 / 2012-01-04 [full changelog](http://github.com/rspec/rspec-rails/compare/v2.8.0...v2.8.1) diff --git a/lib/rspec/rails/mocks.rb b/lib/rspec/rails/mocks.rb index 6958c775a0..86cda62eb5 100644 --- a/lib/rspec/rails/mocks.rb +++ b/lib/rspec/rails/mocks.rb @@ -132,7 +132,7 @@ def @object.respond_to?(method_name, include_private=false) end unless #{stubs.has_key?(:respond_to?)} def @object.method_missing(m, *a, &b) - respond_to?(m) ? nil : super + respond_to?(m) ? null_object? ? self : nil : super end def @object.class diff --git a/spec/rspec/rails/mocks/mock_model_spec.rb b/spec/rspec/rails/mocks/mock_model_spec.rb index ba0c0100d5..b587b866e8 100644 --- a/spec/rspec/rails/mocks/mock_model_spec.rb +++ b/spec/rspec/rails/mocks/mock_model_spec.rb @@ -234,6 +234,11 @@ it "says it will not respond_to?(xxx_before_type_cast)" do @model.as_null_object.respond_to?("title_before_type_cast").should be(false) end + it "returns self for any unprepared message" do + @model.as_null_object.tap do |x| + x.non_existant_message.should be(@model) + end + end end end