Sha256: 4ff313b7f1ccd811e5ea87104f8143bddb463bc6baeb752ddf2cb9a39673c84b

Contents?: true

Size: 1.39 KB

Versions: 6

Compression:

Stored size: 1.39 KB

Contents

require 'cases/helper'

class EagerLoadTest < ActiveRecord::CountLoader::TestCase
  def setup
    tweets_count.times do |i|
      tweet = Tweet.create
      i.times do |j|
        Favorite.create(tweet: tweet, user_id: j + 1)
      end
    end
  end

  def teardown
    [Tweet, Favorite].each(&:delete_all)
  end

  def tweets_count
    3
  end

  def test_eager_load_does_not_execute_n_1_queries
    assert_queries(1 + tweets_count) { Tweet.all.map { |t| t.favorites.count } }
    assert_queries(1 + tweets_count) { Tweet.all.map(&:favorites_count) }
    assert_queries(1) { Tweet.eager_load(:favorites_count).map(&:favorites_count) }
  end

  def test_eager_loaded_count_loader_counts_properly
    expected = Tweet.order(id: :asc).map { |t| t.favorites.count }
    assert_equal(expected, Tweet.order(id: :asc).map(&:favorites_count))
    assert_equal(expected, Tweet.order(id: :asc).eager_load(:favorites_count).map { |t| t.favorites.count })
    assert_equal(expected, Tweet.order(id: :asc).eager_load(:favorites_count).map(&:favorites_count))
  end

  def test_eager_loaded_count_loader_with_scope_counts_properly
    expected = Tweet.order(id: :asc).map { |t| t.my_favorites.count }
    assert_equal(expected, Tweet.order(id: :asc).eager_load(:my_favorites_count).map { |t| t.my_favorites.count })
    assert_equal(expected, Tweet.order(id: :asc).eager_load(:my_favorites_count).map(&:my_favorites_count))
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
activerecord-precount-0.7.0 test/cases/associations/eager_load_test.rb
activerecord-precount-0.7.0.beta1 test/cases/associations/eager_load_test.rb
activerecord-precount-0.6.3 test/cases/associations/eager_load_test.rb
activerecord-precount-0.6.2 test/cases/associations/eager_load_test.rb
activerecord-precount-0.6.1 test/cases/associations/eager_load_test.rb
activerecord-precount-0.6.0 test/cases/associations/eager_load_test.rb