When I ran ‘rake spec’, it generated a spec_helper.rb with the following
line:
require ‘webrat/integrations/rspec-rails’
It seems that this file changed to webrat/rspec-rails on last webrat
gem.
But changing to “require ‘webrat/rspec-rails’” doesn’t seem to work.
What solved for me was following webrat documentation:
Webrat.configure do |config|
config.mode = :rails
end
And including “config.gem ‘webrat’” in environments/test.rb.
‘spec’ rake task should probably be updated to reflect current webrat…
Anyway, I was wondering if it is possible to get the Rails session from
the specs and resetting it, for instance.
I’ve used another approach in my tests, but I think it would be
interesting to evaluate the session state in some tests… Is it
possible?
Here is what I’m doing currently:
describe UsersController do
context ‘when accessing protected area’ do
before(:each) do
@user = User.make :password => ‘secret’
end
it 'should authenticate with login or e-mail' do
[@user.login, @user.email].each do |login_or_email|
session[‘user’] = nil
visit '/'
click_link I18n.t(:'user.login')
fill_in 'login', :with => login_or_email
fill_in 'password', :with => 'secret'
click_button I18n.t(:'user.login')
contain @user.name
click_link I18n.t :'user.logout'
session[‘user’].should == @user.id
end
visit '/'
click_link I18n.t(:'user.login')
fill_in 'login', :with => @user.login
fill_in 'password', :with => 'wrong'
click_button I18n.t(:'user.login')
assert_not_contain @user.name
session[‘user’].should be_nil
end
end
end
Thanks,
Rodrigo.