casecumber-rails 1.0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +205 -0
- data/History.md +219 -0
- data/LICENSE +22 -0
- data/README.md +77 -0
- data/Rakefile +9 -0
- data/config/.gitignore +1 -0
- data/config/cucumber.yml +1 -0
- data/cucumber-rails.gemspec +46 -0
- data/dev_tasks/cucumber.rake +5 -0
- data/dev_tasks/rspec.rake +8 -0
- data/dev_tasks/yard.rake +0 -0
- data/dev_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
- data/dev_tasks/yard/default/layout/html/footer.erb +5 -0
- data/dev_tasks/yard/default/layout/html/index.erb +1 -0
- data/dev_tasks/yard/default/layout/html/layout.erb +25 -0
- data/dev_tasks/yard/default/layout/html/logo.erb +1 -0
- data/dev_tasks/yard/default/layout/html/setup.rb +4 -0
- data/features/allow_rescue.feature +63 -0
- data/features/capybara_javascript_drivers.feature +87 -0
- data/features/database_cleaner.feature +44 -0
- data/features/emulate_javascript.feature +34 -0
- data/features/inspect_query_string.feature +37 -0
- data/features/install_cucumber_rails.feature +16 -0
- data/features/mongoid.feature +53 -0
- data/features/multiple_databases.feature +74 -0
- data/features/named_selectors.feature +33 -0
- data/features/no_database.feature +70 -0
- data/features/pseduo_class_selectors.feature +24 -0
- data/features/rerun_profile.feature +38 -0
- data/features/rest_api.feature +47 -0
- data/features/routing.feature +18 -0
- data/features/select_dates.feature +99 -0
- data/features/step_definitions/cucumber_rails_steps.rb +89 -0
- data/features/support/env.rb +37 -0
- data/features/test_unit.feature +43 -0
- data/lib/cucumber/rails.rb +23 -0
- data/lib/cucumber/rails/action_controller.rb +12 -0
- data/lib/cucumber/rails/application.rb +17 -0
- data/lib/cucumber/rails/capybara.rb +6 -0
- data/lib/cucumber/rails/capybara/javascript_emulation.rb +83 -0
- data/lib/cucumber/rails/capybara/select_dates_and_times.rb +50 -0
- data/lib/cucumber/rails/hooks.rb +4 -0
- data/lib/cucumber/rails/hooks/active_record.rb +21 -0
- data/lib/cucumber/rails/hooks/allow_rescue.rb +8 -0
- data/lib/cucumber/rails/hooks/database_cleaner.rb +13 -0
- data/lib/cucumber/rails/hooks/mail.rb +5 -0
- data/lib/cucumber/rails/rspec.rb +21 -0
- data/lib/cucumber/rails/world.rb +26 -0
- data/lib/cucumber/web/tableish.rb +118 -0
- data/lib/generators/cucumber/feature/USAGE +16 -0
- data/lib/generators/cucumber/feature/feature_generator.rb +28 -0
- data/lib/generators/cucumber/feature/named_arg.rb +19 -0
- data/lib/generators/cucumber/feature/templates/feature.erb +63 -0
- data/lib/generators/cucumber/feature/templates/steps.erb +14 -0
- data/lib/generators/cucumber/install/USAGE +15 -0
- data/lib/generators/cucumber/install/install_generator.rb +88 -0
- data/lib/generators/cucumber/install/templates/config/cucumber.yml.erb +8 -0
- data/lib/generators/cucumber/install/templates/script/cucumber +10 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps.rb.erb +192 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_cs.rb.erb +127 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_da.rb.erb +105 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_de.rb.erb +127 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_es.rb.erb +127 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_ja.rb.erb +140 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_ko.rb.erb +142 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_no.rb.erb +105 -0
- data/lib/generators/cucumber/install/templates/step_definitions/web_steps_pt-BR.rb.erb +132 -0
- data/lib/generators/cucumber/install/templates/support/_rails_each_run.rb.erb +36 -0
- data/lib/generators/cucumber/install/templates/support/_rails_prefork.rb.erb +1 -0
- data/lib/generators/cucumber/install/templates/support/capybara.rb +5 -0
- data/lib/generators/cucumber/install/templates/support/edit_warning.txt +5 -0
- data/lib/generators/cucumber/install/templates/support/paths.rb +33 -0
- data/lib/generators/cucumber/install/templates/support/rails.rb.erb +4 -0
- data/lib/generators/cucumber/install/templates/support/rails_spork.rb.erb +13 -0
- data/lib/generators/cucumber/install/templates/support/selectors.rb +39 -0
- data/lib/generators/cucumber/install/templates/support/web_steps_warning.txt +19 -0
- data/lib/generators/cucumber/install/templates/tasks/cucumber.rake.erb +60 -0
- data/spec/cucumber/web/tableish_spec.rb +239 -0
- data/spec/spec_helper.rb +3 -0
- metadata +514 -0
data/README.md
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
# Cucumber-Rails
|
2
|
+
|
3
|
+
Cucumber-Rails brings Cucumber to Rails3. It contains 2 generators - one
|
4
|
+
for bootstrapping your Rails app for Cucumber, and a second one for generating features.
|
5
|
+
|
6
|
+
Cucumber-Rails also contains Cucumber Step Definitions that wrap Capybara,
|
7
|
+
giving you a head start for writing Cucumber features against your Rails app.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Before you can use the generator, add the gem to your project's Gemfile as follows:
|
12
|
+
|
13
|
+
group :test do
|
14
|
+
gem 'cucumber-rails'
|
15
|
+
# database_cleaner is not required, but highly recommended
|
16
|
+
gem 'database_cleaner'
|
17
|
+
end
|
18
|
+
|
19
|
+
Then install it by running:
|
20
|
+
|
21
|
+
bundle install
|
22
|
+
|
23
|
+
Learn about the various options:
|
24
|
+
|
25
|
+
rails generate cucumber:install --help
|
26
|
+
|
27
|
+
Finally, bootstrap your Rails app, for example:
|
28
|
+
|
29
|
+
rails generate cucumber:install
|
30
|
+
|
31
|
+
## Generating a Cucumber feature
|
32
|
+
|
33
|
+
IMPORTANT: Only do this if you are new to Cucumber. We recommend you write your
|
34
|
+
Cucumber features by hand once you get the hang of it.
|
35
|
+
|
36
|
+
Example:
|
37
|
+
|
38
|
+
rails generate cucumber:feature post title:string body:text published:boolean
|
39
|
+
rails generate scaffold post title:string body:text published:boolean
|
40
|
+
rake db:migrate
|
41
|
+
rake cucumber
|
42
|
+
|
43
|
+
## Running Cucumber
|
44
|
+
|
45
|
+
With Rake:
|
46
|
+
|
47
|
+
rake cucumber
|
48
|
+
|
49
|
+
Without Rake:
|
50
|
+
|
51
|
+
[bundle exec] cucumber
|
52
|
+
|
53
|
+
## Bugs and feature requests
|
54
|
+
|
55
|
+
The *only* way to have a bug fixed or a new feature accepted is to describe it with a Cucumber feature. Let's say you think you have found a bug in the cucumber:install generator. Fork this project, clone it to your workstation and check out a branch with a descriptive name:
|
56
|
+
|
57
|
+
git clone git@github.com:you/cucumber-rails.git
|
58
|
+
git checkout -b bug-install-generator
|
59
|
+
|
60
|
+
Start by making sure you can run the existing features. Now, create a feature that demonstrates what's wrong. See the existing features for examples. When you have a failing feature that reproduces the bug, commit, push and send a pull request. Someone from the Cucumber-Rails team will review it and hopefully create a fix.
|
61
|
+
|
62
|
+
If you know how to fix the bug yourself, make a second commit (after committing the failing feature) before you send the pull request.
|
63
|
+
|
64
|
+
### Setting up your environment
|
65
|
+
|
66
|
+
I strongly recommend rvm and ruby 1.9.2. When you have that, cd into your cucumber-rails repository and:
|
67
|
+
|
68
|
+
gem install bundler
|
69
|
+
bundle install
|
70
|
+
|
71
|
+
### Running all features
|
72
|
+
|
73
|
+
With all dependencies installed, all features should pass:
|
74
|
+
|
75
|
+
rake cucumber
|
76
|
+
|
77
|
+
One of the features uses MongoDB, which needs to be running in order to make features/mongoid.feature to pass.
|
data/Rakefile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
CUCUMBER_RAILS_VERSION = Gem::Specification.load(File.dirname(__FILE__) + '/cucumber-rails.gemspec').version.version
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler/setup'
|
5
|
+
Bundler::GemHelper.install_tasks
|
6
|
+
|
7
|
+
$:.unshift(File.dirname(__FILE__) + '/lib')
|
8
|
+
Dir["#{File.dirname(__FILE__)}/dev_tasks/*.rake"].sort.each { |ext| load ext }
|
9
|
+
task :default => :cucumber
|
data/config/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
aruba-rvm.yml
|
data/config/cucumber.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
default: --tags ~@broken
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'casecumber-rails'
|
6
|
+
s.version = '1.0.2.1'
|
7
|
+
s.authors = ["Aslak Hellesøy", "Dennis Blöte", "Rob Holland", "Case Commons LLC", "Trace Wax", "Jason Berlinsky"]
|
8
|
+
s.description = "Cucumber Generators and Runtime for Rails"
|
9
|
+
s.summary = "#{s.name}-#{s.version}"
|
10
|
+
s.email = ["cukes@googlegroups.com", "casecommons-dev@googlegroups.com", "gems@tracedwax.com", "jason@jasonberlinsky.com"]
|
11
|
+
s.homepage = "http://cukes.info"
|
12
|
+
|
13
|
+
s.add_dependency('casecumber', '~> 1.0.2.1')
|
14
|
+
s.add_dependency('nokogiri', '>= 1.4.6')
|
15
|
+
s.add_dependency('capybara', '>= 1.0.0')
|
16
|
+
s.add_development_dependency('rails', '>= 3.1.0.rc4')
|
17
|
+
s.add_development_dependency('rake', '>= 0.9.2')
|
18
|
+
s.add_development_dependency('bundler', '>= 1.0.15')
|
19
|
+
s.add_development_dependency('aruba', '>= 0.4.3')
|
20
|
+
s.add_development_dependency('sqlite3-ruby', '>= 1.3.3')
|
21
|
+
s.add_development_dependency('rspec', '>= 2.6.0')
|
22
|
+
s.add_development_dependency('rspec-rails', '>= 2.6.1')
|
23
|
+
s.add_development_dependency('factory_girl', '>= 2.0.0')
|
24
|
+
s.add_development_dependency('database_cleaner', '>= 0.6.7')
|
25
|
+
s.add_development_dependency('mongoid', '>= 2.0.2')
|
26
|
+
s.add_development_dependency('bson_ext', '>= 1.3.1')
|
27
|
+
# s.add_development_dependency('akephalos', '>= 0.2.5')
|
28
|
+
|
29
|
+
# Various Stuff that Rails 3.1 puts inside apps.
|
30
|
+
s.add_development_dependency('turn', '>= 0.8.2')
|
31
|
+
s.add_development_dependency('sass', '>= 3.1.3')
|
32
|
+
s.add_development_dependency('coffee-script', '>= 2.2.0')
|
33
|
+
s.add_development_dependency('uglifier', '>= 1.0.0')
|
34
|
+
s.add_development_dependency('jquery-rails', '>= 1.0.12')
|
35
|
+
|
36
|
+
# For Documentation:
|
37
|
+
s.add_development_dependency('yard', '= 0.7.1')
|
38
|
+
s.add_development_dependency('rdiscount', '= 1.6.8')
|
39
|
+
s.add_development_dependency('bcat', '= 0.6.1')
|
40
|
+
|
41
|
+
s.rubygems_version = ">= 1.6.1"
|
42
|
+
s.files = `git ls-files`.split("\n")
|
43
|
+
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
44
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
45
|
+
s.require_path = "lib"
|
46
|
+
end
|
data/dev_tasks/yard.rake
ADDED
File without changes
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= yieldall %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<%= erb(:headers) %>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<script type="text/javascript" charset="utf-8">
|
9
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
10
|
+
</script>
|
11
|
+
|
12
|
+
<div id="header">
|
13
|
+
<%= erb(:logo) %>
|
14
|
+
<%= erb(:breadcrumb) %>
|
15
|
+
<%= erb(:search) %>
|
16
|
+
<div class="clear"></div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<iframe id="search_frame"></iframe>
|
20
|
+
|
21
|
+
<div id="content"><%= yieldall %></div>
|
22
|
+
|
23
|
+
<%= erb(:footer) %>
|
24
|
+
</body>
|
25
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
<h3><img src="<%= url_for('images/bubble_32x32.png') %>"></img> Cucumber-Rails <%= CUCUMBER_RAILS_VERSION %></h3>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
Feature: Allow Cucumber to rescue exceptions
|
2
|
+
|
3
|
+
Background: A controller that raises an exception in a Rails app without web_steps.rb
|
4
|
+
Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
|
5
|
+
And I remove the file "features/step_definitions/web_steps.rb"
|
6
|
+
And I write to "app/controllers/posts_controller.rb" with:
|
7
|
+
"""
|
8
|
+
class PostsController < ApplicationController
|
9
|
+
def index
|
10
|
+
raise "There is an error in index"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
"""
|
14
|
+
And I write to "config/routes.rb" with:
|
15
|
+
"""
|
16
|
+
Rails3App::Application.routes.draw do
|
17
|
+
resources :posts
|
18
|
+
end
|
19
|
+
"""
|
20
|
+
|
21
|
+
Scenario: Allow rescue
|
22
|
+
And I write to "features/posts.feature" with:
|
23
|
+
"""
|
24
|
+
Feature: posts
|
25
|
+
@allow-rescue
|
26
|
+
Scenario: See posts
|
27
|
+
When I look at the posts
|
28
|
+
"""
|
29
|
+
And I write to "features/step_definitions/posts_steps.rb" with:
|
30
|
+
"""
|
31
|
+
When /^I look at the posts$/ do
|
32
|
+
visit '/posts'
|
33
|
+
end
|
34
|
+
"""
|
35
|
+
And I run `bundle exec rake db:migrate`
|
36
|
+
And I run `bundle exec cucumber`
|
37
|
+
Then it should pass with:
|
38
|
+
"""
|
39
|
+
1 scenario (1 passed)
|
40
|
+
1 step (1 passed)
|
41
|
+
"""
|
42
|
+
|
43
|
+
Scenario: Don't allow rescue
|
44
|
+
Given I write to "features/posts.feature" with:
|
45
|
+
"""
|
46
|
+
Feature: posts
|
47
|
+
Scenario: See them
|
48
|
+
When I look at the posts
|
49
|
+
"""
|
50
|
+
And I write to "features/step_definitions/posts_steps.rb" with:
|
51
|
+
"""
|
52
|
+
When /^I look at the posts$/ do
|
53
|
+
visit '/posts'
|
54
|
+
end
|
55
|
+
"""
|
56
|
+
And I run `bundle exec rake db:migrate`
|
57
|
+
And I run `bundle exec cucumber`
|
58
|
+
Then it should fail with:
|
59
|
+
"""
|
60
|
+
1 scenario (1 failed)
|
61
|
+
1 step (1 failed)
|
62
|
+
"""
|
63
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
Feature: Capybara Javascript Drivers
|
2
|
+
|
3
|
+
Background: A simple calendar app
|
4
|
+
Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
|
5
|
+
And I successfully run `bundle exec rails g scaffold appointment name:string when:datetime`
|
6
|
+
|
7
|
+
Scenario Outline: Use a particular driver
|
8
|
+
Given I write to "features/create_appointment.feature" with:
|
9
|
+
"""
|
10
|
+
@javascript
|
11
|
+
Feature: Create appointments
|
12
|
+
Scenario: Constitution on May 17
|
13
|
+
Given I am on the new appointment page
|
14
|
+
And I fill in "Norway's constitution" for "Name"
|
15
|
+
And I select "2009-02-20 15:10:00 UTC" as the "When" date and time
|
16
|
+
And I press "Create Appointment"
|
17
|
+
Then I should see "Norway's constitution"
|
18
|
+
And I should see "2009-02-20 15:10:00 UTC"
|
19
|
+
|
20
|
+
"""
|
21
|
+
And I append to "Gemfile" with:
|
22
|
+
"""
|
23
|
+
<Gemfile extra>
|
24
|
+
|
25
|
+
"""
|
26
|
+
And I append to "features/support/env.rb" with:
|
27
|
+
"""
|
28
|
+
<env.rb extra>
|
29
|
+
|
30
|
+
"""
|
31
|
+
|
32
|
+
When I run `bundle exec rake db:migrate`
|
33
|
+
And I run `bundle exec rake cucumber`
|
34
|
+
Then it should pass with:
|
35
|
+
"""
|
36
|
+
1 scenario (1 passed)
|
37
|
+
6 steps (6 passed)
|
38
|
+
"""
|
39
|
+
|
40
|
+
Examples:
|
41
|
+
| Gemfile extra | env.rb extra |
|
42
|
+
| gem "capybara", :group => :test | require 'capybara' |
|
43
|
+
|
44
|
+
Scenario Outline: Mixed DB access
|
45
|
+
Given I write to "features/create_appointment.feature" with:
|
46
|
+
"""
|
47
|
+
@javascript
|
48
|
+
Feature: Create appointments
|
49
|
+
Scenario: Constitution on May 17
|
50
|
+
Given a random appointment
|
51
|
+
And I am viewing random appointment
|
52
|
+
Then I should see "Random appointment"
|
53
|
+
|
54
|
+
"""
|
55
|
+
And I write to "features/step_definitions/custom_steps.rb" with:
|
56
|
+
"""
|
57
|
+
Given /^a random appointment$/ do
|
58
|
+
@appointment = Appointment.create!(:name => 'Random appointment', :when => DateTime.now)
|
59
|
+
end
|
60
|
+
|
61
|
+
Given /^I am viewing random appointment$/ do
|
62
|
+
visit appointment_path(@appointment)
|
63
|
+
end
|
64
|
+
"""
|
65
|
+
And I append to "Gemfile" with:
|
66
|
+
"""
|
67
|
+
<Gemfile extra>
|
68
|
+
|
69
|
+
"""
|
70
|
+
And I append to "features/support/env.rb" with:
|
71
|
+
"""
|
72
|
+
<env.rb extra>
|
73
|
+
|
74
|
+
"""
|
75
|
+
|
76
|
+
When I run `bundle exec rake db:migrate`
|
77
|
+
And I run `bundle exec rake cucumber`
|
78
|
+
Then it should pass with:
|
79
|
+
"""
|
80
|
+
1 scenario (1 passed)
|
81
|
+
3 steps (3 passed)
|
82
|
+
"""
|
83
|
+
|
84
|
+
Examples:
|
85
|
+
| Gemfile extra | env.rb extra |
|
86
|
+
| gem "capybara", :group => :test | require 'capybara' |
|
87
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
Feature: DatabaseCleaner
|
2
|
+
|
3
|
+
Scenario: Create records in background
|
4
|
+
Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
|
5
|
+
And I write to "features/widgets.feature" with:
|
6
|
+
"""
|
7
|
+
Feature: Create widgets
|
8
|
+
Background: some widdgets
|
9
|
+
Given I have 2 widgets
|
10
|
+
|
11
|
+
Scenario: Add 3
|
12
|
+
When I create 3 more widgets
|
13
|
+
Then I should have 5 widgets
|
14
|
+
|
15
|
+
Scenario: Add 7
|
16
|
+
When I create 7 more widgets
|
17
|
+
Then I should have 9 widgets
|
18
|
+
"""
|
19
|
+
And I successfully run `rails generate model widget name:string`
|
20
|
+
And I write to "features/step_definitions/widget_steps.rb" with:
|
21
|
+
"""
|
22
|
+
Given /^I have (\d+) widgets$/ do |n|
|
23
|
+
n.to_i.times do |i|
|
24
|
+
Widget.create! :name => "Widget #{Widget.count + i}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
When /^I create (\d+) more widgets$/ do |n|
|
29
|
+
n.to_i.times do |i|
|
30
|
+
Widget.create! :name => "Widget #{Widget.count + i}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
Then /^I should have (\d+) widgets$/ do |n|
|
35
|
+
Widget.count.should == n.to_i
|
36
|
+
end
|
37
|
+
"""
|
38
|
+
And I run `bundle exec rake db:migrate`
|
39
|
+
And I run `bundle exec rake cucumber`
|
40
|
+
Then it should pass with:
|
41
|
+
"""
|
42
|
+
2 scenarios (2 passed)
|
43
|
+
6 steps (6 passed)
|
44
|
+
"""
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Feature: Emulate Javascript
|
2
|
+
|
3
|
+
Scenario: See a widget
|
4
|
+
Given I have created a new Rails 3 app "widgets" with cucumber-rails support
|
5
|
+
And I successfully run `rails generate scaffold widget name:string`
|
6
|
+
And I write to "features/f.feature" with:
|
7
|
+
"""
|
8
|
+
@javascript
|
9
|
+
Feature: Widget inventory
|
10
|
+
Scenario: Delete a widget
|
11
|
+
Given there is a widget named "wrench"
|
12
|
+
When I go to the widgets page
|
13
|
+
Then I should see "wrench"
|
14
|
+
"""
|
15
|
+
And I write to "features/step_definitions/s.rb" with:
|
16
|
+
"""
|
17
|
+
Given /^there is a widget named "([^"]*)"$/ do |name|
|
18
|
+
Factory(:widget, :name => name)
|
19
|
+
end
|
20
|
+
"""
|
21
|
+
And I write to "features/support/factories.rb" with:
|
22
|
+
"""
|
23
|
+
Factory.define :widget do |f|
|
24
|
+
f.name 'testwidget'
|
25
|
+
end
|
26
|
+
"""
|
27
|
+
When I run `bundle exec rake db:migrate`
|
28
|
+
And I run `bundle exec rake cucumber`
|
29
|
+
Then it should pass with:
|
30
|
+
"""
|
31
|
+
1 scenario (1 passed)
|
32
|
+
3 steps (3 passed)
|
33
|
+
"""
|
34
|
+
|