Skip to content

Commit c56d49f

Browse files
committed
Test keyword args in requests for Rails 5; fallback for earlier versions
kwargs: params,session,flash,method,body Fix Rails 5 DEPRECATION WARNING
1 parent 3b87cb3 commit c56d49f

File tree

4 files changed

+44
-7
lines changed

4 files changed

+44
-7
lines changed

test/action_controller/json_api/pagination_test.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def test_render_pagination_links_with_will_paginate
5353
'next' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
5454
'last' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1" }
5555

56-
get :render_pagination_using_will_paginate, page: { number: 2, size: 1 }
56+
get :render_pagination_using_will_paginate, params: { page: { number: 2, size: 1 } }
5757
response = JSON.parse(@response.body)
5858
assert_equal expected_links, response['links']
5959
end
@@ -62,7 +62,7 @@ def test_render_only_last_and_next_pagination_links
6262
expected_links = { 'self' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
6363
'next' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2",
6464
'last' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2" }
65-
get :render_pagination_using_will_paginate, page: { number: 1, size: 2 }
65+
get :render_pagination_using_will_paginate, params: { page: { number: 1, size: 2 } }
6666
response = JSON.parse(@response.body)
6767
assert_equal expected_links, response['links']
6868
end
@@ -73,7 +73,7 @@ def test_render_pagination_links_with_kaminari
7373
'prev' => "#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
7474
'next' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
7575
'last' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1" }
76-
get :render_pagination_using_kaminari, page: { number: 2, size: 1 }
76+
get :render_pagination_using_kaminari, params: { page: { number: 2, size: 1 } }
7777
response = JSON.parse(@response.body)
7878
assert_equal expected_links, response['links']
7979
end
@@ -82,7 +82,7 @@ def test_render_only_prev_and_first_pagination_links
8282
expected_links = { 'self' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
8383
'first' => "#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
8484
'prev' => "#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1" }
85-
get :render_pagination_using_kaminari, page: { number: 3, size: 1 }
85+
get :render_pagination_using_kaminari, params: { page: { number: 3, size: 1 } }
8686
response = JSON.parse(@response.body)
8787
assert_equal expected_links, response['links']
8888
end
@@ -91,7 +91,7 @@ def test_render_only_last_and_next_pagination_links_with_additional_params
9191
expected_links = { 'self' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2&teste=additional",
9292
'next' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2&teste=additional",
9393
'last' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2&teste=additional" }
94-
get :render_pagination_using_will_paginate, page: { number: 1, size: 2 }, teste: 'additional'
94+
get :render_pagination_using_will_paginate, params: { page: { number: 1, size: 2 }, teste: 'additional' }
9595
response = JSON.parse(@response.body)
9696
assert_equal expected_links, response['links']
9797
end
@@ -100,13 +100,13 @@ def test_render_only_prev_and_first_pagination_links_with_additional_params
100100
expected_links = { 'self' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1&teste=additional",
101101
'first' => "#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1&teste=additional",
102102
'prev' => "#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1&teste=additional" }
103-
get :render_pagination_using_kaminari, page: { number: 3, size: 1 }, teste: 'additional'
103+
get :render_pagination_using_kaminari, params: { page: { number: 3, size: 1 }, teste: 'additional' }
104104
response = JSON.parse(@response.body)
105105
assert_equal expected_links, response['links']
106106
end
107107

108108
def test_array_without_pagination_links
109-
get :render_array_without_pagination_links, page: { number: 2, size: 1 }
109+
get :render_array_without_pagination_links, params: { page: { number: 2, size: 1 } }
110110
response = JSON.parse(@response.body)
111111
refute response.key? 'links'
112112
end

test/support/rails5_shims.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
module Rails5Shims
2+
module ControllerTests
3+
# https://github.com/rails/rails/blob/b217354/actionpack/lib/action_controller/test_case.rb
4+
REQUEST_KWARGS = [:params, :session, :flash, :method, :body, :xhr]
5+
6+
# Fold kwargs from test request into args
7+
# Band-aid for DEPRECATION WARNING
8+
def get(path, *args)
9+
hash = args && args[0]
10+
if hash.respond_to?(:key)
11+
Rails5Shims::ControllerTests::REQUEST_KWARGS.each do |kwarg|
12+
next unless hash.key?(kwarg)
13+
hash.merge! hash.delete(kwarg)
14+
end
15+
end
16+
super
17+
end
18+
19+
# Uncomment for debugging where the kwargs warnings come from
20+
# def non_kwarg_request_warning
21+
# super.tap do
22+
# STDOUT.puts caller[2..3]
23+
# end
24+
# end
25+
end
26+
end
27+
if Rails::VERSION::MAJOR < 5
28+
ActionController::TestCase.send :include, Rails5Shims::ControllerTests
29+
end

test/support/test_case.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,10 @@ def assigns(key = nil)
1010
@controller.view_assigns.each { |k, v| assigns.regular_writer(k, v) }
1111
key.nil? ? assigns : assigns[key]
1212
end
13+
14+
# Rails5: Uncomment for debugging where the warnings come from
15+
# def non_kwarg_request_warning
16+
# super
17+
# STDOUT.puts caller[2..3]
18+
# end
1319
end

test/test_helper.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ def Minitest.after_run(&block)
6464

6565
require 'support/serialization_testing'
6666

67+
require 'support/rails5_shims'
68+
6769
require 'fixtures/active_record'
6870

6971
require 'fixtures/poro'

0 commit comments

Comments
 (0)