pagination.rb 1.58 KB
class Test::Unit::TestCase
  # Example:
  #  context "a GET to index signed in as admin" do
  #    setup do
  #      sign_in_as Factory(:admin_user)
  #      get :index
  #    end
  #    should_paginate_collection :users
  #    should_display_pagination
  #  end
  def self.should_paginate_collection(collection_name)
    should "paginate #{collection_name}" do
      assert collection = assigns(collection_name),
        "Controller isn't assigning to @#{collection_name.to_s}."
      assert_kind_of WillPaginate::Collection, collection,
        "@#{collection_name.to_s} isn't a WillPaginate collection."
    end
  end

  def self.should_display_pagination
    should "display pagination" do
      assert_select "div.pagination", { :minimum => 1 },
        "View isn't displaying pagination. Add <%= will_paginate @collection %>."
    end
  end

  # Example:
  #  context "a GET to index not signed in as admin" do
  #    setup { get :index }
  #    should_not_paginate_collection :users
  #    should_not_display_pagination
  #  end
  def self.should_not_paginate_collection(collection_name)
    should "not paginate #{collection_name}" do
      assert collection = assigns(collection_name),
        "Controller isn't assigning to @#{collection_name.to_s}."
      assert_not_equal WillPaginate::Collection, collection.class,
        "@#{collection_name.to_s} is a WillPaginate collection."
    end
  end

  def self.should_not_display_pagination
    should "not display pagination" do
      assert_select "div.pagination", { :count => 0 },
        "View is displaying pagination. Check your logic."
    end
  end
end