module ShouldaPaginationMacros # Example: # context "a GET to index logged in as admin" do # setup do # login_as_admin # 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 logged 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 class ActiveSupport::TestCase extend ShouldaPaginationMacros end