184 lines
6.1 KiB
Diff
184 lines
6.1 KiB
Diff
|
|
From ce9624b3c5a08b9134150e228440c771d95782b7 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Murtaza Gulamali <mygulamali@gmail.com>
|
||
|
|
Date: Mon, 9 Jan 2017 12:31:46 +0000
|
||
|
|
Subject: [PATCH] Scope request parameters according to Rails version
|
||
|
|
|
||
|
|
---
|
||
|
|
.../action_controller/permit_matcher.rb | 7 +++-
|
||
|
|
lib/shoulda/matchers/rails_shim.rb | 17 +++------
|
||
|
|
.../unit/helpers/action_pack_versions.rb | 18 ++++++++++
|
||
|
|
.../action_controller/permit_matcher_spec.rb | 36 ++++++++++++++++---
|
||
|
|
spec/unit_spec_helper.rb | 1 +
|
||
|
|
5 files changed, 62 insertions(+), 17 deletions(-)
|
||
|
|
create mode 100644 spec/support/unit/helpers/action_pack_versions.rb
|
||
|
|
|
||
|
|
diff --git a/lib/shoulda/matchers/action_controller/permit_matcher.rb b/lib/shoulda/matchers/action_controller/permit_matcher.rb
|
||
|
|
index 8e8b5c48..ef184aaf 100644
|
||
|
|
--- a/lib/shoulda/matchers/action_controller/permit_matcher.rb
|
||
|
|
+++ b/lib/shoulda/matchers/action_controller/permit_matcher.rb
|
||
|
|
@@ -250,7 +250,12 @@ def matches?(controller)
|
||
|
|
parameters_double_registry.register
|
||
|
|
|
||
|
|
Doublespeak.with_doubles_activated do
|
||
|
|
- context.__send__(verb, action, request_params)
|
||
|
|
+ Shoulda::Matchers::RailsShim.make_controller_request(
|
||
|
|
+ context,
|
||
|
|
+ verb,
|
||
|
|
+ action,
|
||
|
|
+ request_params,
|
||
|
|
+ )
|
||
|
|
end
|
||
|
|
|
||
|
|
unpermitted_parameter_names.empty?
|
||
|
|
diff --git a/lib/shoulda/matchers/rails_shim.rb b/lib/shoulda/matchers/rails_shim.rb
|
||
|
|
index 7aeab629..1fea4eb1 100644
|
||
|
|
--- a/lib/shoulda/matchers/rails_shim.rb
|
||
|
|
+++ b/lib/shoulda/matchers/rails_shim.rb
|
||
|
|
@@ -7,6 +7,10 @@ def action_pack_gte_4_1?
|
||
|
|
Gem::Requirement.new('>= 4.1').satisfied_by?(action_pack_version)
|
||
|
|
end
|
||
|
|
|
||
|
|
+ def action_pack_gte_5?
|
||
|
|
+ Gem::Requirement.new('>= 5').satisfied_by?(action_pack_version)
|
||
|
|
+ end
|
||
|
|
+
|
||
|
|
def action_pack_version
|
||
|
|
Gem::Version.new(::ActionPack::VERSION::STRING)
|
||
|
|
end
|
||
|
|
@@ -43,7 +47,7 @@ def generate_validation_message(
|
||
|
|
|
||
|
|
def make_controller_request(context, verb, action, request_params)
|
||
|
|
params =
|
||
|
|
- if active_record_major_version >= 5
|
||
|
|
+ if action_pack_gte_5?
|
||
|
|
{ params: request_params }
|
||
|
|
else
|
||
|
|
request_params
|
||
|
|
@@ -123,17 +127,6 @@ def simply_generate_validation_message(
|
||
|
|
I18n.translate(primary_translation_key, translate_options)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
-
|
||
|
|
- def self.make_controller_request(context, verb, action, request_params)
|
||
|
|
- params =
|
||
|
|
- if active_record_major_version >= 5
|
||
|
|
- { params: request_params }
|
||
|
|
- else
|
||
|
|
- request_params
|
||
|
|
- end
|
||
|
|
-
|
||
|
|
- context.__send__(verb, action, params)
|
||
|
|
- end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
diff --git a/spec/support/unit/helpers/action_pack_versions.rb b/spec/support/unit/helpers/action_pack_versions.rb
|
||
|
|
new file mode 100644
|
||
|
|
index 00000000..86606f7b
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/spec/support/unit/helpers/action_pack_versions.rb
|
||
|
|
@@ -0,0 +1,18 @@
|
||
|
|
+module UnitTests
|
||
|
|
+ module ActionPackVersions
|
||
|
|
+ extend self
|
||
|
|
+
|
||
|
|
+ def self.configure_example_group(example_group)
|
||
|
|
+ example_group.include(self)
|
||
|
|
+ example_group.extend(self)
|
||
|
|
+ end
|
||
|
|
+
|
||
|
|
+ def action_pack_gte_5?
|
||
|
|
+ action_pack_version =~ '>= 5'
|
||
|
|
+ end
|
||
|
|
+
|
||
|
|
+ def action_pack_version
|
||
|
|
+ Tests::Version.new(ActionPack::VERSION::STRING)
|
||
|
|
+ end
|
||
|
|
+ end
|
||
|
|
+end
|
||
|
|
diff --git a/spec/unit/shoulda/matchers/action_controller/permit_matcher_spec.rb b/spec/unit/shoulda/matchers/action_controller/permit_matcher_spec.rb
|
||
|
|
index 1a1a5a55..b8857df9 100644
|
||
|
|
--- a/spec/unit/shoulda/matchers/action_controller/permit_matcher_spec.rb
|
||
|
|
+++ b/spec/unit/shoulda/matchers/action_controller/permit_matcher_spec.rb
|
||
|
|
@@ -498,7 +498,12 @@ def params_with_conditional_require(params, *filters)
|
||
|
|
|
||
|
|
matcher.matches?(controller)
|
||
|
|
|
||
|
|
- expect(context).to have_received(:post).with(:create, {})
|
||
|
|
+ expect_to_have_made_controller_request(
|
||
|
|
+ verb: :post,
|
||
|
|
+ action: :create,
|
||
|
|
+ params: {},
|
||
|
|
+ context: context,
|
||
|
|
+ )
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
@@ -511,7 +516,12 @@ def params_with_conditional_require(params, *filters)
|
||
|
|
|
||
|
|
matcher.matches?(controller)
|
||
|
|
|
||
|
|
- expect(context).to have_received(:patch).with(:update, {})
|
||
|
|
+ expect_to_have_made_controller_request(
|
||
|
|
+ verb: :patch,
|
||
|
|
+ action: :update,
|
||
|
|
+ params: {},
|
||
|
|
+ context: context,
|
||
|
|
+ )
|
||
|
|
end
|
||
|
|
else
|
||
|
|
it 'PUTs to the controller' do
|
||
|
|
@@ -521,7 +531,12 @@ def params_with_conditional_require(params, *filters)
|
||
|
|
|
||
|
|
matcher.matches?(controller)
|
||
|
|
|
||
|
|
- expect(context).to have_received(:put).with(:update, {})
|
||
|
|
+ expect_to_have_made_controller_request(
|
||
|
|
+ verb: :put,
|
||
|
|
+ action: :update,
|
||
|
|
+ params: {},
|
||
|
|
+ context: context,
|
||
|
|
+ )
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
@@ -536,7 +551,12 @@ def params_with_conditional_require(params, *filters)
|
||
|
|
|
||
|
|
matcher.matches?(controller)
|
||
|
|
|
||
|
|
- expect(context).to have_received(:delete).with(:hide, {})
|
||
|
|
+ expect_to_have_made_controller_request(
|
||
|
|
+ verb: :delete,
|
||
|
|
+ action: :hide,
|
||
|
|
+ params: {},
|
||
|
|
+ context: context,
|
||
|
|
+ )
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
@@ -598,4 +618,12 @@ def define_controller_raising_exception
|
||
|
|
def build_context
|
||
|
|
double('context', post: nil, put: nil, patch: nil, delete: nil)
|
||
|
|
end
|
||
|
|
+
|
||
|
|
+ def expect_to_have_made_controller_request(context:, verb:, action:, params:)
|
||
|
|
+ if action_pack_gte_5?
|
||
|
|
+ expect(context).to have_received(verb).with(action, params: params)
|
||
|
|
+ else
|
||
|
|
+ expect(context).to have_received(verb).with(action, params)
|
||
|
|
+ end
|
||
|
|
+ end
|
||
|
|
end
|
||
|
|
diff --git a/spec/unit_spec_helper.rb b/spec/unit_spec_helper.rb
|
||
|
|
index ba99e6b0..dfbe21d6 100644
|
||
|
|
--- a/spec/unit_spec_helper.rb
|
||
|
|
+++ b/spec/unit_spec_helper.rb
|
||
|
|
@@ -10,6 +10,7 @@
|
||
|
|
end
|
||
|
|
|
||
|
|
RSpec.configure do |config|
|
||
|
|
+ UnitTests::ActionPackVersions.configure_example_group(config)
|
||
|
|
UnitTests::ActiveModelHelpers.configure_example_group(config)
|
||
|
|
UnitTests::ActiveModelVersions.configure_example_group(config)
|
||
|
|
UnitTests::ActiveResourceBuilder.configure_example_group(config)
|