1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activerecord/test/cases/multiple_db_test.rb
Jon Leighton 9e4c41c903 Remove ActiveRecord::Model
In the end I think the pain of implementing this seamlessly was not
worth the gain provided.

The intention was that it would allow plain ruby objects that might not
live in your main application to be subclassed and have persistence
mixed in. But I've decided that the benefit of doing that is not worth
the amount of complexity that the implementation introduced.
2012-10-26 15:51:02 +01:00

108 lines
2.9 KiB
Ruby

require "cases/helper"
require 'models/entrant'
require 'models/bird'
require 'models/course'
class MultipleDbTest < ActiveRecord::TestCase
self.use_transactional_fixtures = false
def setup
@courses = create_fixtures("courses") { Course.retrieve_connection }
@colleges = create_fixtures("colleges") { College.retrieve_connection }
@entrants = create_fixtures("entrants")
end
def test_connected
assert_not_nil Entrant.connection
assert_not_nil Course.connection
end
def test_proper_connection
assert_not_equal(Entrant.connection, Course.connection)
assert_equal(Entrant.connection, Entrant.retrieve_connection)
assert_equal(Course.connection, Course.retrieve_connection)
assert_equal(ActiveRecord::Base.connection, Entrant.connection)
end
def test_find
c1 = Course.find(1)
assert_equal "Ruby Development", c1.name
c2 = Course.find(2)
assert_equal "Java Development", c2.name
e1 = Entrant.find(1)
assert_equal "Ruby Developer", e1.name
e2 = Entrant.find(2)
assert_equal "Ruby Guru", e2.name
e3 = Entrant.find(3)
assert_equal "Java Lover", e3.name
end
def test_associations
c1 = Course.find(1)
assert_equal 2, c1.entrants.count
e1 = Entrant.find(1)
assert_equal e1.course.id, c1.id
c2 = Course.find(2)
assert_equal 1, c2.entrants.count
e3 = Entrant.find(3)
assert_equal e3.course.id, c2.id
end
def test_course_connection_should_survive_dependency_reload
assert Course.connection
ActiveSupport::Dependencies.clear
Object.send(:remove_const, :Course)
require_dependency 'models/course'
assert Course.connection
end
def test_transactions_across_databases
c1 = Course.find(1)
e1 = Entrant.find(1)
begin
Course.transaction do
Entrant.transaction do
c1.name = "Typo"
e1.name = "Typo"
c1.save
e1.save
raise "No I messed up."
end
end
rescue
# Yup caught it
end
assert_equal "Typo", c1.name
assert_equal "Typo", e1.name
assert_equal "Ruby Development", Course.find(1).name
assert_equal "Ruby Developer", Entrant.find(1).name
end
def test_arel_table_engines
assert_not_equal Entrant.arel_engine, Bird.arel_engine
assert_not_equal Entrant.arel_engine, Course.arel_engine
end
def test_connection
assert_equal Entrant.arel_engine.connection, Bird.arel_engine.connection
assert_not_equal Entrant.arel_engine.connection, Course.arel_engine.connection
end
unless in_memory_db?
def test_associations_should_work_when_model_has_no_connection
begin
ActiveRecord::Base.remove_connection
assert_nothing_raised ActiveRecord::ConnectionNotEstablished do
College.first.courses.first
end
ensure
ActiveRecord::Base.establish_connection 'arunit'
end
end
end
end