From ad5892391da99cafb462e8883a185b3a0e653f4f Mon Sep 17 00:00:00 2001 From: Leonardo Tegon Date: Wed, 7 Aug 2019 12:32:01 -0300 Subject: [PATCH] Fix specs on Rails 6 RC2 (#5109) * Fix specs on Rails 6 RC2 `ActiveRecord::MigrationContext` now has a `schema_migration` attribute. Ref: https://github.com/rails/rails/pull/36439/files#diff-8d3c44120f7b67ff79e2fbe6a40d0ad6R1018 * Use `media_type` instead of `content_type` Before Rails 6 RC2, the `ActionDispatch::Response#content_type` method would return only the media part of the `Content-Type` header, without any other parts. Now the `#content_type` method returns the entire header - as it is - and `#media_type` should be used instead to get the previous behavior. Ref: - https://github.com/rails/rails/pull/36034 - https://github.com/rails/rails/pull/36854 * Use render template instead of render file Render file will need the full path in order to avoid security breaches. In this particular case, there's no need to use render file, it's ok to use render template. Ref: https://github.com/rails/rails/pull/35688 * Don't set `represent_boolean_as_integer` on Rails 6 * Update comments [ci skip] --- test/orm/active_record.rb | 4 +++- test/rails_app/app/views/admins/sessions/new.html.erb | 2 +- test/rails_app/config/application.rb | 4 ++-- test/rails_app/config/boot.rb | 6 +++++- test/test/controller_helpers_test.rb | 7 ++++++- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/test/orm/active_record.rb b/test/orm/active_record.rb index e258ca8a..001f99b9 100644 --- a/test/orm/active_record.rb +++ b/test/orm/active_record.rb @@ -5,7 +5,9 @@ ActiveRecord::Base.logger = Logger.new(nil) ActiveRecord::Base.include_root_in_json = true migrate_path = File.expand_path("../../rails_app/db/migrate/", __FILE__) -if Devise::Test.rails52_and_up? +if Devise::Test.rails6? + ActiveRecord::MigrationContext.new(migrate_path, ActiveRecord::SchemaMigration).migrate +elsif Devise::Test.rails52_and_up? ActiveRecord::MigrationContext.new(migrate_path).migrate else ActiveRecord::Migrator.migrate(migrate_path) diff --git a/test/rails_app/app/views/admins/sessions/new.html.erb b/test/rails_app/app/views/admins/sessions/new.html.erb index 75f3b860..f3be6278 100644 --- a/test/rails_app/app/views/admins/sessions/new.html.erb +++ b/test/rails_app/app/views/admins/sessions/new.html.erb @@ -1,2 +1,2 @@ Welcome to "sessions/new" view! -<%= render file: "devise/sessions/new" %> +<%= render template: "devise/sessions/new" %> diff --git a/test/rails_app/config/application.rb b/test/rails_app/config/application.rb index d39fa7dd..0c844878 100644 --- a/test/rails_app/config/application.rb +++ b/test/rails_app/config/application.rb @@ -45,8 +45,8 @@ module RailsApp Devise::SessionsController.layout "application" end - # Remove this check once Rails 5.0 support is removed. - if Devise::Test.rails52_and_up? + # Remove the first check once Rails 5.0 support is removed. + if Devise::Test.rails52_and_up? && !Devise::Test.rails6? Rails.application.config.active_record.sqlite3.represent_boolean_as_integer = true end end diff --git a/test/rails_app/config/boot.rb b/test/rails_app/config/boot.rb index 01621de7..bc3dfa62 100644 --- a/test/rails_app/config/boot.rb +++ b/test/rails_app/config/boot.rb @@ -6,8 +6,12 @@ end module Devise module Test - # Detection for minor differences between Rails 4 and 5, 5.1, and 5.2 in tests. + # Detection for minor differences between Rails versions in tests. + def self.rails6? + Rails.version.start_with? '6' + end + def self.rails52_and_up? Rails::VERSION::MAJOR > 5 || rails52? end diff --git a/test/test/controller_helpers_test.rb b/test/test/controller_helpers_test.rb index 7855621c..f285cbbf 100644 --- a/test/test/controller_helpers_test.rb +++ b/test/test/controller_helpers_test.rb @@ -102,7 +102,12 @@ class TestControllerHelpersTest < Devise::ControllerTestCase test "returns the content type of a failure app" do get :index, params: { format: :xml } - assert response.content_type.include?('application/xml') + + if Devise::Test.rails6? + assert response.media_type.include?('application/xml') + else + assert response.content_type.include?('application/xml') + end end test "defined Warden after_authentication callback should not be called when sign_in is called" do