title: RSpec Request Spec Testing Model Attribute
body: <p>I have the following Rspec file:</p>
  
  <pre><code>describe "Cart" do
    before do
      @user = FactoryGirl.create(:user)
      @cart = @user.carts.create!
    end
  
  describe "using stripe" do
    before do
      @sport = FactoryGirl.create(:sport)
    end
  
    describe "user adds sport to cart" do
      before do
        visit sports_path
        click_link "Add to Cart"
      end
  
      it "should be checkout page" do
        page.should have_content("Total")
      end
  
      describe "user clicks checkout" do
        before do
          click_button "Checkout"
        end
  
        it "should redirect user to sign in form" do
          page.should have_selector('h2', text: "Sign in")
        end
  
        describe "user logs on" do
          before do
            fill_in "Email", with: @user.email
            fill_in "Password", with: @user.password
            click_button "Sign in"
          end
  
          it "should be on checkout page" do
            page.should have_selector('h2', text: "Checkout")
          end
  
          describe "user fills in form", js: true, driver: :webkit do
  
            describe "everything valid" do
              before do
                fill_in "card-number", with: 4242424242424242
                fill_in "card-expiry-month", with: 12
                fill_in "card-expiry-year", with: 2015
                fill_in "card-cvc", with: 123
                click_button "Submit Payment"
              end
  
              it "should redirect to confirmation page" do
                page.should have_content("Confirmation")
              end
  
              it "should have the total price listed" do
                page.should have_content(@cart.total_price)
              end
  
              it "should create a stripe customer and save that to the stripe_customer_id of the user" do
                @user.stripe_customer_id.should_not be_nil
              end
  
              describe "should allow user authorize charge" do
                before do
                  click_button "Confirm and Purchase"
                end
  
                it "should be back to sports page" do
                  page.should have_content("Select a Sport")
                end
              end
  
  
            end
          end
        end
      end
    end
  end
  </code></pre>
  
  <p>So a user (created by FactoryGirl) buys something from my site.</p>
  
  <p>The <code>should create a stripe customer and save that to the stripe_customer_id of the user</code> is failing (<code>@user.stripe_customer_id</code> is <code>nil</code>).</p>
  
  <p>The controller has this method:</p>
  
  <pre><code>def confirmation
    @cart = current_cart
    customer = Stripe::Customer.create(description: current_user.email, card: params[:stripeToken])
    current_user.update_attributes(stripe_customer_id: customer.id)
  end
  </code></pre>
  
  <p>I know the current_user (the same user from FactoryGirl for the tests) is being updated with the <code>stripe_customer_id</code> because the other tests are working.</p>
  
  <p>I assumed I would have to update the model somehow, because I was directly affecting the database (@user and current_user reference the same db entry, but are not the same object).  So I tried calling <code>@user.reload</code> before checking if the <code>stripe_customer_id</code> was nil, but the test still failed.</p>
  
  <p>2 questions: Should I even be checking model attributes in a request spec? And, is there a way I can get the failing test to pass?</p>
  
  <p>Thanks</p>