diff options
| -rw-r--r-- | activerecord/test/cases/associations/eager_load_nested_include_test.rb | 42 | 
1 files changed, 30 insertions, 12 deletions
| diff --git a/activerecord/test/cases/associations/eager_load_nested_include_test.rb b/activerecord/test/cases/associations/eager_load_nested_include_test.rb index 80cfc84b32..12dec5ccd1 100644 --- a/activerecord/test/cases/associations/eager_load_nested_include_test.rb +++ b/activerecord/test/cases/associations/eager_load_nested_include_test.rb @@ -1,5 +1,20 @@  require 'cases/helper' +module Remembered +  def self.included(base) +    base.extend ClassMethods +    base.class_eval do +      after_create :remember +    protected +      def remember; self.class.remembered << self; end +    end +  end + +  module ClassMethods +    def remembered; @@remembered ||= []; end +    def rand; @@remembered.rand; end +  end +end  class ShapeExpression < ActiveRecord::Base    belongs_to :shape, :polymorphic => true @@ -8,26 +23,33 @@ end  class Circle < ActiveRecord::Base    has_many :shape_expressions, :as => :shape +  include Remembered  end  class Square < ActiveRecord::Base    has_many :shape_expressions, :as => :shape +  include Remembered  end  class Triangle < ActiveRecord::Base    has_many :shape_expressions, :as => :shape +  include Remembered  end  class PaintColor  < ActiveRecord::Base    has_many   :shape_expressions, :as => :paint    belongs_to :non_poly, :foreign_key => "non_poly_one_id", :class_name => "NonPolyOne" +  include Remembered  end  class PaintTexture < ActiveRecord::Base    has_many   :shape_expressions, :as => :paint    belongs_to :non_poly, :foreign_key => "non_poly_two_id", :class_name => "NonPolyTwo" +  include Remembered  end  class NonPolyOne < ActiveRecord::Base    has_many :paint_colors +  include Remembered  end  class NonPolyTwo < ActiveRecord::Base    has_many :paint_textures +  include Remembered  end @@ -49,23 +71,19 @@ class EagerLoadPolyAssocsTest < ActiveRecord::TestCase    end -  # meant to be supplied as an ID, never returns 0 -  def rand_simple -    val = (NUM_SIMPLE_OBJS * rand).round -    val == 0 ? 1 : val -  end -    def generate_test_object_graphs      1.upto(NUM_SIMPLE_OBJS) do        [Circle, Square, Triangle, NonPolyOne, NonPolyTwo].map(&:create!)      end -    1.upto(NUM_SIMPLE_OBJS) do |i| -      PaintColor.create!(:non_poly_one_id => rand_simple) -      PaintTexture.create!(:non_poly_two_id => rand_simple) +    1.upto(NUM_SIMPLE_OBJS) do +      PaintColor.create!(:non_poly_one_id => NonPolyOne.rand.id) +      PaintTexture.create!(:non_poly_two_id => NonPolyTwo.rand.id)      end -    1.upto(NUM_SHAPE_EXPRESSIONS) do |i| -      ShapeExpression.create!(:shape_type => [Circle, Square, Triangle].rand.to_s, :shape_id => rand_simple, -                              :paint_type => [PaintColor, PaintTexture].rand.to_s, :paint_id => rand_simple) +    1.upto(NUM_SHAPE_EXPRESSIONS) do +      shape_type = [Circle, Square, Triangle].rand +      paint_type = [PaintColor, PaintTexture].rand +      ShapeExpression.create!(:shape_type => shape_type.to_s, :shape_id => shape_type.rand.id, +                              :paint_type => paint_type.to_s, :paint_id => paint_type.rand.id)      end    end | 
