I'm new to RSpec, Rails, and Ruby. I'm following the Rails Tutorial. I was 
going over some RSpec code and go wanted some clarification:

describe "User pages" do  
  subject { page }

  describe "sign up" do
   describe "with valid information" do
    before do
     fill_in "Name",         with: "Mickey Mouse"
     fill_in "Email",        with: "mic...@disney.com"
     fill_in "Password",     with: "m1ck3y"
     fill_in "Confirmation", with: "m1ck3y"
    end

    it "should create a user" do # block 1
     expect { click_button "Sign up" }.to change(User, :count).by(1)
    end

    describe "after saving the user" do #block 2
     before { click_button 'Sign up' }
     let(:user) { User.find_by_email('mic...@disney.com') }
     it { should have_selector('title', text: user.name) }
     it { should have_link('Sign out') }
    end
  end

Notice the "it 'should create a user'" block. Why doesn't the user we 
create in that block carry over to the next block? ("after saving the 
user")? Why is it necessary to write

before { click_button 'Sign up' } in order to test for the user? Shouldn't 
the user already exist as it was created in block 2?

I'm looking to understand the flow of events in RSpec.

Thanks!
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to