Skip to content

Instantly share code, notes, and snippets.

@josefrichter
Created June 26, 2010 21:12
Show Gist options
  • Save josefrichter/454343 to your computer and use it in GitHub Desktop.
Save josefrichter/454343 to your computer and use it in GitHub Desktop.
require 'machinist/mongoid'
require 'sham'
require 'faker'
Sham.define do
title { Faker::Lorem.words(5).join(' ') }
body { Faker::Lorem.paragraphs(3).join("\n\n") }
end
Suggestion.blueprint do
title { Sham.title }
body { Sham.body }
#votes
#features
end
Feature: Browse Suggestions
In order to browse suggestions
As a visitor
I want to see suggestions, features and votes
Scenario: List Suggestions
Given I am on the homepage
Then I should see "Listing suggestions"
And I should see "New suggestion"
Scenario: Add blank suggestion
Given I am on the homepage
When I follow "New suggestion"
And I press "Create Suggestion"
Then I should see "2 errors prohibited this document from being saved:"
Scenario: Show suggestion on homepage
Given a suggestion exists with title: "My suggestion"
When I am on the homepage
Then I should see "Myexample"
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
# It is recommended to regenerate this file in the future when you upgrade to a
# newer version of cucumber-rails. Consider adding your own code to a new file
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
# files.
ENV["RAILS_ENV"] ||= "test"
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
require 'cucumber/rails/rspec'
require 'cucumber/rails/world'
#require 'cucumber/rails/active_record'
require 'cucumber/web/tableish'
require 'capybara/rails'
require 'capybara/cucumber'
require 'capybara/session'
require 'cucumber/rails/capybara_javascript_emulation'
# Lets you click links with onclick javascript handlers without using @culerity or @javascript
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
# order to ease the transition to Capybara we set the default here. If you'd
# prefer to use XPath just remove this line and adjust any selectors in your
# steps to use the XPath syntax.
Capybara.default_selector = :css
# 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
# 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 are using Capybara,
# tagging with @culerity or @javascript will also turn transactions off.
#
# 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
# How to clean your database when transactions are turned off. See
# http://github.com/bmabey/database_cleaner for more info.
#if defined?(ActiveRecord::Base)
# begin
# require 'database_cleaner'
# require 'database_cleaner/cucumber'
# DatabaseCleaner.strategy = :truncation
# DatabaseCleaner.orm = 'data_mapper'
# rescue LoadError => ignore_if_database_cleaner_not_present
# puts "Error on cleaner"
# end
#end
Before do
#Mongoid.master.collections.each(&:drop)
#DatabaseCleaner.clean
Mongoid.master.collections.select { |c| c.name != 'system.indexes' }.each(&:drop)
end
require "#{Rails.root}/spec/blueprints" # or wherever they live
Before { Sham.reset } # reset Shams in between scenarios
require 'machinist/mongoid' # or your chosen adaptor
require File.dirname(__FILE__) + '/../../spec/blueprints' # or wherever your blueprints are
Before { Sham.reset } # to reset Sham's seed between scenarios so each run has same random sequences
# this file generated by script/generate pickle [paths] [email]
#
# Make sure that you are loading your factory of choice in your cucumber environment
#
# For machinist add: features/support/machinist.rb
#
# require 'machinist/active_record' # or your chosen adaptor
# require File.dirname(__FILE__) + '/../../spec/blueprints' # or wherever your blueprints are
# Before { Sham.reset } # to reset Sham's seed between scenarios so each run has same random sequences
#
# For FactoryGirl add: features/support/factory_girl.rb
#
# require 'factory_girl'
# require File.dirname(__FILE__) + '/../../spec/factories' # or wherever your factories are
#
# You may also need to add gem dependencies on your factory of choice in <tt>config/environments/cucumber.rb</tt>
require 'pickle/world'
# Example of configuring pickle:
#
Pickle.configure do |config|
config.adapters = [:machinist]
config.map 'I', 'myself', 'me', 'my', :to => 'user: "me"'
end
require 'pickle/path/world'
require 'pickle/email/world'
# showing just one step:
# create a model
Given(/^#{capture_model} exists?(?: with #{capture_fields})?$/) do |name, fields|
create_model(name, fields)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment