3 class Virus
< ActiveRecord
::Base
6 class Octopus
< ActiveRecord
::Base
9 class Pass
< ActiveRecord
::Base
12 class Bus
< ActiveRecord
::Base
15 class Mess
< ActiveRecord
::Base
16 has_and_belongs_to_many
:crises
18 class Crisis
< ActiveRecord
::Base
19 has_and_belongs_to_many
:messes
20 has_many
:analyses, :dependent => :destroy
21 has_many
:successes, :through => :analyses
22 has_many
:dresses, :dependent => :destroy
23 has_many
:compresses, :through => :dresses
25 class Analysis
< ActiveRecord
::Base
29 class Success
< ActiveRecord
::Base
30 has_many
:analyses, :dependent => :destroy
31 has_many
:crises, :through => :analyses
33 class Dress
< ActiveRecord
::Base
37 class Compress
< ActiveRecord
::Base
42 class EagerSingularizationTest
< ActiveRecord
::TestCase
45 if ActiveRecord
::Base.connection
.supports_migrations
?
46 ActiveRecord
::Base.connection
.create_table
:viri do |t
|
47 t
.column
:octopus_id, :integer
48 t
.column
:species, :string
50 ActiveRecord
::Base.connection
.create_table
:octopi do |t
|
51 t
.column
:species, :string
53 ActiveRecord
::Base.connection
.create_table
:passes do |t
|
54 t
.column
:bus_id, :integer
55 t
.column
:rides, :integer
57 ActiveRecord
::Base.connection
.create_table
:buses do |t
|
58 t
.column
:name, :string
60 ActiveRecord
::Base.connection
.create_table
:crises_messes, :id => false do |t
|
61 t
.column
:crisis_id, :integer
62 t
.column
:mess_id, :integer
64 ActiveRecord
::Base.connection
.create_table
:messes do |t
|
65 t
.column
:name, :string
67 ActiveRecord
::Base.connection
.create_table
:crises do |t
|
68 t
.column
:name, :string
70 ActiveRecord
::Base.connection
.create_table
:successes do |t
|
71 t
.column
:name, :string
73 ActiveRecord
::Base.connection
.create_table
:analyses do |t
|
74 t
.column
:crisis_id, :integer
75 t
.column
:success_id, :integer
77 ActiveRecord
::Base.connection
.create_table
:dresses do |t
|
78 t
.column
:crisis_id, :integer
80 ActiveRecord
::Base.connection
.create_table
:compresses do |t
|
81 t
.column
:dress_id, :integer
90 ActiveRecord
::Base.connection
.drop_table
:viri
91 ActiveRecord
::Base.connection
.drop_table
:octopi
92 ActiveRecord
::Base.connection
.drop_table
:passes
93 ActiveRecord
::Base.connection
.drop_table
:buses
94 ActiveRecord
::Base.connection
.drop_table
:crises_messes
95 ActiveRecord
::Base.connection
.drop_table
:messes
96 ActiveRecord
::Base.connection
.drop_table
:crises
97 ActiveRecord
::Base.connection
.drop_table
:successes
98 ActiveRecord
::Base.connection
.drop_table
:analyses
99 ActiveRecord
::Base.connection
.drop_table
:dresses
100 ActiveRecord
::Base.connection
.drop_table
:compresses
103 def test_eager_no_extra_singularization_belongs_to
104 return unless @have_tables
105 assert_nothing_raised
do
106 Virus
.find(:all, :include => :octopus)
110 def test_eager_no_extra_singularization_has_one
111 return unless @have_tables
112 assert_nothing_raised
do
113 Octopus
.find(:all, :include => :virus)
117 def test_eager_no_extra_singularization_has_many
118 return unless @have_tables
119 assert_nothing_raised
do
120 Bus
.find(:all, :include => :passes)
124 def test_eager_no_extra_singularization_has_and_belongs_to_many
125 return unless @have_tables
126 assert_nothing_raised
do
127 Crisis
.find(:all, :include => :messes)
128 Mess
.find(:all, :include => :crises)
132 def test_eager_no_extra_singularization_has_many_through_belongs_to
133 return unless @have_tables
134 assert_nothing_raised
do
135 Crisis
.find(:all, :include => :successes)
139 def test_eager_no_extra_singularization_has_many_through_has_many
140 return unless @have_tables
141 assert_nothing_raised
do
142 Crisis
.find(:all, :include => :compresses)