Sha256: 109aee59546f01a851e6e60c2d7e5ce50881ea59cf60da243cb6b0002398a62a

Contents?: true

Size: 869 Bytes

Versions: 11

Compression:

Stored size: 869 Bytes

Contents

require 'cases/helper'

class PreloadTest < ActiveRecord::CountLoader::TestCase
  def setup
    tweets_count.times.map do |index|
      tweet = Tweet.create
      index.times { Favorite.create(tweet: tweet) }
    end
  end

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

  def tweets_count
    3
  end

  def test_preload_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(2) { Tweet.preload(:favorites_count).map(&:favorites_count) }
  end

  def test_preloaded_count_loader_counts_properly
    expected = Tweet.all.map { |t| t.favorites.count }
    assert_equal(Tweet.all.map(&:favorites_count), expected)
    assert_equal(Tweet.preload(:favorites_count).map(&:favorites_count), expected)
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
activerecord-precount-0.5.0 test/cases/associations/preload_test.rb
activerecord-precount-0.4.3 test/cases/associations/preload_test.rb
activerecord-precount-0.4.2 test/cases/associations/preload_test.rb
activerecord-precount-0.4.1 test/cases/associations/preload_test.rb
activerecord-precount-0.4.0 test/cases/associations/preload_test.rb
activerecord-count_loader-0.3.3 test/cases/associations/preload_test.rb
activerecord-count_loader-0.3.2 test/cases/associations/preload_test.rb
activerecord-count_loader-0.3.1 test/cases/associations/preload_test.rb
activerecord-count_loader-0.3.0 test/cases/associations/preload_test.rb
activerecord-count_loader-0.2.2 test/cases/associations/preload_test.rb
activerecord-count_loader-0.2.1 test/cases/associations/preload_test.rb