- def self.run(args=[])
- ::MiniTest.after_run do
- self.kill_server
- end
-
- # Kill server left over from previous test run
- self.kill_server
-
- Capybara.javascript_driver = :poltergeist
- Dir.chdir(ARV_API_SERVER_DIR) do |apidir|
- ENV["NO_COVERAGE_TEST"] = "1"
- make_ssl_cert
- _system('bundle', 'exec', 'rake', 'db:test:load')
- _system('bundle', 'exec', 'rake', 'db:fixtures:load')
- _system('bundle', 'exec', 'passenger', 'start', '-d', '-p3001',
- '--pid-file', SERVER_PID_PATH,
- '--ssl',
- '--ssl-certificate', 'self-signed.pem',
- '--ssl-certificate-key', 'self-signed.key')
- timeout = Time.now.tv_sec + 10
- good_pid = false
- while (not good_pid) and (Time.now.tv_sec < timeout)
- sleep 0.2
- server_pid = find_server_pid
- good_pid = (server_pid and
- (server_pid > 0) and
- (Process.kill(0, server_pid) rescue false))
- end
- if not good_pid
- raise RuntimeError, "could not find API server Rails pid"
+ def run_rake_task task_name, arg_string
+ Dir.chdir ARV_API_SERVER_DIR do
+ check_call ['bundle', 'exec', 'rake', "#{task_name}[#{arg_string}]"]
+ end
+ end
+end
+
+class ActionController::TestCase
+ setup do
+ @counter = 0
+ end
+
+ def check_counter action
+ @counter += 1
+ if @counter == 2
+ assert_equal 1, 2, "Multiple actions in controller test"
+ end
+ end
+
+ [:get, :post, :put, :patch, :delete].each do |method|
+ define_method method do |action, *args|
+ check_counter action
+ super action, *args
+ end
+ end
+end
+
+# Test classes can call reset_api_fixtures(when_to_reset,flag) to
+# override the default. Example:
+#
+# class MySuite < ActionDispatch::IntegrationTest
+# reset_api_fixtures :after_each_test, false
+# reset_api_fixtures :after_suite, true
+# ...
+# end
+#
+# The default behavior is reset_api_fixtures(:after_each_test,true).
+#
+class ActiveSupport::TestCase
+
+ def self.inherited subclass
+ subclass.class_eval do
+ class << self
+ attr_accessor :want_reset_api_fixtures