提交 98a039dc 编写于 作者: A Abdelkader Boudih 提交者: eileencodes

Update test generators to use ActionDispatch::IntegrationTest

In Rails 5.1 `ActionController::TestCase` will be moved out of Rails
into it's own gem. Please use `ActionDispatch::IntegrationTest` going
forward.

This changes the generators to use `ActionDispatch::IntegrationTest` and
the required URL setup (rather than symbols) for each of the controller
actions.

Updated fix to #22076.
上级 f8edd204
...@@ -129,6 +129,18 @@ def index_helper ...@@ -129,6 +129,18 @@ def index_helper
uncountable? ? "#{plural_table_name}_index" : plural_table_name uncountable? ? "#{plural_table_name}_index" : plural_table_name
end end
def show_helper
"#{singular_table_name}_url(@#{singular_table_name})"
end
def edit_helper
"edit_#{show_helper}"
end
def new_helper
"new_#{singular_table_name}_url"
end
def singular_table_name def singular_table_name
@singular_table_name ||= (pluralize_table_names? ? table_name.singularize : table_name) @singular_table_name ||= (pluralize_table_names? ? table_name.singularize : table_name)
end end
......
require 'test_helper' require 'test_helper'
<% module_namespacing do -%> <% module_namespacing do -%>
class <%= class_name %>ControllerTest < ActionController::TestCase class <%= class_name %>ControllerTest < ActionDispatch::IntegrationTest
<% if mountable_engine? -%> <% if mountable_engine? -%>
setup do include Engine.routes.url_helpers
@routes = Engine.routes
end
<% end -%> <% end -%>
<% if actions.empty? -%> <% if actions.empty? -%>
...@@ -15,7 +13,7 @@ class <%= class_name %>ControllerTest < ActionController::TestCase ...@@ -15,7 +13,7 @@ class <%= class_name %>ControllerTest < ActionController::TestCase
<% else -%> <% else -%>
<% actions.each do |action| -%> <% actions.each do |action| -%>
test "should get <%= action %>" do test "should get <%= action %>" do
get :<%= action %> get <%= file_name %>_<%= action %>_url
assert_response :success assert_response :success
end end
......
require 'test_helper' require 'test_helper'
<% module_namespacing do -%> <% module_namespacing do -%>
class <%= controller_class_name %>ControllerTest < ActionController::TestCase class <%= controller_class_name %>ControllerTest < ActionDispatch::IntegrationTest
<% if mountable_engine? -%>
include Engine.routes.url_helpers
<% end -%>
setup do setup do
@<%= singular_table_name %> = <%= fixture_name %>(:one) @<%= singular_table_name %> = <%= fixture_name %>(:one)
<% if mountable_engine? -%>
@routes = Engine.routes
<% end -%>
end end
test "should get index" do test "should get index" do
get :index get <%= index_helper %>_url
assert_response :success assert_response :success
end end
test "should create <%= singular_table_name %>" do test "should create <%= singular_table_name %>" do
assert_difference('<%= class_name %>.count') do assert_difference('<%= class_name %>.count') do
post :create, params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> } post <%= index_helper %>_url, params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> }
end end
assert_response 201 assert_response 201
end end
test "should show <%= singular_table_name %>" do test "should show <%= singular_table_name %>" do
get :show, params: { id: <%= "@#{singular_table_name}" %> } get <%= show_helper %>
assert_response :success assert_response :success
end end
test "should update <%= singular_table_name %>" do test "should update <%= singular_table_name %>" do
patch :update, params: { id: <%= "@#{singular_table_name}" %>, <%= "#{singular_table_name}: { #{attributes_hash} }" %> } patch <%= show_helper %>, params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> }
assert_response 200 assert_response 200
end end
test "should destroy <%= singular_table_name %>" do test "should destroy <%= singular_table_name %>" do
assert_difference('<%= class_name %>.count', -1) do assert_difference('<%= class_name %>.count', -1) do
delete :destroy, params: { id: <%= "@#{singular_table_name}" %> } delete <%= show_helper %>
end end
assert_response 204 assert_response 204
......
require 'test_helper' require 'test_helper'
<% module_namespacing do -%> <% module_namespacing do -%>
class <%= controller_class_name %>ControllerTest < ActionController::TestCase class <%= controller_class_name %>ControllerTest < ActionDispatch::IntegrationTest
<%- if mountable_engine? -%>
include Engine.routes.url_helpers
<% end -%>
setup do setup do
@<%= singular_table_name %> = <%= fixture_name %>(:one) @<%= singular_table_name %> = <%= fixture_name %>(:one)
<% if mountable_engine? -%>
@routes = Engine.routes
<% end -%>
end end
test "should get index" do test "should get index" do
get :index get <%= index_helper %>_url
assert_response :success assert_response :success
end end
test "should get new" do test "should get new" do
get :new get <%= new_helper %>
assert_response :success assert_response :success
end end
test "should create <%= singular_table_name %>" do test "should create <%= singular_table_name %>" do
assert_difference('<%= class_name %>.count') do assert_difference('<%= class_name %>.count') do
post :create, params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> } post <%= index_helper %>_url, params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> }
end end
assert_redirected_to <%= singular_table_name %>_path(<%= class_name %>.last) assert_redirected_to <%= singular_table_name %>_path(<%= class_name %>.last)
end end
test "should show <%= singular_table_name %>" do test "should show <%= singular_table_name %>" do
get :show, params: { id: <%= "@#{singular_table_name}" %> } get <%= show_helper %>
assert_response :success assert_response :success
end end
test "should get edit" do test "should get edit" do
get :edit, params: { id: <%= "@#{singular_table_name}" %> } get <%= edit_helper %>
assert_response :success assert_response :success
end end
test "should update <%= singular_table_name %>" do test "should update <%= singular_table_name %>" do
patch :update, params: { id: <%= "@#{singular_table_name}" %>, <%= "#{singular_table_name}: { #{attributes_hash} }" %> } patch <%= show_helper %>, params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> }
assert_redirected_to <%= singular_table_name %>_path(<%= "@#{singular_table_name}" %>) assert_redirected_to <%= singular_table_name %>_path(<%= "@#{singular_table_name}" %>)
end end
test "should destroy <%= singular_table_name %>" do test "should destroy <%= singular_table_name %>" do
assert_difference('<%= class_name %>.count', -1) do assert_difference('<%= class_name %>.count', -1) do
delete :destroy, params: { id: <%= "@#{singular_table_name}" %> } delete <%= show_helper %>
end end
assert_redirected_to <%= index_helper %>_path assert_redirected_to <%= index_helper %>_path
......
...@@ -218,7 +218,7 @@ def test_scaffold_on_invoke ...@@ -218,7 +218,7 @@ def test_scaffold_on_invoke
/class ProductLinesController < ApplicationController/ /class ProductLinesController < ApplicationController/
assert_file "test/controllers/test_app/product_lines_controller_test.rb", assert_file "test/controllers/test_app/product_lines_controller_test.rb",
/module TestApp\n class ProductLinesControllerTest < ActionController::TestCase/ /module TestApp\n class ProductLinesControllerTest < ActionDispatch::IntegrationTest/
# Views # Views
%w(index edit new show _form).each do |view| %w(index edit new show _form).each do |view|
...@@ -285,7 +285,7 @@ def test_scaffold_with_namespace_on_invoke ...@@ -285,7 +285,7 @@ def test_scaffold_with_namespace_on_invoke
end end
assert_file "test/controllers/test_app/admin/roles_controller_test.rb", assert_file "test/controllers/test_app/admin/roles_controller_test.rb",
/module TestApp\n class Admin::RolesControllerTest < ActionController::TestCase/ /module TestApp\n class Admin::RolesControllerTest < ActionDispatch::IntegrationTest/
# Views # Views
%w(index edit new show _form).each do |view| %w(index edit new show _form).each do |view|
...@@ -352,7 +352,7 @@ def test_scaffold_with_nested_namespace_on_invoke ...@@ -352,7 +352,7 @@ def test_scaffold_with_nested_namespace_on_invoke
end end
assert_file "test/controllers/test_app/admin/user/special/roles_controller_test.rb", assert_file "test/controllers/test_app/admin/user/special/roles_controller_test.rb",
/module TestApp\n class Admin::User::Special::RolesControllerTest < ActionController::TestCase/ /module TestApp\n class Admin::User::Special::RolesControllerTest < ActionDispatch::IntegrationTest/
# Views # Views
%w(index edit new show _form).each do |view| %w(index edit new show _form).each do |view|
...@@ -418,6 +418,6 @@ def test_api_scaffold_with_namespace_on_invoke ...@@ -418,6 +418,6 @@ def test_api_scaffold_with_namespace_on_invoke
assert_match(%r(require_dependency "test_app/application_controller"), content) assert_match(%r(require_dependency "test_app/application_controller"), content)
end end
assert_file "test/controllers/test_app/admin/roles_controller_test.rb", assert_file "test/controllers/test_app/admin/roles_controller_test.rb",
/module TestApp\n class Admin::RolesControllerTest < ActionController::TestCase/ /module TestApp\n class Admin::RolesControllerTest < ActionDispatch::IntegrationTest/
end end
end end
...@@ -33,7 +33,7 @@ def test_inherited_invocations_with_attributes ...@@ -33,7 +33,7 @@ def test_inherited_invocations_with_attributes
def test_resource_controller_with_pluralized_class_name def test_resource_controller_with_pluralized_class_name
run_generator run_generator
assert_file "app/controllers/accounts_controller.rb", /class AccountsController < ApplicationController/ assert_file "app/controllers/accounts_controller.rb", /class AccountsController < ApplicationController/
assert_file "test/controllers/accounts_controller_test.rb", /class AccountsControllerTest < ActionController::TestCase/ assert_file "test/controllers/accounts_controller_test.rb", /class AccountsControllerTest < ActionDispatch::IntegrationTest/
assert_file "app/helpers/accounts_helper.rb", /module AccountsHelper/ assert_file "app/helpers/accounts_helper.rb", /module AccountsHelper/
end end
......
...@@ -104,10 +104,10 @@ def test_functional_tests ...@@ -104,10 +104,10 @@ def test_functional_tests
run_generator ["User", "name:string", "age:integer", "organization:references{polymorphic}"] run_generator ["User", "name:string", "age:integer", "organization:references{polymorphic}"]
assert_file "test/controllers/users_controller_test.rb" do |content| assert_file "test/controllers/users_controller_test.rb" do |content|
assert_match(/class UsersControllerTest < ActionController::TestCase/, content) assert_match(/class UsersControllerTest < ActionDispatch::IntegrationTest/, content)
assert_match(/test "should get index"/, content) assert_match(/test "should get index"/, content)
assert_match(/post :create, params: \{ user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content) assert_match(/post users_url, params: \{ user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content)
assert_match(/patch :update, params: \{ id: @user, user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content) assert_match(/patch user_url\(@user\), params: \{ user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content)
end end
end end
...@@ -115,10 +115,10 @@ def test_functional_tests_without_attributes ...@@ -115,10 +115,10 @@ def test_functional_tests_without_attributes
run_generator ["User"] run_generator ["User"]
assert_file "test/controllers/users_controller_test.rb" do |content| assert_file "test/controllers/users_controller_test.rb" do |content|
assert_match(/class UsersControllerTest < ActionController::TestCase/, content) assert_match(/class UsersControllerTest < ActionDispatch::IntegrationTest/, content)
assert_match(/test "should get index"/, content) assert_match(/test "should get index"/, content)
assert_match(/post :create, params: \{ user: \{ \} \}/, content) assert_match(/post users_url, params: \{ user: \{ \} \}/, content)
assert_match(/patch :update, params: \{ id: @user, user: \{ \} \}/, content) assert_match(/patch user_url\(@user\), params: \{ user: \{ \} \}/, content)
end end
end end
...@@ -236,10 +236,10 @@ def test_api_controller_tests ...@@ -236,10 +236,10 @@ def test_api_controller_tests
run_generator ["User", "name:string", "age:integer", "organization:references{polymorphic}", "--api"] run_generator ["User", "name:string", "age:integer", "organization:references{polymorphic}", "--api"]
assert_file "test/controllers/users_controller_test.rb" do |content| assert_file "test/controllers/users_controller_test.rb" do |content|
assert_match(/class UsersControllerTest < ActionController::TestCase/, content) assert_match(/class UsersControllerTest < ActionDispatch::IntegrationTest/, content)
assert_match(/test "should get index"/, content) assert_match(/test "should get index"/, content)
assert_match(/post :create, params: \{ user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content) assert_match(/post users_url, params: \{ user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content)
assert_match(/patch :update, params: \{ id: @user, user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content) assert_match(/patch user_url\(@user\), params: \{ user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content)
assert_no_match(/assert_redirected_to/, content) assert_no_match(/assert_redirected_to/, content)
end end
end end
......
...@@ -57,9 +57,9 @@ def test_scaffold_on_invoke ...@@ -57,9 +57,9 @@ def test_scaffold_on_invoke
end end
assert_file "test/controllers/product_lines_controller_test.rb" do |test| assert_file "test/controllers/product_lines_controller_test.rb" do |test|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, test) assert_match(/class ProductLinesControllerTest < ActionDispatch::IntegrationTest/, test)
assert_match(/post :create, params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test) assert_match(/post product_lines_url, params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
assert_match(/patch :update, params: \{ id: @product_line, product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test) assert_match(/patch product_line_url\(@product_line\), params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
end end
# Views # Views
...@@ -135,9 +135,9 @@ def test_api_scaffold_on_invoke ...@@ -135,9 +135,9 @@ def test_api_scaffold_on_invoke
end end
assert_file "test/controllers/product_lines_controller_test.rb" do |test| assert_file "test/controllers/product_lines_controller_test.rb" do |test|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, test) assert_match(/class ProductLinesControllerTest < ActionDispatch::IntegrationTest/, test)
assert_match(/post :create, params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test) assert_match(/post product_lines_url, params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
assert_match(/patch :update, params: \{ id: @product_line, product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test) assert_match(/patch product_line_url\(@product_line\), params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
assert_no_match(/assert_redirected_to/, test) assert_no_match(/assert_redirected_to/, test)
end end
...@@ -161,10 +161,10 @@ def test_functional_tests_without_attributes ...@@ -161,10 +161,10 @@ def test_functional_tests_without_attributes
run_generator ["product_line"] run_generator ["product_line"]
assert_file "test/controllers/product_lines_controller_test.rb" do |content| assert_file "test/controllers/product_lines_controller_test.rb" do |content|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, content) assert_match(/class ProductLinesControllerTest < ActionDispatch::IntegrationTest/, content)
assert_match(/test "should get index"/, content) assert_match(/test "should get index"/, content)
assert_match(/post :create, params: \{ product_line: \{ \} \}/, content) assert_match(/post product_lines_url, params: \{ product_line: \{ \} \}/, content)
assert_match(/patch :update, params: \{ id: @product_line, product_line: \{ \} \}/, content) assert_match(/patch product_line_url\(@product_line\), params: \{ product_line: \{ \} \}/, content)
end end
end end
...@@ -250,7 +250,7 @@ def test_scaffold_with_namespace_on_invoke ...@@ -250,7 +250,7 @@ def test_scaffold_with_namespace_on_invoke
end end
assert_file "test/controllers/admin/roles_controller_test.rb", assert_file "test/controllers/admin/roles_controller_test.rb",
/class Admin::RolesControllerTest < ActionController::TestCase/ /class Admin::RolesControllerTest < ActionDispatch::IntegrationTest/
# Views # Views
%w(index edit new show _form).each do |view| %w(index edit new show _form).each do |view|
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册