From 62442147fc7066935981c629994f77ba2c7e97d8 Mon Sep 17 00:00:00 2001
From: bogdanvlviv <bogdanvlviv@gmail.com>
Date: Wed, 9 Aug 2017 17:05:21 +0300
Subject: Improve plugin generator tests. Related to #30123.

Improve app generator tests.

Ensure that generation `config/application.rb` is correct.

Ensure that generation `config/application.rb` is correct.
---
 railties/test/generators/app_generator_test.rb    | 62 +++++++++++------------
 railties/test/generators/plugin_generator_test.rb | 56 +++++++++++++++-----
 2 files changed, 74 insertions(+), 44 deletions(-)

(limited to 'railties')

diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb
index 44c4688aa4..0070527c7b 100644
--- a/railties/test/generators/app_generator_test.rb
+++ b/railties/test/generators/app_generator_test.rb
@@ -394,6 +394,15 @@ class AppGeneratorTest < Rails::Generators::TestCase
     end
   end
 
+  def test_default_frameworks_are_required_when_others_are_removed
+    run_generator [destination_root, "--skip-active-record", "--skip-action-mailer", "--skip-action-cable", "--skip-sprockets"]
+    assert_file "config/application.rb", /require\s+["']rails["']/
+    assert_file "config/application.rb", /require\s+["']active_model\/railtie["']/
+    assert_file "config/application.rb", /require\s+["']active_job\/railtie["']/
+    assert_file "config/application.rb", /require\s+["']action_controller\/railtie["']/
+    assert_file "config/application.rb", /require\s+["']action_view\/railtie["']/
+  end
+
   def test_generator_defaults_to_puma_version
     run_generator [destination_root]
     assert_gem "puma", "'~> 3.7'"
@@ -449,22 +458,26 @@ class AppGeneratorTest < Rails::Generators::TestCase
 
   def test_generator_if_skip_sprockets_is_given
     run_generator [destination_root, "--skip-sprockets"]
+
     assert_no_file "config/initializers/assets.rb"
-    assert_file "config/application.rb" do |content|
-      assert_match(/#\s+require\s+["']sprockets\/railtie["']/, content)
-    end
+
+    assert_file "config/application.rb", /#\s+require\s+["']sprockets\/railtie["']/
+
     assert_file "Gemfile" do |content|
       assert_no_match(/sass-rails/, content)
       assert_no_match(/uglifier/, content)
       assert_no_match(/coffee-rails/, content)
     end
+
     assert_file "config/environments/development.rb" do |content|
-      assert_no_match(/config\.assets\.debug = true/, content)
+      assert_no_match(/config\.assets\.debug/, content)
     end
+
     assert_file "config/environments/production.rb" do |content|
-      assert_no_match(/config\.assets\.digest = true/, content)
-      assert_no_match(/config\.assets\.js_compressor = :uglifier/, content)
-      assert_no_match(/config\.assets\.css_compressor = :sass/, content)
+      assert_no_match(/config\.assets\.digest/, content)
+      assert_no_match(/config\.assets\.js_compressor/, content)
+      assert_no_match(/config\.assets\.css_compressor/, content)
+      assert_no_match(/config\.assets\.compile/, content)
     end
   end
 
@@ -473,7 +486,7 @@ class AppGeneratorTest < Rails::Generators::TestCase
     assert_file "config/application.rb", /#\s+require\s+["']action_cable\/engine["']/
     assert_no_file "config/cable.yml"
     assert_no_file "app/assets/javascripts/cable.js"
-    assert_no_file "app/channels"
+    assert_no_directory "app/channels"
     assert_file "Gemfile" do |content|
       assert_no_match(/redis/, content)
     end
@@ -486,10 +499,15 @@ class AppGeneratorTest < Rails::Generators::TestCase
 
   def test_generator_if_skip_test_is_given
     run_generator [destination_root, "--skip-test"]
+
+    assert_file "config/application.rb", /#\s+require\s+["']rails\/test_unit\/railtie["']/
+
     assert_file "Gemfile" do |content|
       assert_no_match(/capybara/, content)
       assert_no_match(/selenium-webdriver/, content)
     end
+
+    assert_no_directory("test")
   end
 
   def test_generator_if_skip_system_test_is_given
@@ -498,6 +516,10 @@ class AppGeneratorTest < Rails::Generators::TestCase
       assert_no_match(/capybara/, content)
       assert_no_match(/selenium-webdriver/, content)
     end
+
+    assert_directory("test")
+
+    assert_no_directory("test/system")
   end
 
   def test_does_not_generate_system_test_files_if_skip_system_test_is_given
@@ -654,18 +676,6 @@ class AppGeneratorTest < Rails::Generators::TestCase
     assert_file "lib/test_file.rb", "heres test data"
   end
 
-  def test_tests_are_removed_from_frameworks_if_skip_test_is_given
-    run_generator [destination_root, "--skip-test"]
-    assert_file "config/application.rb", /#\s+require\s+["']rails\/test_unit\/railtie["']/
-  end
-
-  def test_no_active_record_or_tests_if_skips_given
-    run_generator [destination_root, "--skip-test", "--skip-active-record"]
-    assert_file "config/application.rb", /#\s+require\s+["']rails\/test_unit\/railtie["']/
-    assert_file "config/application.rb", /#\s+require\s+["']active_record\/railtie["']/
-    assert_file "config/application.rb", /\s+require\s+["']active_job\/railtie["']/
-  end
-
   def test_pretend_option
     output = run_generator [File.join(destination_root, "myapp"), "--pretend"]
     assert_no_match(/run  bundle install/, output)
@@ -896,18 +906,6 @@ class AppGeneratorTest < Rails::Generators::TestCase
     assert_directory("test/system")
   end
 
-  def test_system_tests_are_not_generated_on_system_test_skip
-    run_generator [destination_root, "--skip-system-test"]
-
-    assert_no_directory("test/system")
-  end
-
-  def test_system_tests_are_not_generated_on_test_skip
-    run_generator [destination_root, "--skip-test"]
-
-    assert_no_directory("test/system")
-  end
-
   private
     def stub_rails_application(root)
       Rails.application.config.root = root
diff --git a/railties/test/generators/plugin_generator_test.rb b/railties/test/generators/plugin_generator_test.rb
index be761e9f65..53d4ceb25a 100644
--- a/railties/test/generators/plugin_generator_test.rb
+++ b/railties/test/generators/plugin_generator_test.rb
@@ -97,7 +97,7 @@ class PluginGeneratorTest < Rails::Generators::TestCase
     run_generator [destination_root, "-T", "--full"]
 
     assert_no_directory "test/integration/"
-    assert_no_file "test"
+    assert_no_directory "test"
     assert_file "Rakefile" do |contents|
       assert_no_match(/APP_RAKEFILE/, contents)
     end
@@ -106,11 +106,28 @@ class PluginGeneratorTest < Rails::Generators::TestCase
     end
   end
 
-  def test_generating_adds_dummy_app_in_full_mode_without_sprockets
-    run_generator [destination_root, "-S", "--full"]
+  def test_generating_adds_dummy_app_without_sprockets
+    run_generator [destination_root, "--skip-sprockets"]
 
-    assert_file "test/dummy/config/environments/production.rb" do |contents|
-      assert_no_match(/config\.assets/, contents)
+    assert_no_file "test/dummy/config/initializers/assets.rb"
+
+    assert_file "test/dummy/config/application.rb", /#\s+require\s+["']sprockets\/railtie["']/
+
+    assert_file "Gemfile" do |content|
+      assert_no_match(/sass-rails/, content)
+      assert_no_match(/uglifier/, content)
+      assert_no_match(/coffee-rails/, content)
+    end
+
+    assert_file "test/dummy/config/environments/development.rb" do |content|
+      assert_no_match(/config\.assets\.debug/, content)
+    end
+
+    assert_file "test/dummy/config/environments/production.rb" do |content|
+      assert_no_match(/config\.assets\.digest/, content)
+      assert_no_match(/config\.assets\.js_compressor/, content)
+      assert_no_match(/config\.assets\.css_compressor/, content)
+      assert_no_match(/config\.assets\.compile/, content)
     end
   end
 
@@ -138,8 +155,8 @@ class PluginGeneratorTest < Rails::Generators::TestCase
   def test_ensure_that_test_dummy_can_be_generated_from_a_template
     FileUtils.cd(Rails.root)
     run_generator([destination_root, "-m", "lib/create_test_dummy_template.rb", "--skip-test"])
-    assert_file "spec/dummy"
-    assert_no_file "test"
+    assert_directory "spec/dummy"
+    assert_no_directory "test"
   end
 
   def test_database_entry_is_generated_for_sqlite3_by_default_in_full_mode
@@ -173,9 +190,19 @@ class PluginGeneratorTest < Rails::Generators::TestCase
     end
     assert_file "test/dummy/config/environments/production.rb" do |content|
       assert_match(/# config\.action_mailer\.raise_delivery_errors = false/, content)
+      assert_match(/^  config\.read_encrypted_secrets = true/, content)
     end
   end
 
+  def test_default_frameworks_are_required_when_others_are_removed
+    run_generator [destination_root, "--skip-active-record", "--skip-action-mailer", "--skip-action-cable", "--skip-sprockets"]
+    assert_file "test/dummy/config/application.rb", /require\s+["']rails["']/
+    assert_file "test/dummy/config/application.rb", /require\s+["']active_model\/railtie["']/
+    assert_file "test/dummy/config/application.rb", /require\s+["']active_job\/railtie["']/
+    assert_file "test/dummy/config/application.rb", /require\s+["']action_controller\/railtie["']/
+    assert_file "test/dummy/config/application.rb", /require\s+["']action_view\/railtie["']/
+  end
+
   def test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given
     run_generator [destination_root, "--skip-active-record"]
     assert_file "test/dummy/config/application.rb", /#\s+require\s+["']active_record\/railtie["']/
@@ -201,6 +228,12 @@ class PluginGeneratorTest < Rails::Generators::TestCase
     assert_file "test/dummy/config/environments/production.rb" do |content|
       assert_no_match(/config\.action_mailer/, content)
     end
+    assert_no_directory "test/dummy/app/mailers"
+  end
+
+  def test_action_cable_is_removed_from_frameworks_if_skip_action_cable_is_given
+    run_generator [destination_root, "--skip-action-cable"]
+    assert_file "test/dummy/config/application.rb", /#\s+require\s+["']action_cable\/engine["']/
   end
 
   def test_ensure_that_database_option_is_passed_to_app_generator
@@ -463,10 +496,9 @@ class PluginGeneratorTest < Rails::Generators::TestCase
 
   def test_creating_dummy_without_tests_but_with_dummy_path
     run_generator [destination_root, "--dummy_path", "spec/dummy", "--skip-test"]
-    assert_file "spec/dummy"
-    assert_file "spec/dummy/config/application.rb"
-    assert_no_file "test"
-    assert_no_file "test/test_helper.rb"
+    assert_directory "spec/dummy"
+    assert_file "spec/dummy/config/application.rb", /#\s+require\s+["']rails\/test_unit\/railtie["']/
+    assert_no_directory "test"
     assert_file ".gitignore" do |contents|
       assert_match(/spec\/dummy/, contents)
     end
@@ -503,7 +535,7 @@ class PluginGeneratorTest < Rails::Generators::TestCase
 
   def test_skipping_test_files
     run_generator [destination_root, "--skip-test"]
-    assert_no_file "test"
+    assert_no_directory "test"
     assert_file ".gitignore" do |contents|
       assert_no_match(/test\/dummy/, contents)
     end
-- 
cgit v1.2.3