david-merb_cucumber 0.3.1.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: