forked from fixin.me/fixin.me
Extend all test tasks to run against every configured test db (WIP)
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
APP_PATH = File.expand_path("../config/application", __dir__)
|
APP_PATH = File.expand_path("../config/application", __dir__)
|
||||||
require_relative "../config/boot"
|
require_relative "../config/boot"
|
||||||
|
require_relative "../lib/core_ext/test_multiple_adapters.rb"
|
||||||
require "rails/commands"
|
require "rails/commands"
|
||||||
|
|||||||
@@ -42,9 +42,24 @@ production:
|
|||||||
# <<: *default
|
# <<: *default
|
||||||
# database: fixinme_dev
|
# database: fixinme_dev
|
||||||
|
|
||||||
# Warning: The database defined as "test" will be erased and
|
# Warning: Test databases will be erased and re-generated from your development
|
||||||
# re-generated from your development database when you run "rake".
|
# database when you run "rake". Do not set these dbs to the same as development
|
||||||
# Do not set this db to the same as development or production.
|
# or production.
|
||||||
|
#
|
||||||
|
# Multiple test databases can be provided. When more than one test db is
|
||||||
|
# present, every test task (test, test:models, test:system, etc.) automatically
|
||||||
|
# runs against all of them.
|
||||||
|
#
|
||||||
|
# In additional test databases only "adapter", "database", "host", "port" and
|
||||||
|
# "socket" settings are used. All settings default to values specified in
|
||||||
|
# "test" - which is required in all test setups.
|
||||||
#test:
|
#test:
|
||||||
# <<: *default
|
# <<: *default
|
||||||
# database: fixinme_test
|
# database: fixinme_test
|
||||||
|
#
|
||||||
|
#test_sqlite3:
|
||||||
|
# adapter: sqlite3
|
||||||
|
# database: db/fixinme_test.sqlite3
|
||||||
|
#
|
||||||
|
#test_postgresql:
|
||||||
|
# adapter: postgresql
|
||||||
|
|||||||
42
lib/core_ext/test_multiple_adapters.rb
Normal file
42
lib/core_ext/test_multiple_adapters.rb
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
require "byebug"
|
||||||
|
|
||||||
|
module CoreExt
|
||||||
|
module TestMultipleAdapters
|
||||||
|
def perform(...)
|
||||||
|
#require APP_PATH
|
||||||
|
$LOAD_PATH << Rails::Command.root.join("test").to_s
|
||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
Rails.application.config.database_configuration.each_pair do |name, config|
|
||||||
|
next unless name.start_with?('test_')
|
||||||
|
|
||||||
|
puts config['adapter']
|
||||||
|
ENV['DATABASE_URL'] = dbconfig_to_url(config)
|
||||||
|
byebug
|
||||||
|
super
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
alias_method :test, :perform
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def dbconfig_to_url(cfg)
|
||||||
|
return cfg['url'] if cfg.has_key?("url")
|
||||||
|
|
||||||
|
config = cfg.transform_values { |v| URI.encode_www_form_component(v) }
|
||||||
|
|
||||||
|
username, password = config.delete('username'), config.delete('password')
|
||||||
|
auth = username ? "#{username}:#{password}" : ''
|
||||||
|
host, port = config.delete('host'), config.delete('port')
|
||||||
|
server = port ? "#{host}:#{port}" : host
|
||||||
|
url = "#{config.delete('adapter')}:"
|
||||||
|
url += "//#{auth}@#{server}" if auth || server
|
||||||
|
url += "/#{config.delete('database')}"
|
||||||
|
url += "?#{config.map { |k,v| "#{k}=#{v}" }.join('&')}" unless config.empty?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#require "rails/commands/test/test_command"
|
||||||
|
#Rails::Command::TestCommand.prepend CoreExt::TestMultipleAdapters
|
||||||
@@ -56,4 +56,8 @@ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
|
|||||||
# find('a[disabled]').click
|
# find('a[disabled]').click
|
||||||
# end
|
# end
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
# TODO: override #test, creating per-adapter test methods running within
|
||||||
|
# #with_connection?
|
||||||
|
# define shards for test database
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ require "test_helper"
|
|||||||
|
|
||||||
class UsersControllerTest < ActionDispatch::IntegrationTest
|
class UsersControllerTest < ActionDispatch::IntegrationTest
|
||||||
setup do
|
setup do
|
||||||
@user = users(:one)
|
@user = users(:admin)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "should get index" do
|
test "should get index" do
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ class UsersTest < ApplicationSystemTestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
test 'sign in' do
|
test 'sign in' do
|
||||||
|
byebug
|
||||||
visit root_url
|
visit root_url
|
||||||
assert find_link(href: new_user_session_path)[:disabled]
|
assert find_link(href: new_user_session_path)[:disabled]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user