rails--rails/actioncable/test/subscription_adapter/postgresql_test.rb

68 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require "test_helper"
require_relative "common"
require_relative "channel_prefix"
require "active_record"
class PostgresqlAdapterTest < ActionCable::TestCase
include CommonSubscriptionAdapterTest
include ChannelPrefixTest
def setup
database_config = { "adapter" => "postgresql", "database" => "activerecord_unittest" }
ar_tests = File.expand_path("../../../activerecord/test", __dir__)
if Dir.exist?(ar_tests)
require File.join(ar_tests, "config")
require File.join(ar_tests, "support/config")
local_config = ARTest.config["connections"]["postgresql"]["arunit"]
database_config.update local_config if local_config
end
ActiveRecord::Base.establish_connection database_config
begin
ActiveRecord::Base.connection
rescue
@rx_adapter = @tx_adapter = nil
skip "Couldn't connect to PostgreSQL: #{database_config.inspect}"
end
super
end
def teardown
super
ActiveRecord::Base.clear_all_connections!
end
def cable_config
{ adapter: "postgresql" }
end
def test_clear_active_record_connections_adapter_still_works
server = ActionCable::Server::Base.new
server.config.cable = cable_config.with_indifferent_access
server.config.logger = Logger.new(StringIO.new).tap { |l| l.level = Logger::UNKNOWN }
adapter_klass = Class.new(server.config.pubsub_adapter) do
def active?
!@listener.nil?
end
end
adapter = adapter_klass.new(server)
subscribe_as_queue("channel", adapter) do |queue|
adapter.broadcast("channel", "hello world")
assert_equal "hello world", queue.pop
end
ActiveRecord::Base.clear_reloadable_connections!
assert adapter.active?
end
end