spinach 0.0.2 → 0.0.4
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/.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
|