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 CHANGED
@@ -1,3 +1,5 @@
1
1
  scope 'merb-gen' do
2
- Merb.add_generators File.join(File.dirname(__FILE__), 'lib', 'generators', 'cucumber')
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.3.1.1"
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"
@@ -36,4 +36,4 @@ module Merb::Generators
36
36
 
37
37
  add :cucumber, CucumberGenerator
38
38
 
39
- end
39
+ end
@@ -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
@@ -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
- require 'generators/cucumber'
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.3.1.1
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 00:00:00 -08:00
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/cucumber_spec.rb
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: