Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8008719
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 4, 20262026-06-04T18:13:32+00:00 2026-06-04T18:13:32+00:00

Doing Michael Hartl’s Rails Tutorial, on chapter 10, section 5, exercise 2 . I

  • 0

Doing Michael Hartl’s Rails Tutorial, on chapter 10, section 5, exercise 2. I am – very simply – trying to write tests to ensure that a pagination div appears on a couple pages using the will_paginate gem (this seems to be Hartl’s preferred method of testing whether pagination works), but when I add the following code..

subject { page }
.
.
.
it { should have_selector('div.pagination') }

..it returns..

  1) UserPages profile page 
     Failure/Error: it { should have_selector('div.pagination') }
       expected css "div.pagination" to return something

This is especially odd because in this particular _spec file, this same Rspec code is passing in some tests and failing in others (I’ll highlight this below). Also the pagination div is present in the source code in my browser, and of course it’s working fine.

Because it fails in some places and not others, I got to assuming that this is somehow a “scope”- or assignment-type issue related to will_paginate – you see, for the failed tests, the content being paginated is actually part of a “Microposts” controller, but the pages/views being tested are handled by the “Users” controller. For the passing tests, the view and controller are both “Users”.

Could that be the problem? It’s also possible that my FactoryGirl setup/invocation is broken and not triggering the pagination code in test for some reason. I’m a Rails n00b – and actually totally new to programming – so thanks ya’ll. 🙂

(also, p.s., how do I make my code colorful and pretty on SO?)

/spec/requests/user_pages_spec.rb

require 'spec_helper' # Omitted from below - I don't think this is relevant.

describe "UserPages" do

  subject { page }

  describe "index" do # This is the block where it is PASSING..

    let(:user) { FactoryGirl.create(:user) } # I'll include my /spec/factories.rb file below

    before(:all)  { 30.times { FactoryGirl.create(:user) } }
    after(:all)   { User.delete_all } # I'll omit my /app/models/user.rb file - I don't think it's relevant to the problem

    before do
      valid_signin user # References /spec/support/utilities.rb to sign in as a valid user, but I will omit this since this is part of the working tests
      visit users_path # This is /app/views/users/index.html.erb - this is where SUCCESSFUL pagination testing occurs
    end

    describe "pagination" do

      it { should have_selector('div.pagination') } #PASS!! As I would expect
  .
  .
  .
  end

  describe "profile page" do
    let(:user) { FactoryGirl.create(:user) }
    let!(:m1) { FactoryGirl.create(:micropost, user: user, content: "Awesome")} # Used for other tests
    let!(:m2) { FactoryGirl.create(:micropost, user: user, content: "Sauce") } # Used for other tests

    before(:all)  { 30.times { FactoryGirl.create(:micropost) } } # Is this constructed properly? Perhaps the posts are not created, and that's why the failure to render the paginate code in test.
    after(:all)   { user.microposts.delete_all } # I have tested with and without this line of code - it fails both ways.

    before { visit user_path(user) } # /app/views/users/show.html.erb

    it { should have_selector('div.pagination') } # FAIL!!! This is the line in question that generates the error above.
    .
   .
  .
 .
end

/app/views/users/index.html.erb (pagination working on site, test working also)

<%= provide(:title, 'All users') %>
<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
  <%= render @users %>
</ul>

<%= will_paginate %>

/app/views/users/show.html.erb (pagination working on site, test failing)

<% provide(:title, @user.name) %>
<div class="row">
.
.
.
  <div class="span8">
    <% if @user.microposts.any? %>
      <h3>Microposts (<%= @user.microposts.count %>)</h3>
      <ol class="microposts">
        <%= render @microposts %>
      </ol>
      <%= will_paginate @microposts %> # Here is where I declare that pagination should occur on @microposts, NOT @users
    <% end %>
  </div>
</div>

/spec/requests/factories.rb

FactoryGirl.define do
  factory :user do
    sequence(:name)   { |n| "Person #{n}" }
    sequence(:email)  { |n| "person_#{n}@example.com" }
    password  "secret"
    password_confirmation "secret"

    factory :admin do
      admin true
    end
  end

  factory :micropost do
    content "Lorem ipsum"
    user
  end
end

/Gemfile

source 'https://rubygems.org'

gem 'rails', '3.2.3'
gem 'pg', '0.12.2'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'

group :development do
    gem 'guard-rspec', '0.5.5'
    gem 'annotate', '~> 2.4.1.beta'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.4'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.0'

group :test, :development do
  gem 'rspec-rails', '2.9.0'
end

group :test do
    gem 'capybara', '1.1.2'
    gem 'rb-fsevent', '0.4.3.1', :require => false
    gem 'growl', '1.0.3'
    gem 'guard-spork', '0.3.2'
    gem 'spork', '0.9.0'
    gem 'factory_girl_rails', '1.4.0'
end

edit: found this article related to will_paginate and view testing, but don’t understand it honestly (probably due to the syntax).. could it be somehow related?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-04T18:13:33+00:00Added an answer on June 4, 2026 at 6:13 pm

    When you use:

    before(:all)  { 30.times { FactoryGirl.create(:user) } }
    

    You already have an user created so the total count goes up to 31 and so it paginates (pagination with will_paginate shows 30 records per page by default).

    Try creating 31 microposts instead of 30, it should pass.

    before(:each) { 31.times { FactoryGirl.create(:micropost, user: user) } }
    

    Edit: I forgot to pass the :user to the micropost Factory, it should work now (is the code I have on my tests and it passes)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am doing Michael Hartl's Rails Tutorial screencast + online book on Chapter 10,
Im doing Michael Hartl's excellent tutorial series on ruby on rails here: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book and
Currently doing the Ruby On Rails Tutorial by Michael Hartl, and am starting on
I'm running through Michael Hartl's Rails Tutorial . I'm trying to verify the title
I was doing chapter 8 of Ruby on Rails by Michael Hartl, I finished
I'm currently doing Michael Hardtl's Rails Tutorial and in chapter 7 there is a
In Michael Hartl's Ruby on Rails Tutorial, ch 7.2.3 , rspec is returns the
I'm following Michael Hartl's tutorial here and am trying to create an index of
In Michael Hartl's tutorial he has a module SessionsHelper , which has a method
I recently set up a new account with github. I'm following a Rails tutorial

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.