I am using devise
as an authentication system and created a scenario.
Scenario: Home page have a login page
When I go to the home page
And user is not logged in
Then I should see "Sign In"
for step definition
When /^user is not logged in$/ do
signed_in? == false
end
i had also added Devise helpers to the cucumber world.
World(Devise::Controllers::Helpers)
and cucumber is generating this error:
And user is not logged in # features/step_definitions/web_steps.rb:260
wrong number of arguments (0 for 1) (ArgumentError)
./features/step_definitions/web_steps.rb:261:in `/^user is not logged in$/'
features/manage_home_page.feature:13:in `And user is not logged in'
Why is it generating and how to fix it?
the definition of signed_in?
method is
# Return true if the given scope is signed in session. If no scope given, return
# true if any scope is signed in. Does not run authentication hooks.
def signed_in?(scope=nil)
[ scope || Devise.mappings.keys ].flatten.any? do |scope|
warden.authenticate?(:scope => scope)
end
end
its defined in Devise and i added that helper to cucumber by writing this code World(Devise::Controllers::Helpers)
into cucumber's paths.rb file.
Try this instead
When /^user is not logged in$/ do
user_signed_in?.should be_false
end
UPDATED I think you need to do something like this
When /^user is not logged in$/ do |user|
#check here user not logged in
end
or You could try modifying your feature to
Scenario: Home page has a login page
Given I am on the home page
And I am not logged in
Then I should see "Sign In"
Then in the steps
Given /^user is not logged in$/ do
visit('users/sign_out') # this will ensure that the user is not logged in
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With