From 4ca01d95f6a26d0f65fa23b2a64ca32ec8ea8567 Mon Sep 17 00:00:00 2001
From: Scott Bronson <brons_git@rinspin.com>
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')

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