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 e258ca8afb..001f99b993 100644 --- a/test/orm/active_record.rb +++ b/test/orm/active_record.rb @@ -5,7 +5,9 @@ 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 75f3b860fa..f3be6278ed 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 d39fa7dd6e..0c844878a0 100644 --- a/test/rails_app/config/application.rb +++ b/test/rails_app/config/application.rb @@ -45,8 +45,8 @@ class Application < Rails::Application 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 01621de75c..bc3dfa62d9 100644 --- a/test/rails_app/config/boot.rb +++ b/test/rails_app/config/boot.rb @@ -6,8 +6,12 @@ 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 7855621c13..f285cbbfd6 100644 --- a/test/test/controller_helpers_test.rb +++ b/test/test/controller_helpers_test.rb @@ -102,7 +102,12 @@ def respond 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