aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/generators/api_app_generator_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test/generators/api_app_generator_test.rb')
-rw-r--r--railties/test/generators/api_app_generator_test.rb162
1 files changed, 108 insertions, 54 deletions
diff --git a/railties/test/generators/api_app_generator_test.rb b/railties/test/generators/api_app_generator_test.rb
index 8e1cd0891a..7791d472d8 100644
--- a/railties/test/generators/api_app_generator_test.rb
+++ b/railties/test/generators/api_app_generator_test.rb
@@ -1,11 +1,13 @@
-require 'generators/generators_test_helper'
-require 'rails/generators/rails/app/app_generator'
+# frozen_string_literal: true
+
+require "generators/generators_test_helper"
+require "rails/generators/rails/app/app_generator"
class ApiAppGeneratorTest < Rails::Generators::TestCase
include GeneratorsTestHelper
tests Rails::Generators::AppGenerator
- arguments [destination_root, '--api']
+ arguments [destination_root, "--api"]
def setup
Rails.application = TestApp::Application
@@ -33,27 +35,26 @@ class ApiAppGeneratorTest < Rails::Generators::TestCase
def test_api_modified_files
run_generator
+ assert_file ".gitignore" do |content|
+ assert_no_match(/\/public\/assets/, content)
+ end
+
assert_file "Gemfile" do |content|
assert_no_match(/gem 'coffee-rails'/, content)
- assert_no_match(/gem 'jquery-rails'/, content)
assert_no_match(/gem 'sass-rails'/, content)
assert_no_match(/gem 'web-console'/, content)
+ assert_no_match(/gem 'capybara'/, content)
+ assert_no_match(/gem 'selenium-webdriver'/, content)
assert_match(/# gem 'jbuilder'/, content)
+ assert_match(/# gem 'rack-cors'/, content)
end
- assert_file "config/application.rb" do |content|
- assert_match(/config.api_only = true/, content)
- end
-
- assert_file "config/initializers/cors.rb"
-
- assert_file "config/initializers/wrap_parameters.rb"
-
+ assert_file "config/application.rb", /config\.api_only = true/
assert_file "app/controllers/application_controller.rb", /ActionController::API/
end
def test_generator_if_skip_action_cable_is_given
- run_generator [destination_root, "--skip-action-cable"]
+ run_generator [destination_root, "--api", "--skip-action-cable"]
assert_file "config/application.rb", /#\s+require\s+["']action_cable\/engine["']/
assert_no_file "config/cable.yml"
assert_no_file "app/channels"
@@ -62,49 +63,102 @@ class ApiAppGeneratorTest < Rails::Generators::TestCase
end
end
- private
+ def test_app_update_does_not_generate_unnecessary_config_files
+ run_generator
+
+ generator = Rails::Generators::AppGenerator.new ["rails"],
+ { api: true, update: true }, { destination_root: destination_root, shell: @shell }
+ quietly { generator.send(:update_config_files) }
- def default_files
- files = %W(
- .gitignore
- Gemfile
- Rakefile
- config.ru
- app/controllers
- app/mailers
- app/models
- app/views/layouts/mailer.html.erb
- app/views/layouts/mailer.text.erb
- config/environments
- config/initializers
- config/locales
- db
- lib
- lib/tasks
- log
- test/fixtures
- test/controllers
- test/integration
- test/models
- tmp
- vendor
- )
- files.concat %w(bin/bundle bin/rails bin/rake)
- files
+ assert_no_file "config/initializers/cookies_serializer.rb"
+ assert_no_file "config/initializers/assets.rb"
end
- def skipped_files
- %w(app/assets
- app/helpers
- app/views/layouts/application.html.erb
- config/initializers/assets.rb
- config/initializers/cookies_serializer.rb
- config/initializers/session_store.rb
- config/initializers/request_forgery_protection.rb
- config/initializers/per_form_csrf_tokens.rb
- lib/assets
- vendor/assets
- test/helpers
- tmp/cache/assets)
+ def test_app_update_does_not_generate_unnecessary_bin_files
+ run_generator
+
+ generator = Rails::Generators::AppGenerator.new ["rails"],
+ { api: true, update: true }, { destination_root: destination_root, shell: @shell }
+ quietly { generator.send(:update_bin_files) }
+
+ assert_no_file "bin/yarn"
end
+
+ private
+
+ def default_files
+ %w(.gitignore
+ .ruby-version
+ README.md
+ Gemfile
+ Rakefile
+ config.ru
+ app/channels
+ app/controllers
+ app/mailers
+ app/models
+ app/views/layouts
+ app/views/layouts/mailer.html.erb
+ app/views/layouts/mailer.text.erb
+ bin/bundle
+ bin/rails
+ bin/rake
+ bin/setup
+ bin/update
+ config/application.rb
+ config/boot.rb
+ config/cable.yml
+ config/environment.rb
+ config/environments
+ config/environments/development.rb
+ config/environments/production.rb
+ config/environments/test.rb
+ config/initializers
+ config/initializers/application_controller_renderer.rb
+ config/initializers/backtrace_silencers.rb
+ config/initializers/cors.rb
+ config/initializers/filter_parameter_logging.rb
+ config/initializers/inflections.rb
+ config/initializers/mime_types.rb
+ config/initializers/wrap_parameters.rb
+ config/locales
+ config/locales/en.yml
+ config/puma.rb
+ config/routes.rb
+ config/credentials.yml.enc
+ config/spring.rb
+ config/storage.yml
+ db
+ db/seeds.rb
+ lib
+ lib/tasks
+ log
+ test/fixtures
+ test/controllers
+ test/integration
+ test/models
+ tmp
+ vendor
+ )
+ end
+
+ def skipped_files
+ %w(app/assets
+ app/helpers
+ app/views/layouts/application.html.erb
+ bin/yarn
+ config/initializers/assets.rb
+ config/initializers/cookies_serializer.rb
+ lib/assets
+ test/helpers
+ tmp/cache/assets
+ public/404.html
+ public/422.html
+ public/500.html
+ public/apple-touch-icon-precomposed.png
+ public/apple-touch-icon.png
+ public/favicon.ico
+ package.json
+ )
+ end
end