Skip to content

Commit

Permalink
Added cucumber/selenium test for github issue #7
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastiandeutsch committed Dec 3, 2009
1 parent a3729dd commit 7934889
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 0 deletions.
56 changes: 56 additions & 0 deletions features/env.rb.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# IMPORTANT: This file was generated by Cucumber 0.4.4
# Edit at your own peril - it's recommended to regenerate this file
# in the future when you upgrade to a newer version of Cucumber.
# Consider adding your own code to a new file instead of editing this one.

Before do
Fixtures.reset_cache
fixtures_folder = File.join(RAILS_ROOT, 'db', 'fixtures')
fixtures = Dir[File.join(fixtures_folder, '*.yml')].map {|f| File.basename(f, '.yml') }
Fixtures.create_fixtures(fixtures_folder, fixtures)
end

# Sets up the Rails environment for Cucumber
# ENV["RAILS_ENV"] ||= "cucumber"
ENV["RAILS_ENV"] = "cucumber"

require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
require 'cucumber/rails/world'

# If you set this to true, each scenario will run in a database transaction.
# You can still turn off transactions on a per-scenario basis, simply tagging
# a feature or scenario with the @no-txn tag.
#
# If you set this to false, transactions will be off for all scenarios,
# regardless of whether you use @no-txn or not.
#
# Beware that turning transactions off will leave data in your database
# after each scenario, which can lead to hard-to-debug failures in
# subsequent scenarios. If you do this, we recommend you create a Before
# block that will explicitly put your database in a known state.
Cucumber::Rails::World.use_transactional_fixtures = true

# If you set this to false, any error raised from within your app will bubble
# up to your step definition and out to cucumber unless you catch it somewhere
# on the way. You can make Rails rescue errors and render error pages on a
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
#
# If you set this to true, Rails will rescue all errors and render error
# pages, more or less in the same way your application would behave in the
# default production environment. It's not recommended to do this for all
# of your scenarios, as this makes it hard to discover errors in your application.
ActionController::Base.allow_rescue = false

require 'cucumber'
# Comment out the next line if you don't want Cucumber Unicode support
require 'cucumber/formatter/unicode'
require 'cucumber/webrat/element_locator' # Lets you do table.diff!(element_at('#my_table_or_dl_or_ul_or_ol').to_table)
require 'cucumber/rails/rspec'

require 'webrat'
require 'webrat/core/matchers'
Webrat.configure do |config|
config.mode = :selenium
config.open_error_files = false # Set to true if you want error pages to pop up in the browser
end

13 changes: 13 additions & 0 deletions features/github_issue7.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Feature: Crashing when loading deprecated cookies
When I delete an active category
as an administrator
vrame should not crash

Scenario: The homepage
Given I am on vrame home
When I sign-in
And I follow "Neue Kategorie"
And I add the category "Navigation"
And I select the category "navigation"
And I delete the category "navigation"
Then I should see "Die Kategorie wurde gelöscht"
30 changes: 30 additions & 0 deletions features/paths.rb.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
module NavigationHelpers
# Maps a name to a path. Used by the
#
# When /^I go to (.+)$/ do |page_name|
#
# step definition in webrat_steps.rb
#
def path_to(page_name)
case page_name

when /the home\s?page/
'/'

when /vrame home/
vrame_root_path

# Add more mappings here.
# Here is a more fancy example:
#
# when /^(.*)'s profile page$/i
# user_profile_path(User.find_by_login($1))

else
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
end

World(NavigationHelpers)
28 changes: 28 additions & 0 deletions features/step_definitions/github_issue7_steps.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
When /^I sign\-in$/ do
# debugger

fill_in('user_session_email', :with => '[email protected]')
fill_in('user_session_password', :with => 'vrame')

click_button('user_session_submit')
selenium.wait_for_page_to_load
end

When /^I add the category "([^\"]*)"$/ do |title|
click_link 'new-category'
selenium.wait_for_page_to_load

fill_in('category_title', :with => title)
click_button 'category_submit'
selenium.wait_for_page_to_load
end

When /^I select the category "([^\"]*)"$/ do |friendly_id|
click_link "select-category-#{friendly_id}"
selenium.wait_for_condition('selenium.browserbot.getCurrentWindow().jQuery.active == 0', 5000)
end

When /^I delete the category "([^\"]*)"$/ do |friendly_id|
click_link "delete-category-#{friendly_id}"
selenium.wait_for_page_to_load
end

0 comments on commit 7934889

Please sign in to comment.