Merge pull request #22131 from yui-knk/move_test_to_inheritance_test
Move some AR test cases to inheritance_test.rb
This commit is contained in:
commit
5b7afb81ae
@ -1204,42 +1204,10 @@ def test_find_symbol_ordered_last
|
||||
assert_equal last, Developer.all.merge!(:order => :salary).to_a.last
|
||||
end
|
||||
|
||||
def test_abstract_class
|
||||
assert !ActiveRecord::Base.abstract_class?
|
||||
assert LoosePerson.abstract_class?
|
||||
assert !LooseDescendant.abstract_class?
|
||||
end
|
||||
|
||||
def test_abstract_class_table_name
|
||||
assert_nil AbstractCompany.table_name
|
||||
end
|
||||
|
||||
def test_descends_from_active_record
|
||||
assert !ActiveRecord::Base.descends_from_active_record?
|
||||
|
||||
# Abstract subclass of AR::Base.
|
||||
assert LoosePerson.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of an abstract class.
|
||||
assert LooseDescendant.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of AR::Base.
|
||||
assert TightPerson.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of a concrete class but has no type column.
|
||||
assert TightDescendant.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of AR::Base.
|
||||
assert Post.descends_from_active_record?
|
||||
|
||||
# Abstract subclass of a concrete class which has a type column.
|
||||
# This is pathological, as you'll never have Sub < Abstract < Concrete.
|
||||
assert !StiPost.descends_from_active_record?
|
||||
|
||||
# Concrete subclasses an abstract class which has a type column.
|
||||
assert !SubStiPost.descends_from_active_record?
|
||||
end
|
||||
|
||||
def test_find_on_abstract_base_class_doesnt_use_type_condition
|
||||
old_class = LooseDescendant
|
||||
Object.send :remove_const, :LooseDescendant
|
||||
@ -1284,53 +1252,6 @@ def test_benchmark_with_use_silence
|
||||
ActiveRecord::Base.logger = original_logger
|
||||
end
|
||||
|
||||
def test_compute_type_success
|
||||
assert_equal Author, ActiveRecord::Base.send(:compute_type, 'Author')
|
||||
end
|
||||
|
||||
def test_compute_type_nonexistent_constant
|
||||
e = assert_raises NameError do
|
||||
ActiveRecord::Base.send :compute_type, 'NonexistentModel'
|
||||
end
|
||||
assert_equal 'uninitialized constant ActiveRecord::Base::NonexistentModel', e.message
|
||||
assert_equal 'ActiveRecord::Base::NonexistentModel', e.name
|
||||
end
|
||||
|
||||
def test_compute_type_no_method_error
|
||||
ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise NoMethodError }) do
|
||||
assert_raises NoMethodError do
|
||||
ActiveRecord::Base.send :compute_type, 'InvalidModel'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_compute_type_on_undefined_method
|
||||
error = nil
|
||||
begin
|
||||
Class.new(Author) do
|
||||
alias_method :foo, :bar
|
||||
end
|
||||
rescue => e
|
||||
error = e
|
||||
end
|
||||
|
||||
ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise e }) do
|
||||
|
||||
exception = assert_raises NameError do
|
||||
ActiveRecord::Base.send :compute_type, 'InvalidModel'
|
||||
end
|
||||
assert_equal error.message, exception.message
|
||||
end
|
||||
end
|
||||
|
||||
def test_compute_type_argument_error
|
||||
ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise ArgumentError }) do
|
||||
assert_raises ArgumentError do
|
||||
ActiveRecord::Base.send :compute_type, 'InvalidModel'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_clear_cache!
|
||||
# preheat cache
|
||||
c1 = Post.connection.schema_cache.columns('posts')
|
||||
|
@ -1,4 +1,5 @@
|
||||
require 'cases/helper'
|
||||
require 'models/author'
|
||||
require 'models/company'
|
||||
require 'models/person'
|
||||
require 'models/post'
|
||||
@ -55,6 +56,53 @@ def test_class_without_store_full_sti_class_returns_demodulized_name
|
||||
end
|
||||
end
|
||||
|
||||
def test_compute_type_success
|
||||
assert_equal Author, ActiveRecord::Base.send(:compute_type, 'Author')
|
||||
end
|
||||
|
||||
def test_compute_type_nonexistent_constant
|
||||
e = assert_raises NameError do
|
||||
ActiveRecord::Base.send :compute_type, 'NonexistentModel'
|
||||
end
|
||||
assert_equal 'uninitialized constant ActiveRecord::Base::NonexistentModel', e.message
|
||||
assert_equal 'ActiveRecord::Base::NonexistentModel', e.name
|
||||
end
|
||||
|
||||
def test_compute_type_no_method_error
|
||||
ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise NoMethodError }) do
|
||||
assert_raises NoMethodError do
|
||||
ActiveRecord::Base.send :compute_type, 'InvalidModel'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_compute_type_on_undefined_method
|
||||
error = nil
|
||||
begin
|
||||
Class.new(Author) do
|
||||
alias_method :foo, :bar
|
||||
end
|
||||
rescue => e
|
||||
error = e
|
||||
end
|
||||
|
||||
ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise e }) do
|
||||
|
||||
exception = assert_raises NameError do
|
||||
ActiveRecord::Base.send :compute_type, 'InvalidModel'
|
||||
end
|
||||
assert_equal error.message, exception.message
|
||||
end
|
||||
end
|
||||
|
||||
def test_compute_type_argument_error
|
||||
ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise ArgumentError }) do
|
||||
assert_raises ArgumentError do
|
||||
ActiveRecord::Base.send :compute_type, 'InvalidModel'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_should_store_demodulized_class_name_with_store_full_sti_class_option_disabled
|
||||
without_store_full_sti_class do
|
||||
item = Namespaced::Company.new
|
||||
@ -77,6 +125,32 @@ def test_different_namespace_subclass_should_load_correctly_with_store_full_sti_
|
||||
end
|
||||
end
|
||||
|
||||
def test_descends_from_active_record
|
||||
assert !ActiveRecord::Base.descends_from_active_record?
|
||||
|
||||
# Abstract subclass of AR::Base.
|
||||
assert LoosePerson.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of an abstract class.
|
||||
assert LooseDescendant.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of AR::Base.
|
||||
assert TightPerson.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of a concrete class but has no type column.
|
||||
assert TightDescendant.descends_from_active_record?
|
||||
|
||||
# Concrete subclass of AR::Base.
|
||||
assert Post.descends_from_active_record?
|
||||
|
||||
# Abstract subclass of a concrete class which has a type column.
|
||||
# This is pathological, as you'll never have Sub < Abstract < Concrete.
|
||||
assert !StiPost.descends_from_active_record?
|
||||
|
||||
# Concrete subclasses an abstract class which has a type column.
|
||||
assert !SubStiPost.descends_from_active_record?
|
||||
end
|
||||
|
||||
def test_company_descends_from_active_record
|
||||
assert !ActiveRecord::Base.descends_from_active_record?
|
||||
assert AbstractCompany.descends_from_active_record?, 'AbstractCompany should descend from ActiveRecord::Base'
|
||||
@ -84,6 +158,12 @@ def test_company_descends_from_active_record
|
||||
assert !Class.new(Company).descends_from_active_record?, 'Company subclass should not descend from ActiveRecord::Base'
|
||||
end
|
||||
|
||||
def test_abstract_class
|
||||
assert !ActiveRecord::Base.abstract_class?
|
||||
assert LoosePerson.abstract_class?
|
||||
assert !LooseDescendant.abstract_class?
|
||||
end
|
||||
|
||||
def test_inheritance_base_class
|
||||
assert_equal Post, Post.base_class
|
||||
assert_equal Post, SpecialPost.base_class
|
||||
@ -223,7 +303,6 @@ def test_new_with_unrelated_namespaced_type
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_new_with_complex_inheritance
|
||||
assert_nothing_raised { Client.new(type: 'VerySpecialClient') }
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user