aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2016-11-12 09:49:28 -0500
committereileencodes <eileencodes@gmail.com>2017-02-20 15:07:33 -0500
commit84f82f0a84de0906d195b529a9f780141c43507a (patch)
treef2919614c9ce8f0adccdfd83e47d43f6484d17bc /railties
parent1db7a5c285eeb61acc998c0c27788a61bd948d5c (diff)
downloadrails-84f82f0a84de0906d195b529a9f780141c43507a.tar.gz
rails-84f82f0a84de0906d195b529a9f780141c43507a.tar.bz2
rails-84f82f0a84de0906d195b529a9f780141c43507a.zip
Refactor config settings to use generated file
Originally I had set up system testing to have one configuration option to be set in the test environment. After thinking it over I think a generated class on app creation would be best. The reason for this is Capybara has a ton of configuration options that I'm sure some folks want to use. Thinking about how we handle screenshots, database transactions, and a whole bunch of other settings it would be better for users to be able to turn all of that on and off. When an app or scaffold is generated a `test/system_test_helper.rb` test helper will be generated as well. This will contain the class for tests to inherit from `ActionSystemTestCase` which will inherit from `ActionSystemTest::Base`. Here is where users can change the test driver, remove the screenshot helper, and add their additional Capybara configuration.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/generators.rb2
-rw-r--r--railties/lib/rails/generators/rails/app/app_generator.rb2
-rw-r--r--railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb8
-rw-r--r--railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb8
-rw-r--r--railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb4
-rw-r--r--railties/lib/rails/generators/rails/system_test/system_test_generator.rb2
-rw-r--r--railties/lib/rails/generators/test_unit/system/system_generator.rb6
-rw-r--r--railties/lib/rails/generators/test_unit/system/templates/system_test.rb2
-rw-r--r--railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb8
-rw-r--r--railties/lib/rails/test_help.rb2
-rw-r--r--railties/lib/rails/test_unit/railtie.rb14
11 files changed, 39 insertions, 19 deletions
diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb
index cbcbe70fdd..85f66cc416 100644
--- a/railties/lib/rails/generators.rb
+++ b/railties/lib/rails/generators.rb
@@ -53,7 +53,6 @@ module Rails
force_plural: false,
helper: true,
integration_tool: nil,
- system_tool: nil,
javascripts: true,
javascript_engine: :js,
orm: false,
@@ -63,6 +62,7 @@ module Rails
stylesheets: true,
stylesheet_engine: :css,
scaffold_stylesheet: true,
+ system_tests: nil,
test_framework: false,
template_engine: :erb
}
diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb
index 00839c5d4c..acdb66ca85 100644
--- a/railties/lib/rails/generators/rails/app/app_generator.rb
+++ b/railties/lib/rails/generators/rails/app/app_generator.rb
@@ -152,6 +152,8 @@ module Rails
def system_test
empty_directory_with_keep_file "test/system"
+
+ template "test/system_test_helper.rb"
end
def tmp
diff --git a/railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb b/railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb
new file mode 100644
index 0000000000..77c4738d6f
--- /dev/null
+++ b/railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb
@@ -0,0 +1,8 @@
+require "test_helper"
+
+class ActionSystemTestCase < ActionSystemTest::Base
+ teardown do
+ take_failed_screenshot
+ Capybara.reset_sessions!
+ end
+end
diff --git a/railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb b/railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb
new file mode 100644
index 0000000000..77c4738d6f
--- /dev/null
+++ b/railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb
@@ -0,0 +1,8 @@
+require "test_helper"
+
+class ActionSystemTestCase < ActionSystemTest::Base
+ teardown do
+ take_failed_screenshot
+ Capybara.reset_sessions!
+ end
+end
diff --git a/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb
index bcaa424ca8..12d6bc85b2 100644
--- a/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb
+++ b/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb
@@ -6,6 +6,7 @@ module Rails
remove_hook_for :resource_controller
remove_class_option :actions
+ class_option :api, type: :boolean
class_option :stylesheets, type: :boolean, desc: "Generate Stylesheets"
class_option :stylesheet_engine, desc: "Engine for Stylesheets"
class_option :assets, type: :boolean
@@ -15,11 +16,12 @@ module Rails
def handle_skip
@options = @options.merge(stylesheets: false) unless options[:assets]
@options = @options.merge(stylesheet_engine: false) unless options[:stylesheets] && options[:scaffold_stylesheet]
+ @options = @options.merge(system_tests: false) if options[:api]
end
hook_for :scaffold_controller, required: true
- hook_for :system_tool, as: :system
+ hook_for :system_tests, as: :system
hook_for :assets do |assets|
invoke assets, [controller_name]
diff --git a/railties/lib/rails/generators/rails/system_test/system_test_generator.rb b/railties/lib/rails/generators/rails/system_test/system_test_generator.rb
index 35bc168898..901120e892 100644
--- a/railties/lib/rails/generators/rails/system_test/system_test_generator.rb
+++ b/railties/lib/rails/generators/rails/system_test/system_test_generator.rb
@@ -1,7 +1,7 @@
module Rails
module Generators
class SystemTestGenerator < NamedBase # :nodoc:
- hook_for :system_tool, as: :system
+ hook_for :system_tests, as: :system
end
end
end
diff --git a/railties/lib/rails/generators/test_unit/system/system_generator.rb b/railties/lib/rails/generators/test_unit/system/system_generator.rb
index a05f0f924d..e77ccef009 100644
--- a/railties/lib/rails/generators/test_unit/system/system_generator.rb
+++ b/railties/lib/rails/generators/test_unit/system/system_generator.rb
@@ -6,7 +6,11 @@ module TestUnit # :nodoc:
check_class_collision suffix: "Test"
def create_test_files
- template "system_test.rb", File.join("test/system", class_path, "#{file_name.pluralize}_test.rb")
+ if !File.exist?(File.join("test/system_test_helper.rb"))
+ template "system_test_helper.rb", File.join("test", "system_test_helper.rb")
+ end
+
+ template "system_test.rb", File.join("test/system", "#{file_name.pluralize}_test.rb")
end
end
end
diff --git a/railties/lib/rails/generators/test_unit/system/templates/system_test.rb b/railties/lib/rails/generators/test_unit/system/templates/system_test.rb
index a74e0bb23d..bc3abd25d9 100644
--- a/railties/lib/rails/generators/test_unit/system/templates/system_test.rb
+++ b/railties/lib/rails/generators/test_unit/system/templates/system_test.rb
@@ -1,4 +1,4 @@
-require 'test_helper'
+require "system_test_helper"
class <%= class_name.pluralize %>Test < ActionSystemTestCase
# test 'the truth' do
diff --git a/railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb b/railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb
new file mode 100644
index 0000000000..77c4738d6f
--- /dev/null
+++ b/railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb
@@ -0,0 +1,8 @@
+require "test_helper"
+
+class ActionSystemTestCase < ActionSystemTest::Base
+ teardown do
+ take_failed_screenshot
+ Capybara.reset_sessions!
+ end
+end
diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb
index 68fc317a60..98bfddb197 100644
--- a/railties/lib/rails/test_help.rb
+++ b/railties/lib/rails/test_help.rb
@@ -46,7 +46,7 @@ class ActionDispatch::IntegrationTest
end
end
-class ActionSystemTestCase
+class ActionSystemTest::Base
def before_setup # :nodoc:
@routes = Rails.application.routes
super
diff --git a/railties/lib/rails/test_unit/railtie.rb b/railties/lib/rails/test_unit/railtie.rb
index 694c8d92b1..9cc3f73a9c 100644
--- a/railties/lib/rails/test_unit/railtie.rb
+++ b/railties/lib/rails/test_unit/railtie.rb
@@ -11,7 +11,7 @@ module Rails
fixture_replacement: nil
c.integration_tool :test_unit
- c.system_tool :test_unit
+ c.system_tests :test_unit
end
initializer "test_unit.line_filtering" do
@@ -20,18 +20,6 @@ module Rails
}
end
- config.system_testing = ActiveSupport::OrderedOptions.new
-
- initializer "system_testing.set_configs" do |app|
- ActiveSupport.on_load(:active_support_test_case) do
- require "action_system_test"
-
- options = app.config.system_testing
- options.driver ||= ActionSystemTest.default_driver
- options.each { |k, v| ActionSystemTest.send("#{k}=", v) }
- end
- end
-
rake_tasks do
load "rails/test_unit/testing.rake"
end