[rspec-users] how to refactor signin process for re-use?

David Chelimsky dchelimsky at gmail.com
Fri Mar 9 03:38:31 UTC 2012


On Thu, Mar 8, 2012 at 5:15 PM, S Ahmed <sahmed1020 at gmail.com> wrote:
> In my authenticate_pages.spec (requests) I do the following to test if the
> signin worked:
>
>  describe "with valid information" do
>       #let(:account) { FactoryGirl.create(:account) }
>       let(:user) { FactoryGirl.create(:user) }
>
>       before do
>         fill_in "Email", with: user.email
>         fill_in "Password", with: user.password
>         click_button "Sign in"
>       end
>
>       it { should have_link('Sign out', href: signout_path) }
>       it { should_not have_link('Sign in', href: signin_path) }
>     end
>
>
> Now in my other controllers that assume the user is signed in, how can I
> refactor this and put it somewhere that I can just call to make the user
> signed in so I can test pages that assume the user is already signed in?

Here's one pattern I've seen (and used):

def login_as(user)
  fill_in "Email", with: user.email
  fill_in "Password", with: user.password
  click_button "Sign in"
end

describe "things" do
  before { sign_in_as(FactoryGirl.create:(user) }
  describe "GET /thing" do
    # ...
  end
end

HTH,
David


More information about the rspec-users mailing list