Skip to content

Commit

Permalink
Scope request parameters according to Rails version
Browse files Browse the repository at this point in the history
  • Loading branch information
mygulamali authored and mcmire committed Sep 17, 2017
1 parent eec1db6 commit ca761db
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 17 deletions.
7 changes: 6 additions & 1 deletion lib/shoulda/matchers/action_controller/permit_matcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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?
Expand Down
17 changes: 5 additions & 12 deletions lib/shoulda/matchers/rails_shim.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
18 changes: 18 additions & 0 deletions spec/support/unit/helpers/action_pack_versions.rb
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
1 change: 1 addition & 0 deletions spec/unit_spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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::ClassBuilder.configure_example_group(config)
Expand Down

0 comments on commit ca761db

Please sign in to comment.