Skip to content

Commit 15b76a9

Browse files
committed
deprecate rails/convert_rails_test_xhr_4_2_to_5_0, use rails/convert_rails_test_request_methods_4_2_to_5_0 instead
1 parent db8a130 commit 15b76a9

4 files changed

+34
-62
lines changed

lib/rails/convert_rails_test_request_methods_4_2_to_5_0.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,24 @@
6464
end
6565
end
6666

67+
within_files '{test,spec}/{functional,controllers}/**/*.rb' do
68+
with_node type: 'send', message: 'xhr' do
69+
request_method = node.arguments[0].to_value
70+
action = node.arguments[1].to_value
71+
if node.arguments.size == 2
72+
replace_with "#{request_method} :#{action}, xhr: true"
73+
next
74+
end
75+
format_value = node.arguments[2].hash_value(:format)
76+
options = []
77+
options << make_up_hash_pair('params', node.arguments[2])
78+
options << make_up_hash_pair('flash', node.arguments[3]) if node.arguments.size > 3
79+
options << make_up_hash_pair('session', node.arguments[4]) if node.arguments.size > 4
80+
options << "as: #{format_value.to_source}" if format_value
81+
replace_with "#{request_method} :#{action}, #{options.compact.join(', ')}, xhr: true"
82+
end
83+
end
84+
6785
# get '/posts/1', user_id: user.id, { 'HTTP_AUTHORIZATION' => 'fake' }
6886
# =>
6987
# get '/posts/1', params: { user_id: user.id }, headers: { 'HTTP_AUTHORIZATION' => 'fake' }
Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,6 @@
11
# frozen_string_literal: true
22

33
Synvert::Rewriter.new 'rails', 'convert_rails_test_xhr_4_2_to_5_0' do
4-
description <<~EOS
5-
It converts xhr method in rails test from 4.2 to 5.0.
6-
7-
```ruby
8-
xhr :get, :show
9-
```
10-
11-
=>
12-
13-
```ruby
14-
get :show, xhr: true
15-
```
16-
EOS
17-
18-
if_gem 'rails', { gte: '5.0' }
19-
20-
within_files '{test,spec}/{functional,controllers}/**/*.rb' do
21-
with_node type: 'send', receiver: nil, message: 'xhr', arguments: { size: 2 } do
22-
method, action = node.arguments.map(&:to_value)
23-
replace_with("#{method} :#{action}, xhr: true")
24-
end
25-
end
4+
description "It's deprecated, please use `rails/convert_rails_test_request_methods_4_2_to_5_0` instead"
5+
warn "It's deprecated, please use `rails/convert_rails_test_request_methods_4_2_to_5_0` instead"
266
end

spec/rails/convert_rails_test_request_methods_4_2_to_5_0_spec.rb

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77

88
context 'functional test' do
99
let(:fake_file_path) { 'test/functional/posts_controller_test.rb' }
10-
let(:test_content) {
11-
"
10+
let(:test_content) { <<~EOS }
1211
class PostsControllerTest < ActionController::TestCase
1312
def test_show
1413
get :show, { id: user.id, format: :json }, { notice: 'Welcome' }, { admin: user.admin? }
@@ -25,11 +24,14 @@ def test_create
2524
def test_destroy
2625
delete :destroy, { id: user.id }, nil, { admin: user.admin? }
2726
end
27+
28+
def test_xhr
29+
xhr :get, :test
30+
xhr :post, :test, foo: 'bar'
31+
end
2832
end
29-
"
30-
}
31-
let(:test_rewritten_content) {
32-
"
33+
EOS
34+
let(:test_rewritten_content) { <<~EOS }
3335
class PostsControllerTest < ActionController::TestCase
3436
def test_show
3537
get :show, params: { id: user.id }, flash: { notice: 'Welcome' }, session: { admin: user.admin? }, as: :json
@@ -46,9 +48,13 @@ def test_create
4648
def test_destroy
4749
delete :destroy, params: { id: user.id }, session: { admin: user.admin? }
4850
end
51+
52+
def test_xhr
53+
get :test, xhr: true
54+
post :test, params: { foo: 'bar' }, xhr: true
55+
end
4956
end
50-
"
51-
}
57+
EOS
5258

5359
include_examples 'convertable'
5460
end

spec/rails/convert_rails_test_xhr_4_2_to_5_0_spec.rb

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)