From 59e5b00346d463618f76cbc79950a691d4691e52 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Sat, 22 Mar 2014 16:53:42 -0400 Subject: [PATCH 1/3] Runs tests against 4.0.4 --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 6ec84db4ba..b60f8553ba 100644 --- a/Gemfile +++ b/Gemfile @@ -57,7 +57,7 @@ when /master/ when /stable$/ gem "rails", :git => "git://github.com/rails/rails.git", :branch => version when nil, false, "" - gem "rails", "4.0.2" + gem "rails", "4.0.4" else gem "rails", version end From 8bb1c2ef40ceb4307b5d63571337c86433c9fa21 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Sat, 22 Mar 2014 17:25:28 -0400 Subject: [PATCH 2/3] Supports `has_attribute?` on mock_model doubles Fixes #956 --- lib/rspec/rails/mocks.rb | 4 ++++ spec/rspec/rails/mocks/mock_model_spec.rb | 27 +++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/lib/rspec/rails/mocks.rb b/lib/rspec/rails/mocks.rb index ee26f34a2c..f8396b158a 100644 --- a/lib/rspec/rails/mocks.rb +++ b/lib/rspec/rails/mocks.rb @@ -149,6 +149,10 @@ def @object.__model_class_has_column?(method_name) #{model_class}.respond_to?(:column_names) && #{model_class}.column_names.include?(method_name.to_s) end + def @object.has_attribute?(attr_name) + __model_class_has_column?(attr_name) + end unless #{stubs.has_key?(:has_attribute?)} + def @object.respond_to?(method_name, include_private=false) __model_class_has_column?(method_name) ? true : super end unless #{stubs.has_key?(:respond_to?)} diff --git a/spec/rspec/rails/mocks/mock_model_spec.rb b/spec/rspec/rails/mocks/mock_model_spec.rb index c24a2629d0..4970538d9c 100644 --- a/spec/rspec/rails/mocks/mock_model_spec.rb +++ b/spec/rspec/rails/mocks/mock_model_spec.rb @@ -194,6 +194,33 @@ end end + describe "#has_attribute?" do + context "with an ActiveRecord model" do + before(:each) do + MockableModel.stub(:column_names).and_return(["column_a", "column_b"]) + @model = mock_model(MockableModel) + end + + it "has a given attribute if the underlying model has column of the same name" do + expect(@model.has_attribute?("column_a")).to be_true + expect(@model.has_attribute?("column_b")).to be_true + expect(@model.has_attribute?("column_c")).to be_false + end + + it "accepts symbols" do + expect(@model.has_attribute?(:column_a)).to be_true + expect(@model.has_attribute?(:column_b)).to be_true + expect(@model.has_attribute?(:column_c)).to be_false + end + + it "allows has_attribute? to be explicitly stubbed" do + @model = mock_model(MockableModel, :has_attribute? => false) + expect(@model.has_attribute?(:column_a)).to be_false + expect(@model.has_attribute?(:column_b)).to be_false + end + end + end + describe "#respond_to?" do context "with an ActiveRecord model" do before(:each) do From b8daf150b4f0f0e397aa3c91dcd8fbb9ab5ec762 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Sat, 22 Mar 2014 17:28:24 -0400 Subject: [PATCH 3/3] Bumps Rails versions to the latest --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 275a186476..b18286c660 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,9 +9,9 @@ rvm: - 1.8.7 env: - RAILS_VERSION=master - - RAILS_VERSION=4.0.2 + - RAILS_VERSION=4.0.4 - RAILS_VERSION=4-0-stable - - RAILS_VERSION=3.2.16 + - RAILS_VERSION=3.2.17 - RAILS_VERSION=3-2-stable - RAILS_VERSION=3.1.12 - RAILS_VERSION=3.0.20 @@ -28,9 +28,9 @@ matrix: - rvm: 1.9.2 env: RAILS_VERSION=master - rvm: 1.8.7 - env: RAILS_VERSION=4.0.2 + env: RAILS_VERSION=4.0.4 - rvm: 1.9.2 - env: RAILS_VERSION=4.0.2 + env: RAILS_VERSION=4.0.4 - rvm: 1.8.7 env: RAILS_VERSION=4-0-stable - rvm: 1.9.2