spinach 0.0.2 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +8 -0
- data/Rakefile +7 -3
- data/bin/spinach +5 -15
- data/features/feature_name_guessing.feature +10 -0
- data/features/steps/feature_name_guessing.rb +39 -0
- data/lib/spinach/capybara.rb +0 -2
- data/lib/spinach/config.rb +1 -1
- data/lib/spinach/dsl.rb +64 -29
- data/lib/spinach/exceptions.rb +28 -0
- data/lib/spinach/feature.rb +1 -1
- data/lib/spinach/parser.rb +4 -0
- data/lib/spinach/reporter/stdout.rb +75 -0
- data/lib/spinach/reporter.rb +7 -39
- data/lib/spinach/runner/feature.rb +72 -0
- data/lib/spinach/runner/scenario.rb +55 -0
- data/lib/spinach/runner.rb +58 -57
- data/lib/spinach/support.rb +19 -0
- data/lib/spinach/version.rb +1 -1
- data/lib/spinach.rb +7 -2
- data/spinach.gemspec +4 -1
- data/test/spinach/dsl_test.rb +21 -17
- data/test/spinach/feature_test.rb +41 -11
- data/test/spinach/reporter/stdout_test.rb +128 -0
- data/test/spinach/reporter_test.rb +4 -59
- data/test/spinach/runner/feature_test.rb +108 -0
- data/test/spinach/runner/scenario_test.rb +70 -0
- data/test/spinach/runner_test.rb +38 -76
- data/test/spinach/support_test.rb +33 -0
- data/test/spinach_test.rb +29 -1
- metadata +71 -19
data/test/spinach/runner_test.rb
CHANGED
@@ -2,91 +2,53 @@ require_relative '../test_helper'
|
|
2
2
|
|
3
3
|
describe Spinach::Runner do
|
4
4
|
before do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
@filenames =
|
6
|
+
%w{features/cool_feature.feature features/great_feature.feature}
|
7
|
+
|
8
|
+
@runner = Spinach::Runner.new(@filenames)
|
9
|
+
end
|
10
|
+
describe "#initialize" do
|
11
|
+
it "sets the filenames" do
|
12
|
+
@runner.filenames.must_equal @filenames
|
13
|
+
end
|
14
|
+
describe "step_definitions_path" do
|
15
|
+
it "sets a default" do
|
16
|
+
@runner.step_definitions_path.must_be_kind_of String
|
10
17
|
end
|
11
|
-
|
12
|
-
@
|
13
|
-
|
18
|
+
it "can be overriden" do
|
19
|
+
@runner = Spinach::Runner.new(
|
20
|
+
@filename, step_definitions_path: 'spinach/step_definitions'
|
21
|
+
)
|
22
|
+
@runner.step_definitions_path.must_equal 'spinach/step_definitions'
|
14
23
|
end
|
15
|
-
attr_accessor :when_called, :then_called
|
16
24
|
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
describe "#feature" do
|
29
|
-
it "returns a Spinach feature" do
|
30
|
-
@runner.feature.ancestors.must_include @feature
|
25
|
+
describe "support_path" do
|
26
|
+
it "sets a default" do
|
27
|
+
@runner.support_path.must_be_kind_of String
|
28
|
+
end
|
29
|
+
it "can be overriden" do
|
30
|
+
@runner = Spinach::Runner.new(
|
31
|
+
@filename, support_path: 'spinach/environment'
|
32
|
+
)
|
33
|
+
@runner.support_path.must_equal 'spinach/environment'
|
34
|
+
end
|
31
35
|
end
|
32
36
|
end
|
33
|
-
describe "#
|
34
|
-
it "
|
35
|
-
@runner.
|
36
|
-
{'name' => 'First scenario', 'steps' => [
|
37
|
-
{'keyword' => 'When ', 'name' => "I say hello"},
|
38
|
-
{'keyword' => 'Then ', 'name' => "you say goodbye"} ]
|
39
|
-
}
|
40
|
-
]
|
37
|
+
describe "#reporter" do
|
38
|
+
it "returns a default reporter" do
|
39
|
+
@runner.reporter.wont_equal nil
|
41
40
|
end
|
42
41
|
end
|
43
42
|
describe "#run" do
|
44
|
-
it "
|
45
|
-
|
46
|
-
@runner.stubs(reporter:
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
describe Spinach::Runner::Scenario do
|
53
|
-
before do
|
54
|
-
@data = {'name' => 'First scenario', 'steps' => [
|
55
|
-
{'keyword' => 'When ', 'name' => "I say hello"},
|
56
|
-
{'keyword' => 'Then ', 'name' => "you say goodbye"}]
|
57
|
-
}
|
58
|
-
@reporter = stub_everything
|
59
|
-
@runner = stub(reporter: @reporter, feature: @feature)
|
60
|
-
@scenario = Spinach::Runner::Scenario.new(@runner, @data)
|
61
|
-
end
|
62
|
-
it "should call every step on the feature" do
|
63
|
-
@scenario.run
|
64
|
-
@scenario.feature.when_called.must_equal true
|
65
|
-
@scenario.feature.then_called.must_equal true
|
66
|
-
end
|
67
|
-
it "calls the appropiate methods of the reporter" do
|
68
|
-
@reporter.expects(:scenario).with("First scenario")
|
69
|
-
@reporter.expects(:step).once.with("When I say hello", :success)
|
70
|
-
@reporter.expects(:step).once.with("Then you say goodbye", :failure)
|
71
|
-
@scenario.run
|
72
|
-
end
|
73
|
-
it "stops the run when finds an error" do
|
74
|
-
@feature = Class.new(Spinach::Feature) do
|
75
|
-
feature "A new feature"
|
76
|
-
When "I say hello" do
|
77
|
-
@when_called = true
|
78
|
-
true.must_equal false
|
79
|
-
end
|
80
|
-
Then "you say goodbye" do
|
81
|
-
@then_called = true
|
82
|
-
end
|
83
|
-
attr_accessor :when_called, :then_called
|
43
|
+
it "instantiates a new Feature and runs it with every file" do
|
44
|
+
feature = stub(run: nil)
|
45
|
+
@runner.stubs(reporter: stub_everything)
|
46
|
+
@filenames.each do |filename|
|
47
|
+
Spinach::Runner::Feature.expects(:new).
|
48
|
+
with(filename, anything).
|
49
|
+
returns(feature)
|
84
50
|
end
|
85
|
-
@runner.
|
86
|
-
@scenario = Spinach::Runner::Scenario.new(@runner, @data)
|
87
|
-
@scenario.run
|
88
|
-
@scenario.feature.when_called.must_equal true
|
89
|
-
@scenario.feature.then_called.wont_equal true
|
51
|
+
@runner.run
|
90
52
|
end
|
91
53
|
end
|
92
54
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
describe Spinach::Support do
|
4
|
+
describe '#camelize' do
|
5
|
+
it 'returns an empty string with nil values' do
|
6
|
+
Spinach::Support.camelize(nil).must_equal ''
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'downcases the given value' do
|
10
|
+
ActiveSupport::Inflector.expects(:camelize).with('value').returns('value')
|
11
|
+
|
12
|
+
Spinach::Support.camelize('VALUE').must_equal 'value'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'squeezes the spaces for the given value' do
|
16
|
+
ActiveSupport::Inflector.expects(:camelize).with('feature_name').returns('FeatureName')
|
17
|
+
|
18
|
+
Spinach::Support.camelize('feature name').must_equal 'FeatureName'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'strips the given value' do
|
22
|
+
ActiveSupport::Inflector.expects(:camelize).with('value').returns('value')
|
23
|
+
|
24
|
+
Spinach::Support.camelize(' value ').must_equal 'value'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'strips the given value' do
|
28
|
+
ActiveSupport::Inflector.expects(:camelize).with('feature_name').returns('FeatureName')
|
29
|
+
|
30
|
+
Spinach::Support.camelize('feature name').must_equal 'FeatureName'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/test/spinach_test.rb
CHANGED
@@ -5,10 +5,12 @@ describe Spinach do
|
|
5
5
|
@feature1 = OpenStruct.new(feature_name: "User authentication")
|
6
6
|
@feature2 = OpenStruct.new(feature_name: "Slip management")
|
7
7
|
@feature3 = OpenStruct.new(feature_name: "File attachments")
|
8
|
-
|
8
|
+
@feature4 = OpenStruct.new(name: "UserSendsAMessage")
|
9
|
+
[@feature1, @feature2, @feature3, @feature4].each do |feature|
|
9
10
|
Spinach.features << feature
|
10
11
|
end
|
11
12
|
end
|
13
|
+
|
12
14
|
describe "#features" do
|
13
15
|
it "returns all the loaded features" do
|
14
16
|
Spinach.features.must_include @feature1
|
@@ -16,6 +18,7 @@ describe Spinach do
|
|
16
18
|
Spinach.features.must_include @feature3
|
17
19
|
end
|
18
20
|
end
|
21
|
+
|
19
22
|
describe "#reset_features" do
|
20
23
|
it "resets the features to a pristine state" do
|
21
24
|
Spinach.reset_features
|
@@ -24,11 +27,36 @@ describe Spinach do
|
|
24
27
|
end
|
25
28
|
end
|
26
29
|
end
|
30
|
+
|
27
31
|
describe "#find_feature" do
|
28
32
|
it "finds a feature by name" do
|
29
33
|
Spinach.find_feature("User authentication").must_equal @feature1
|
30
34
|
Spinach.find_feature("Slip management").must_equal @feature2
|
31
35
|
Spinach.find_feature("File attachments").must_equal @feature3
|
32
36
|
end
|
37
|
+
|
38
|
+
describe "when a feature class does no set a feature_name" do
|
39
|
+
it 'guesses the feature class from the feature name' do
|
40
|
+
Spinach.find_feature('User sends a message').must_equal @feature4
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'raises when it cannot find the class' do
|
44
|
+
exception = proc {
|
45
|
+
Spinach.find_feature('This feature does not exist')
|
46
|
+
}.must_raise Spinach::FeatureNotFoundException
|
47
|
+
|
48
|
+
exception.message.must_equal 'Could not find class for `This feature does not exist` feature. Please create a ThisFeatureDoesNotExist.rb file at features/steps'
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'uses Spinach.config[:step_definitions_path] to tell the user where to wirte the steps' do
|
52
|
+
Spinach.config.stubs(:step_definitions_path).returns('my/path/')
|
53
|
+
|
54
|
+
exception = proc {
|
55
|
+
Spinach.find_feature('This feature does not exist')
|
56
|
+
}.must_raise Spinach::FeatureNotFoundException
|
57
|
+
|
58
|
+
exception.message.must_match %r{my/path}
|
59
|
+
end
|
60
|
+
end
|
33
61
|
end
|
34
62
|
end
|
metadata
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spinach
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Josep Jaume Rey
|
9
9
|
- Josep M. Bach
|
10
10
|
- Oriol Gual
|
11
|
+
- Marc Divins Castellvi
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date: 2011-09-
|
15
|
+
date: 2011-09-30 00:00:00.000000000Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: gherkin
|
18
|
-
requirement: &
|
19
|
+
requirement: &70215568398460 !ruby/object:Gem::Requirement
|
19
20
|
none: false
|
20
21
|
requirements:
|
21
22
|
- - ! '>='
|
@@ -23,10 +24,10 @@ dependencies:
|
|
23
24
|
version: '0'
|
24
25
|
type: :runtime
|
25
26
|
prerelease: false
|
26
|
-
version_requirements: *
|
27
|
+
version_requirements: *70215568398460
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: minitest
|
29
|
-
requirement: &
|
30
|
+
requirement: &70215568396980 !ruby/object:Gem::Requirement
|
30
31
|
none: false
|
31
32
|
requirements:
|
32
33
|
- - ! '>='
|
@@ -34,10 +35,10 @@ dependencies:
|
|
34
35
|
version: '0'
|
35
36
|
type: :runtime
|
36
37
|
prerelease: false
|
37
|
-
version_requirements: *
|
38
|
+
version_requirements: *70215568396980
|
38
39
|
- !ruby/object:Gem::Dependency
|
39
40
|
name: colorize
|
40
|
-
requirement: &
|
41
|
+
requirement: &70215568395140 !ruby/object:Gem::Requirement
|
41
42
|
none: false
|
42
43
|
requirements:
|
43
44
|
- - ! '>='
|
@@ -45,10 +46,21 @@ dependencies:
|
|
45
46
|
version: '0'
|
46
47
|
type: :runtime
|
47
48
|
prerelease: false
|
48
|
-
version_requirements: *
|
49
|
+
version_requirements: *70215568395140
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: activesupport
|
52
|
+
requirement: &70215568393640 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
type: :runtime
|
59
|
+
prerelease: false
|
60
|
+
version_requirements: *70215568393640
|
49
61
|
- !ruby/object:Gem::Dependency
|
50
62
|
name: purdytest
|
51
|
-
requirement: &
|
63
|
+
requirement: &70215568391860 !ruby/object:Gem::Requirement
|
52
64
|
none: false
|
53
65
|
requirements:
|
54
66
|
- - ! '>='
|
@@ -56,10 +68,10 @@ dependencies:
|
|
56
68
|
version: '0'
|
57
69
|
type: :development
|
58
70
|
prerelease: false
|
59
|
-
version_requirements: *
|
71
|
+
version_requirements: *70215568391860
|
60
72
|
- !ruby/object:Gem::Dependency
|
61
73
|
name: rake
|
62
|
-
requirement: &
|
74
|
+
requirement: &70215568390360 !ruby/object:Gem::Requirement
|
63
75
|
none: false
|
64
76
|
requirements:
|
65
77
|
- - ! '>='
|
@@ -67,10 +79,10 @@ dependencies:
|
|
67
79
|
version: '0'
|
68
80
|
type: :development
|
69
81
|
prerelease: false
|
70
|
-
version_requirements: *
|
82
|
+
version_requirements: *70215568390360
|
71
83
|
- !ruby/object:Gem::Dependency
|
72
84
|
name: mocha
|
73
|
-
requirement: &
|
85
|
+
requirement: &70215568389220 !ruby/object:Gem::Requirement
|
74
86
|
none: false
|
75
87
|
requirements:
|
76
88
|
- - ! '>='
|
@@ -78,10 +90,10 @@ dependencies:
|
|
78
90
|
version: '0'
|
79
91
|
type: :development
|
80
92
|
prerelease: false
|
81
|
-
version_requirements: *
|
93
|
+
version_requirements: *70215568389220
|
82
94
|
- !ruby/object:Gem::Dependency
|
83
95
|
name: sinatra
|
84
|
-
requirement: &
|
96
|
+
requirement: &70215568388420 !ruby/object:Gem::Requirement
|
85
97
|
none: false
|
86
98
|
requirements:
|
87
99
|
- - ! '>='
|
@@ -89,10 +101,32 @@ dependencies:
|
|
89
101
|
version: '0'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
|
-
version_requirements: *
|
104
|
+
version_requirements: *70215568388420
|
93
105
|
- !ruby/object:Gem::Dependency
|
94
106
|
name: capybara
|
95
|
-
requirement: &
|
107
|
+
requirement: &70215568387460 !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
type: :development
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: *70215568387460
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: aruba
|
118
|
+
requirement: &70215568386020 !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: *70215568386020
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: pry
|
129
|
+
requirement: &70215568384720 !ruby/object:Gem::Requirement
|
96
130
|
none: false
|
97
131
|
requirements:
|
98
132
|
- - ! '>='
|
@@ -100,7 +134,7 @@ dependencies:
|
|
100
134
|
version: '0'
|
101
135
|
type: :development
|
102
136
|
prerelease: false
|
103
|
-
version_requirements: *
|
137
|
+
version_requirements: *70215568384720
|
104
138
|
description: Spinach is a BDD framework on top of gherkin
|
105
139
|
email:
|
106
140
|
- info@codegram.com
|
@@ -111,6 +145,7 @@ extra_rdoc_files: []
|
|
111
145
|
files:
|
112
146
|
- .gitignore
|
113
147
|
- .rvmrc
|
148
|
+
- .travis.yml
|
114
149
|
- Gemfile
|
115
150
|
- Guardfile
|
116
151
|
- Rakefile
|
@@ -119,14 +154,21 @@ files:
|
|
119
154
|
- examples/steps/user_logs_in.rb
|
120
155
|
- examples/user_logs_in.feature
|
121
156
|
- examples/user_logs_in.rb
|
157
|
+
- features/feature_name_guessing.feature
|
158
|
+
- features/steps/feature_name_guessing.rb
|
122
159
|
- lib/spinach.rb
|
123
160
|
- lib/spinach/capybara.rb
|
124
161
|
- lib/spinach/config.rb
|
125
162
|
- lib/spinach/dsl.rb
|
163
|
+
- lib/spinach/exceptions.rb
|
126
164
|
- lib/spinach/feature.rb
|
127
165
|
- lib/spinach/parser.rb
|
128
166
|
- lib/spinach/reporter.rb
|
167
|
+
- lib/spinach/reporter/stdout.rb
|
129
168
|
- lib/spinach/runner.rb
|
169
|
+
- lib/spinach/runner/feature.rb
|
170
|
+
- lib/spinach/runner/scenario.rb
|
171
|
+
- lib/spinach/support.rb
|
130
172
|
- lib/spinach/version.rb
|
131
173
|
- spinach.gemspec
|
132
174
|
- test/spinach/capybara_test.rb
|
@@ -134,8 +176,12 @@ files:
|
|
134
176
|
- test/spinach/dsl_test.rb
|
135
177
|
- test/spinach/feature_test.rb
|
136
178
|
- test/spinach/parser_test.rb
|
179
|
+
- test/spinach/reporter/stdout_test.rb
|
137
180
|
- test/spinach/reporter_test.rb
|
181
|
+
- test/spinach/runner/feature_test.rb
|
182
|
+
- test/spinach/runner/scenario_test.rb
|
138
183
|
- test/spinach/runner_test.rb
|
184
|
+
- test/spinach/support_test.rb
|
139
185
|
- test/spinach_test.rb
|
140
186
|
- test/test_helper.rb
|
141
187
|
homepage: http://github.com/codegram/spinach
|
@@ -158,17 +204,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
204
|
version: '0'
|
159
205
|
requirements: []
|
160
206
|
rubyforge_project:
|
161
|
-
rubygems_version: 1.8.
|
207
|
+
rubygems_version: 1.8.10
|
162
208
|
signing_key:
|
163
209
|
specification_version: 3
|
164
210
|
summary: Spinach is a BDD framework on top of gherkin
|
165
211
|
test_files:
|
212
|
+
- features/feature_name_guessing.feature
|
213
|
+
- features/steps/feature_name_guessing.rb
|
166
214
|
- test/spinach/capybara_test.rb
|
167
215
|
- test/spinach/config_test.rb
|
168
216
|
- test/spinach/dsl_test.rb
|
169
217
|
- test/spinach/feature_test.rb
|
170
218
|
- test/spinach/parser_test.rb
|
219
|
+
- test/spinach/reporter/stdout_test.rb
|
171
220
|
- test/spinach/reporter_test.rb
|
221
|
+
- test/spinach/runner/feature_test.rb
|
222
|
+
- test/spinach/runner/scenario_test.rb
|
172
223
|
- test/spinach/runner_test.rb
|
224
|
+
- test/spinach/support_test.rb
|
173
225
|
- test/spinach_test.rb
|
174
226
|
- test/test_helper.rb
|