rails--rails/activerecord/test/deprecated_associations_tes...

176 lines
5.3 KiB
Ruby
Executable File

require 'abstract_unit'
require 'fixtures/developer'
require 'fixtures/project'
require 'fixtures/company'
require 'fixtures/topic'
require 'fixtures/reply'
# Can't declare new classes in test case methods, so tests before that
bad_collection_keys = false
begin
class Car < ActiveRecord::Base; has_many :wheels, :name => "wheels"; end
rescue ArgumentError
bad_collection_keys = true
end
raise "ActiveRecord should have barked on bad collection keys" unless bad_collection_keys
class DeprecatedAssociationWarningsTest < Test::Unit::TestCase
def test_deprecation_warnings
assert_deprecated('has_account?') { Firm.find(:first).has_account? }
assert_deprecated('has_clients?') { Firm.find(:first).has_clients? }
end
end
class DeprecatedAssociationsTest < Test::Unit::TestCase
fixtures :accounts, :companies, :developers, :projects, :topics,
:developers_projects
def setup
@firm = companies(:first_firm)
end
def test_has_many
assert !@firm.clients.loaded?
assert_deprecated 'has_clients?' do
assert_queries(1) { assert @firm.has_clients? }
end
assert !@firm.clients.loaded?
assert_deprecated 'clients_count' do
assert_queries(1) { assert_equal 2, @firm.clients_count }
end
end
def test_belongs_to
client = companies(:second_client)
assert_deprecated('has_firm?') do
assert companies(:second_client).has_firm?, "Microsoft should have a firm"
end
assert_equal companies(:first_firm), client.firm, "Microsoft should have a firm"
end
def test_has_one
assert_equal accounts(:signals37), @firm.account
assert_deprecated 'has_account?' do
assert @firm.has_account?, "37signals should have an account"
end
assert_deprecated 'firm?' do
assert accounts(:signals37).firm?(@firm), "37signals account should be able to backtrack"
end
assert_deprecated 'has_firm?' do
assert accounts(:signals37).has_firm?, "37signals account should be able to backtrack"
end
assert_nil accounts(:unknown).firm, "Unknown isn't linked"
end
def test_find_in
assert_deprecated 'find_in_clients' do
assert_equal companies(:first_client), @firm.find_in_clients(2)
assert_raises(ActiveRecord::RecordNotFound) { @firm.find_in_clients(6) }
end
end
def test_build_to_collection
count = @firm.clients_of_firm.count
new_client = nil
assert_deprecated 'build_to_clients_of_firm' do
new_client = @firm.build_to_clients_of_firm("name" => "Another Client")
end
assert_equal "Another Client", new_client.name
assert new_client.save
assert_equal @firm, new_client.firm
assert_equal count + 1, @firm.clients_of_firm.count
end
def test_create_in_collection
assert_deprecated 'create_in_clients_of_firm' do
assert_equal @firm.create_in_clients_of_firm("name" => "Another Client"), @firm.clients_of_firm(true).last
end
end
def test_has_and_belongs_to_many
david = Developer.find(1)
assert_deprecated 'has_projects?' do
assert david.has_projects?
end
assert_deprecated 'projects_count' do
assert_equal 2, david.projects_count
end
active_record = Project.find(1)
assert_deprecated 'has_developers?' do
assert active_record.has_developers?
end
assert_deprecated 'developers_count' do
assert_equal 3, active_record.developers_count
end
assert active_record.developers.include?(david)
end
def test_has_and_belongs_to_many_removing
david = Developer.find(1)
active_record = Project.find(1)
assert_deprecated do
david.remove_projects(active_record)
assert_equal 1, david.projects_count
assert_equal 2, active_record.developers_count
end
end
def test_has_and_belongs_to_many_zero
david = Developer.find(1)
assert_deprecated do
david.remove_projects Project.find(:all)
assert_equal 0, david.projects_count
assert !david.has_projects?
end
end
def test_has_and_belongs_to_many_adding
jamis = Developer.find(2)
action_controller = Project.find(2)
assert_deprecated do
jamis.add_projects(action_controller)
assert_equal 2, jamis.projects_count
assert_equal 2, action_controller.developers_count
end
end
def test_has_and_belongs_to_many_adding_from_the_project
jamis = Developer.find(2)
action_controller = Project.find(2)
assert_deprecated do
action_controller.add_developers(jamis)
assert_equal 2, jamis.projects_count
assert_equal 2, action_controller.developers_count
end
end
def test_has_and_belongs_to_many_adding_a_collection
aredridel = Developer.new("name" => "Aredridel")
aredridel.save
assert_deprecated do
aredridel.add_projects([ Project.find(1), Project.find(2) ])
assert_equal 2, aredridel.projects_count
end
end
def test_belongs_to_counter
topic = Topic.create("title" => "Apple", "content" => "hello world")
assert_equal 0, topic.send(:read_attribute, "replies_count"), "No replies yet"
reply = assert_deprecated { topic.create_in_replies("title" => "I'm saying no!", "content" => "over here") }
assert_equal 1, Topic.find(topic.id).send(:read_attribute, "replies_count"), "First reply created"
reply.destroy
assert_equal 0, Topic.find(topic.id).send(:read_attribute, "replies_count"), "First reply deleted"
end
end