From 4ca01d95f6a26d0f65fa23b2a64ca32ec8ea8567 Mon Sep 17 00:00:00 2001 From: Scott Bronson Date: Thu, 25 Feb 2016 02:42:21 -0800 Subject: extract ActionDispatch::IntegrationTest::Behavior Similar to 176fbfd6, this makes it possible for other test frameworks to hook into Rails integration test facilities. --- .../lib/action_dispatch/testing/integration.rb | 57 +++++++++++++--------- 1 file changed, 35 insertions(+), 22 deletions(-) (limited to 'actionpack/lib/action_dispatch/testing/integration.rb') diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb index b0b5db704b..60c562d7cd 100644 --- a/actionpack/lib/action_dispatch/testing/integration.rb +++ b/actionpack/lib/action_dispatch/testing/integration.rb @@ -735,36 +735,49 @@ module ActionDispatch # Consult the Rails Testing Guide for more. class IntegrationTest < ActiveSupport::TestCase - include Integration::Runner - include ActionController::TemplateAssertions - include ActionDispatch::Routing::UrlFor + module UrlOptions + extend ActiveSupport::Concern + def url_options + integration_session.url_options + end + end - @@app = nil + module Behavior + extend ActiveSupport::Concern - def self.app - @@app || ActionDispatch.test_app - end + include Integration::Runner + include ActionController::TemplateAssertions - def self.app=(app) - @@app = app - end + included do + include ActionDispatch::Routing::UrlFor + include UrlOptions # don't let UrlFor override the url_options method + ActiveSupport.run_load_hooks(:action_dispatch_integration_test, self) + @@app = nil + end - def app - super || self.class.app - end + module ClassMethods + def app + defined?(@@app) ? @@app : ActionDispatch.test_app + end - def url_options - integration_session.url_options - end + def app=(app) + @@app = app + end - def document_root_element - html_document.root - end + def register_encoder(*args) + Integration::Session::RequestEncoder.register_encoder(*args) + end + end + + def app + super || self.class.app + end - def self.register_encoder(*args) - Integration::Session::RequestEncoder.register_encoder(*args) + def document_root_element + html_document.root + end end - ActiveSupport.run_load_hooks(:action_dispatch_integration_test, self) + include Behavior end end -- cgit v1.2.3