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

2012-03-09 Thread Zach Dennis
On Thu, Mar 8, 2012 at 10:38 PM, David Chelimsky dchelim...@gmail.com wrote:
 On Thu, Mar 8, 2012 at 5:15 PM, S Ahmed sahmed1...@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

Where #sign_in_as and #login_as in David's example should be the same method.

Zach


 HTH,
 David
 ___
 rspec-users mailing list
 rspec-users@rubyforge.org
 http://rubyforge.org/mailman/listinfo/rspec-users



-- 

--
@zachdennis
http://www.continuousthinking.com
http://www.mutuallyhuman.com
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


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

2012-03-09 Thread Sam Goldman
We have used shared contexts to achieve this.
https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-context

For controller specs using devise, assuming we have let(:current_user)
in the test including this shared context:

shared_context :signed_in do
  before do
sign_in(current_user)
controller.stub!(:current_user).and_return(current_user)
  end
end

On Thu, Mar 8, 2012 at 6:15 PM, S Ahmed sahmed1...@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?



 ___
 rspec-users mailing list
 rspec-users@rubyforge.org
 http://rubyforge.org/mailman/listinfo/rspec-users
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


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

2012-03-09 Thread S Ahmed
Could I somehow add the method to rspec so its available everywhere?

What would the class be so inside the describe block my method will be
available w/o having to include it?

I've seen some people open up the class and add methods to it 

class Test::Unit::TestCase


On Fri, Mar 9, 2012 at 10:24 AM, Sam Goldman samwgold...@gmail.com wrote:

 We have used shared contexts to achieve this.

 https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-context

 For controller specs using devise, assuming we have let(:current_user)
 in the test including this shared context:

 shared_context :signed_in do
  before do
sign_in(current_user)
controller.stub!(:current_user).and_return(current_user)
  end
 end

 On Thu, Mar 8, 2012 at 6:15 PM, S Ahmed sahmed1...@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?
 
 
 
  ___
  rspec-users mailing list
  rspec-users@rubyforge.org
  http://rubyforge.org/mailman/listinfo/rspec-users
 ___
 rspec-users mailing list
 rspec-users@rubyforge.org
 http://rubyforge.org/mailman/listinfo/rspec-users

___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

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

2012-03-08 Thread David Chelimsky
On Thu, Mar 8, 2012 at 5:15 PM, S Ahmed sahmed1...@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
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users