relation_test.rb 1.15 KB
require_relative "test_helper"

class RelationTest < Minitest::Test
  def test_loaded
    Product.search_index.refresh
    products = Product.search("*")
    refute products.loaded?
    assert_equal 0, products.count
    assert products.loaded?
    error = assert_raises(Searchkick::Error) do
      products.limit!(2)
    end
    assert_equal "Relation loaded", error.message
  end

  def test_clone
    products = Product.search("*")
    assert_equal 10, products.limit(10).limit_value
    assert_equal 10000, products.limit_value
  end

  def test_only
    assert_equal 10, Product.search("*").limit(10).only(:limit).limit_value
  end

  def test_except
    assert_equal 10000, Product.search("*").limit(10).except(:limit).limit_value
  end

  # TODO call pluck on Active Record query
  # currently uses pluck from Active Support enumerable
  def test_pluck
    store_names ["Product A", "Product B"]
    assert_equal ["Product A", "Product B"], Product.search("product").pluck(:name).sort
  end

  # TODO uncomment in 6.0
  # def test_to_yaml
  #   store_names ["Product A", "Product B"]
  #   assert_equal Product.all.to_yaml, Product.search("product").to_yaml
  # end
end