提交 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
uncountable? ? "#{plural_table_name}_index" : plural_table_name
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
@singular_table_name ||= (pluralize_table_names? ? table_name.singularize : table_name)
end
......
require 'test_helper'
<% module_namespacing do -%>
class <%= class_name %>ControllerTest < ActionController::TestCase
class <%= class_name %>ControllerTest < ActionDispatch::IntegrationTest
<% if mountable_engine? -%>
setup do
@routes = Engine.routes
end
include Engine.routes.url_helpers
<% end -%>
<% if actions.empty? -%>
......@@ -15,7 +13,7 @@ class <%= class_name %>ControllerTest < ActionController::TestCase
<% else -%>
<% actions.each do |action| -%>
test "should get <%= action %>" do
get :<%= action %>
get <%= file_name %>_<%= action %>_url
assert_response :success
end
......
require 'test_helper'
<% 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
@<%= singular_table_name %> = <%= fixture_name %>(:one)
<% if mountable_engine? -%>
@routes = Engine.routes
<% end -%>
end
test "should get index" do
get :index
get <%= index_helper %>_url
assert_response :success
end
test "should create <%= singular_table_name %>" 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
assert_response 201
end
test "should show <%= singular_table_name %>" do
get :show, params: { id: <%= "@#{singular_table_name}" %> }
get <%= show_helper %>
assert_response :success
end
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
end
test "should destroy <%= singular_table_name %>" do
assert_difference('<%= class_name %>.count', -1) do
delete :destroy, params: { id: <%= "@#{singular_table_name}" %> }
delete <%= show_helper %>
end
assert_response 204
......
require 'test_helper'
<% 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
@<%= singular_table_name %> = <%= fixture_name %>(:one)
<% if mountable_engine? -%>
@routes = Engine.routes
<% end -%>
end
test "should get index" do
get :index
get <%= index_helper %>_url
assert_response :success
end
test "should get new" do
get :new
get <%= new_helper %>
assert_response :success
end
test "should create <%= singular_table_name %>" 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
assert_redirected_to <%= singular_table_name %>_path(<%= class_name %>.last)
end
test "should show <%= singular_table_name %>" do
get :show, params: { id: <%= "@#{singular_table_name}" %> }
get <%= show_helper %>
assert_response :success
end
test "should get edit" do
get :edit, params: { id: <%= "@#{singular_table_name}" %> }
get <%= edit_helper %>
assert_response :success
end
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}" %>)
end
test "should destroy <%= singular_table_name %>" do
assert_difference('<%= class_name %>.count', -1) do
delete :destroy, params: { id: <%= "@#{singular_table_name}" %> }
delete <%= show_helper %>
end
assert_redirected_to <%= index_helper %>_path
......
......@@ -218,7 +218,7 @@ def test_scaffold_on_invoke
/class ProductLinesController < ApplicationController/
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
%w(index edit new show _form).each do |view|
......@@ -285,7 +285,7 @@ def test_scaffold_with_namespace_on_invoke
end
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
%w(index edit new show _form).each do |view|
......@@ -352,7 +352,7 @@ def test_scaffold_with_nested_namespace_on_invoke
end
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
%w(index edit new show _form).each do |view|
......@@ -418,6 +418,6 @@ def test_api_scaffold_with_namespace_on_invoke
assert_match(%r(require_dependency "test_app/application_controller"), content)
end
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
......@@ -33,7 +33,7 @@ def test_inherited_invocations_with_attributes
def test_resource_controller_with_pluralized_class_name
run_generator
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/
end
......
......@@ -104,10 +104,10 @@ def test_functional_tests
run_generator ["User", "name:string", "age:integer", "organization:references{polymorphic}"]
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(/post :create, 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(/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 user_url\(@user\), params: \{ user: \{ age: @user\.age, name: @user\.name, organization_id: @user\.organization_id, organization_type: @user\.organization_type \} \}/, content)
end
end
......@@ -115,10 +115,10 @@ def test_functional_tests_without_attributes
run_generator ["User"]
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(/post :create, params: \{ user: \{ \} \}/, content)
assert_match(/patch :update, params: \{ id: @user, user: \{ \} \}/, content)
assert_match(/post users_url, params: \{ user: \{ \} \}/, content)
assert_match(/patch user_url\(@user\), params: \{ user: \{ \} \}/, content)
end
end
......@@ -236,10 +236,10 @@ def test_api_controller_tests
run_generator ["User", "name:string", "age:integer", "organization:references{polymorphic}", "--api"]
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(/post :create, 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(/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 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)
end
end
......
......@@ -57,9 +57,9 @@ def test_scaffold_on_invoke
end
assert_file "test/controllers/product_lines_controller_test.rb" do |test|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, 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(/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(/class ProductLinesControllerTest < ActionDispatch::IntegrationTest/, 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 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
# Views
......@@ -135,9 +135,9 @@ def test_api_scaffold_on_invoke
end
assert_file "test/controllers/product_lines_controller_test.rb" do |test|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, 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(/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(/class ProductLinesControllerTest < ActionDispatch::IntegrationTest/, 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 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)
end
......@@ -161,10 +161,10 @@ def test_functional_tests_without_attributes
run_generator ["product_line"]
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(/post :create, params: \{ product_line: \{ \} \}/, content)
assert_match(/patch :update, params: \{ id: @product_line, product_line: \{ \} \}/, content)
assert_match(/post product_lines_url, params: \{ product_line: \{ \} \}/, content)
assert_match(/patch product_line_url\(@product_line\), params: \{ product_line: \{ \} \}/, content)
end
end
......@@ -250,7 +250,7 @@ def test_scaffold_with_namespace_on_invoke
end
assert_file "test/controllers/admin/roles_controller_test.rb",
/class Admin::RolesControllerTest < ActionController::TestCase/
/class Admin::RolesControllerTest < ActionDispatch::IntegrationTest/
# Views
%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.
先完成此消息的编辑!
想要评论请 注册