david-merb_cucumber 0.3.1.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Generators +3 -1
- data/Rakefile +1 -1
- data/lib/generators/cucumber.rb +1 -1
- data/lib/generators/feature.rb +37 -0
- data/lib/generators/feature/templates/feature.rbt +20 -0
- data/lib/generators/feature/templates/feature_steps.rb +23 -0
- data/spec/{cucumber_spec.rb → cucumber_setup_generator_spec.rb} +0 -0
- data/spec/feature_generator_spec.rb +62 -0
- data/spec/spec_helper.rb +4 -2
- metadata +9 -3
data/Generators
CHANGED
@@ -1,3 +1,5 @@
|
|
1
1
|
scope 'merb-gen' do
|
2
|
-
|
2
|
+
generators_dir = File.join(File.dirname(__FILE__), 'lib', 'generators')
|
3
|
+
Merb.add_generators File.join(generators_dir, 'cucumber')
|
4
|
+
Merb.add_generators File.join(generators_dir, 'feature')
|
3
5
|
end
|
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'merb-core'
|
|
5
5
|
require 'merb-core/tasks/merb'
|
6
6
|
|
7
7
|
GEM_NAME = "merb_cucumber"
|
8
|
-
GEM_VERSION = "0.
|
8
|
+
GEM_VERSION = "0.4.0"
|
9
9
|
AUTHOR = ["Roman Gonzalez", "David Leal"]
|
10
10
|
EMAIL = ["romanandreg@gmail.com", "dgleal@gmail.com"]
|
11
11
|
HOMEPAGE = "http://github.com/david/merb_cucumber"
|
data/lib/generators/cucumber.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Merb::Generators
|
2
|
+
class CucumberFeatureGenerator < NamedGenerator
|
3
|
+
|
4
|
+
desc <<-DESC
|
5
|
+
Generates cucumber feature files
|
6
|
+
DESC
|
7
|
+
|
8
|
+
def self.source_root
|
9
|
+
File.join(File.dirname(__FILE__), 'feature', 'templates')
|
10
|
+
end
|
11
|
+
|
12
|
+
def underscored_file_name(name)
|
13
|
+
name.gsub(/\s+/, "_")
|
14
|
+
end
|
15
|
+
|
16
|
+
first_argument :name, :required => true
|
17
|
+
|
18
|
+
option :goal, :desc => 'Goal used in the story: To [tighten the feedback loop, protect the revenue, ...]',
|
19
|
+
:as => :string, :default => "[accomplish some goal]"
|
20
|
+
option :role, :desc => 'Role used in the story: A [subscriber, account administrator, ...]',
|
21
|
+
:as => :string, :default => "[role]"
|
22
|
+
option :steps, :desc => "Also generate a steps file",
|
23
|
+
:as => :boolean, :default => false
|
24
|
+
|
25
|
+
template :feature do |t|
|
26
|
+
t.source = "feature.rbt"
|
27
|
+
t.destination = "features/#{underscored_file_name(name)}.feature"
|
28
|
+
end
|
29
|
+
|
30
|
+
file :steps, :steps => true do |t|
|
31
|
+
t.source = "feature_steps.rb"
|
32
|
+
t.destination = "features/steps/#{underscored_file_name(name)}_steps.rb"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
add :feature, CucumberFeatureGenerator
|
37
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: <%= name.gsub("_", " ") %>
|
2
|
+
To <%= goal %>
|
3
|
+
A <%= role %>
|
4
|
+
Does [something]
|
5
|
+
|
6
|
+
Scenario: [first scenario]
|
7
|
+
Given [precondition]
|
8
|
+
And [another precondition]
|
9
|
+
When [event happens]
|
10
|
+
And [another event happens]
|
11
|
+
Then [outcome]
|
12
|
+
And [another outcome]
|
13
|
+
|
14
|
+
Scenario: [other scenario]
|
15
|
+
Given [precondition]
|
16
|
+
And [another precondition]
|
17
|
+
When [event happens]
|
18
|
+
And [another event happens]
|
19
|
+
Then [outcome]
|
20
|
+
And [another outcome]
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Add your steps here
|
2
|
+
#
|
3
|
+
# A few examples:
|
4
|
+
#
|
5
|
+
# Given %r{^I was registered with ([^/\s]+)/(\S+)}i do |email, password|
|
6
|
+
# @current_person = Person.generate(:email => email, :password => password))
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
# Given %r{^I am authenticated as ([^/\s]+)/(\S+)}i do |email, password|
|
10
|
+
# Given %{I was registered with #{email}/#{password}}
|
11
|
+
# Then %{I can log in as #{email}/#{password}}
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# Then %r{^I can log in as ([^/\s]+)/(\S+)}i do |email, password|
|
15
|
+
# When %{I try to log in as #{email}/#{password}}
|
16
|
+
# Then %{I should be redirected to /dashboard}
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# Then %r{^I can not log in as ([^/\s]+)/(\S+)}i do |email, password|
|
20
|
+
# When %{I try to log in as #{email}/#{password}}
|
21
|
+
# Then %{I should be redirected to /sessions}
|
22
|
+
# And %{I should see "Wrong e-mail or password!"}
|
23
|
+
# end
|
File without changes
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
def underscored_file_name(name)
|
5
|
+
name.gsub(/\s+/, "_")
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
describe "feature generator", :shared => true do
|
10
|
+
it "generates features/NAME.feature" do
|
11
|
+
@generator.should create("/tmp/features/#{underscored_file_name(@name)}.feature")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "renders templates successfully" do
|
15
|
+
lambda { @generator.render! }.should_not raise_error
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
describe Merb::Generators::CucumberFeatureGenerator, "#render!" do
|
21
|
+
describe "with name includes spaces" do
|
22
|
+
before(:each) do
|
23
|
+
@name = "account termination"
|
24
|
+
@generator = Merb::Generators::CucumberFeatureGenerator.new('/tmp', {:steps => true}, @name)
|
25
|
+
end
|
26
|
+
|
27
|
+
it_should_behave_like "feature generator"
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "with name includes spaces and underscores" do
|
31
|
+
before(:each) do
|
32
|
+
@name = "how about some_snake_case"
|
33
|
+
@generator = Merb::Generators::CucumberFeatureGenerator.new('/tmp', {:steps => true}, @name)
|
34
|
+
end
|
35
|
+
|
36
|
+
it_should_behave_like "feature generator"
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "with --role='customer' given" do
|
40
|
+
before(:each) do
|
41
|
+
@name = "account termination"
|
42
|
+
@generator = Merb::Generators::CucumberFeatureGenerator.new('/tmp', {:role => "customer"}, @name)
|
43
|
+
end
|
44
|
+
|
45
|
+
it_should_behave_like "feature generator"
|
46
|
+
|
47
|
+
it "uses given role in the story text"
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "with --steps given" do
|
51
|
+
before(:each) do
|
52
|
+
@name = "signup"
|
53
|
+
@generator = Merb::Generators::CucumberFeatureGenerator.new('/tmp', {:steps => true}, @name)
|
54
|
+
end
|
55
|
+
|
56
|
+
it_should_behave_like "feature generator"
|
57
|
+
|
58
|
+
it "generates steps file" do
|
59
|
+
@generator.should create("/tmp/features/steps/#{underscored_file_name(@name)}_steps.rb")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,11 +3,13 @@ $:.push File.join(File.dirname(__FILE__), '..', 'lib')
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'spec'
|
5
5
|
require 'merb-core'
|
6
|
-
require 'ruby-debug'
|
7
6
|
require 'merb-gen'
|
8
|
-
|
7
|
+
|
9
8
|
require 'templater/spec/helpers'
|
10
9
|
|
10
|
+
__dir__ = File.dirname(__FILE__)
|
11
|
+
require File.join(__dir__, "..", "lib", "generators", "cucumber")
|
12
|
+
require File.join(__dir__, "..", "lib", "generators", "feature")
|
11
13
|
Merb.disable(:initfile)
|
12
14
|
|
13
15
|
Spec::Runner.configure do |config|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: david-merb_cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Gonzalez
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2008-11-
|
13
|
+
date: 2008-11-23 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -67,7 +67,12 @@ files:
|
|
67
67
|
- lib/generators/cucumber/templates/lib
|
68
68
|
- lib/generators/cucumber/templates/lib/tasks
|
69
69
|
- lib/generators/cucumber/templates/lib/tasks/cucumber.rake
|
70
|
+
- lib/generators/feature
|
71
|
+
- lib/generators/feature/templates
|
72
|
+
- lib/generators/feature/templates/feature_steps.rb
|
73
|
+
- lib/generators/feature/templates/feature.rbt
|
70
74
|
- lib/generators/cucumber.rb
|
75
|
+
- lib/generators/feature.rb
|
71
76
|
- lib/merb_cucumber
|
72
77
|
- lib/merb_cucumber/world
|
73
78
|
- lib/merb_cucumber/world/base.rb
|
@@ -77,7 +82,8 @@ files:
|
|
77
82
|
- lib/merb_cucumber/helpers/activerecord.rb
|
78
83
|
- lib/merb_cucumber/helpers/datamapper.rb
|
79
84
|
- spec/spec_helper.rb
|
80
|
-
- spec/
|
85
|
+
- spec/cucumber_setup_generator_spec.rb
|
86
|
+
- spec/feature_generator_spec.rb
|
81
87
|
has_rdoc: true
|
82
88
|
homepage: http://github.com/david/merb_cucumber
|
83
89
|
post_install_message:
|