Sha256: d9d8f29533a673a4abbf7be75c7cb64f07b26ee767d39331026aba1d18aceb1c

Contents?: true

Size: 1.63 KB

Versions: 13

Compression:

Stored size: 1.63 KB

Contents

require File.expand_path("helper", File.dirname(__FILE__))

class FindSomeTest < ActiveSupport::TestCase
  fixtures :blogs, :posts

  def setup
    @post1 = Post.first
    @post2 = Post.last
    Post.find(@post1.id, @post2.id)
    assert Kasket.cache.read(@post1.kasket_key)
    assert Kasket.cache.read(@post2.kasket_key)
  end

  should "use cache for find(id, id) calls" do
    Post.connection.expects(:select_all).never
    Post.find(@post1.id, @post2.id)
  end

  should "cache when found using find(id, id) calls" do
    Kasket.cache.delete(@post1.kasket_key)
    Kasket.cache.delete(@post2.kasket_key)

    Post.find(@post1.id, @post2.id)

    assert Kasket.cache.read(@post1.kasket_key)
    assert Kasket.cache.read(@post2.kasket_key)
  end

  should "only lookup the records that are not in the cache" do
    Kasket.cache.delete(@post2.kasket_key)

    # has to lookup post2 via db
    Post.expects(:find_by_sql_without_kasket).returns([@post2])
    found_posts = Post.find(@post1.id, @post2.id)
    assert_equal [@post1, @post2].map(&:id).sort, found_posts.map(&:id).sort

    # now all are cached
    Post.expects(:find_by_sql_without_kasket).never
    found_posts = Post.find(@post1.id, @post2.id)
    assert_equal [@post1, @post2].map(&:id).sort, found_posts.map(&:id).sort
  end

  context "unfound" do
    should "ignore unfound when using find_all_by_id" do
      found_posts = Post.find_all_by_id([@post1.id, 1231232])
      assert_equal [@post1.id], found_posts.map(&:id)
    end

    should "not ignore unfound when using find" do
      assert_raise ActiveRecord::RecordNotFound do
        Post.find(@post1.id, 1231232)
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
kasket-3.1.5 test/find_some_test.rb
kasket-3.1.4 test/find_some_test.rb
kasket-3.1.3 test/find_some_test.rb
kasket-3.1.2 test/find_some_test.rb
kasket-3.1.1 test/find_some_test.rb
kasket-3.1.0 test/find_some_test.rb
kasket-3.0.0 test/find_some_test.rb
kasket-2.2.1 test/find_some_test.rb
kasket-2.2.0 test/find_some_test.rb
kasket-2.1.2 test/find_some_test.rb
kasket-2.1.1 test/find_some_test.rb
kasket-2.1.0 test/find_some_test.rb
kasket-1.0.4 test/find_some_test.rb