rspec-example_steps 0.2.5 → 3.1.1
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +9 -0
- data/Gemfile +1 -1
- data/README.md +57 -102
- data/lib/rspec/example_steps.rb +8 -13
- data/lib/rspec/example_steps/documentation_formatter.rb +21 -34
- data/lib/rspec/example_steps/example_group.rb +10 -73
- data/lib/rspec/example_steps/notification.rb +6 -0
- data/lib/rspec/example_steps/reporter.rb +26 -11
- data/rspec-example_steps.gemspec +9 -8
- data/spec/example_steps_spec.rb +6 -6
- data/spec/regression_spec.rb +17 -0
- metadata +20 -21
- data/lib/rspec/example_steps/base_formatter.rb +0 -17
- data/lib/rspec/example_steps/shared_steps.rb +0 -20
- data/lib/rspec/example_steps/world.rb +0 -9
- data/spec/shared_steps_spec.rb +0 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 40d89f80fb35aef9cfb8ce1d297837dd5f2e098510a46755f44d45319deba587
|
4
|
+
data.tar.gz: f2c855602e8d63359ae33d858dd46dd95b0141a0084e3ab4914dc75d30092ab3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bed8ec04b2ef510309947ff90d237f155f11689a78c49cdaa4f5bee4501e4e1db1409b6c550260cca62c0f4dccfcd3b52ce07e4c863ed7f9ab18f430e068d154
|
7
|
+
data.tar.gz: a89bc4a8f02b55613a19a7821f6dabf8ed1d85209f6c2dea239add358a7bb50da357218e6c649ab69c8de2155ce4f8148bd0300e8d2debaff01b2bc3a68fa1c7
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -2,133 +2,88 @@
|
|
2
2
|
|
3
3
|
Given/When/Then/And/But steps for RSpec examples
|
4
4
|
|
5
|
-
###
|
6
|
-
|
7
|
-
require 'rspec/example_steps'
|
5
|
+
### Description
|
8
6
|
|
9
|
-
|
10
|
-
Steps "Result found" do
|
11
|
-
Given "I am on search page" do
|
12
|
-
page.visit("/search")
|
13
|
-
page.should have_content("Search")
|
14
|
-
end
|
7
|
+
This gem brings two major functionality to your `spec/features`
|
15
8
|
|
16
|
-
|
17
|
-
|
18
|
-
page.click_button "Go"
|
19
|
-
end
|
9
|
+
* Verbosity for rspec documentation formatter.
|
10
|
+
* Ability to comment or describe set of actions in example into some step.
|
20
11
|
|
21
|
-
|
22
|
-
page.should have_content("Result")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
### Documentation formatting output:
|
12
|
+
### Installation
|
28
13
|
|
29
|
-
|
30
|
-
|
31
|
-
Given I am on search page
|
32
|
-
When I search something
|
33
|
-
Then I should see result
|
14
|
+
* For rspec v2 use gem **v0.2.x** or rspec2 branch
|
15
|
+
* For rspec v3 use gem **v3.x.x** or master branch
|
34
16
|
|
17
|
+
```ruby
|
18
|
+
gem 'rspec-example_steps'
|
19
|
+
```
|
35
20
|
|
36
|
-
|
21
|
+
Add to `spec/spec_helper.rb`
|
37
22
|
|
38
|
-
|
23
|
+
```ruby
|
24
|
+
require 'rspec/example_steps'
|
25
|
+
```
|
39
26
|
|
40
|
-
|
27
|
+
### Example
|
41
28
|
|
42
|
-
|
29
|
+
`spec/features/search_spec.rb`
|
43
30
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
page.fill_in 'Password', :with => 'password''
|
51
|
-
end
|
52
|
-
Then "I should be logged in" do
|
53
|
-
page.status_code.should == 200
|
54
|
-
page.should have_content("Welcome jack@example.com")
|
55
|
-
end
|
31
|
+
```ruby
|
32
|
+
context 'Searching' do
|
33
|
+
Steps 'Result found' do
|
34
|
+
Given 'I am on search page' do
|
35
|
+
visit '/search'
|
36
|
+
expect(page).to have_content('Search')
|
56
37
|
end
|
57
38
|
|
58
|
-
|
59
|
-
|
60
|
-
|
39
|
+
When 'I search something' do
|
40
|
+
fill_in 'Search', with: 'John'
|
41
|
+
click_button 'Go'
|
61
42
|
end
|
62
43
|
|
63
|
-
|
64
|
-
|
65
|
-
include_steps "login"
|
66
|
-
When "I update profile description" do
|
67
|
-
...
|
68
|
-
end
|
69
|
-
include_steps "logout"
|
70
|
-
end
|
71
|
-
|
72
|
-
Steps "User updates profile avatar" do
|
73
|
-
include_steps "login"
|
74
|
-
When "I update profile avatar" do
|
75
|
-
...
|
76
|
-
end
|
77
|
-
include_steps "logout"
|
78
|
-
end
|
44
|
+
Then 'I should see result' do
|
45
|
+
expect(page).to have_content('Result')
|
79
46
|
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
```
|
80
50
|
|
81
|
-
###
|
82
|
-
|
83
|
-
It's possible to customize shared steps. See example
|
84
|
-
|
85
|
-
### Example with shared steps with arguments
|
86
|
-
|
87
|
-
shared_steps "login" do |email, password|
|
88
|
-
When "I go to login page" do
|
89
|
-
page.visit '/login'
|
90
|
-
end
|
91
|
-
When "I put credentials" do
|
92
|
-
page.fill_in 'Login', :with => email
|
93
|
-
page.fill_in 'Password', :with => password
|
94
|
-
end
|
95
|
-
end
|
51
|
+
### Documentation formatting output:
|
96
52
|
|
97
|
-
|
98
|
-
Then "I should see login error" do
|
99
|
-
...
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
Steps "User provides wrong email" do
|
104
|
-
include_steps "login", 'jack', 'qwerty'
|
105
|
-
include_steps "invalid login"
|
106
|
-
end
|
107
|
-
|
108
|
-
Steps "User provides wrong password" do
|
109
|
-
include_steps "login", 'jack@example.com', 'bla'
|
110
|
-
include_steps "invalid login"
|
111
|
-
end
|
53
|
+
`rspec -fd spec/features/search_spec.rb`
|
112
54
|
|
55
|
+
<pre>
|
56
|
+
Searching
|
57
|
+
User succesfully replaces device
|
58
|
+
Given I am on search page
|
59
|
+
When I search something
|
60
|
+
Then I should see result
|
61
|
+
</pre>
|
113
62
|
|
114
63
|
### Pending steps
|
115
64
|
|
116
65
|
Simular to Example :pending behavior:
|
117
66
|
|
118
|
-
|
119
|
-
|
120
|
-
|
67
|
+
```ruby
|
68
|
+
Steps 'User login' do
|
69
|
+
# just skip block
|
70
|
+
When 'I go to login'
|
121
71
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
72
|
+
# pass pending: true option
|
73
|
+
Then 'I should see welcome', pending: true do
|
74
|
+
...
|
75
|
+
end
|
126
76
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
77
|
+
# pass pending: 'some pending message'
|
78
|
+
Then 'I should see last login IP', pending: 'WIP' do
|
79
|
+
...
|
80
|
+
end
|
81
|
+
end
|
82
|
+
```
|
83
|
+
|
84
|
+
## Authors
|
85
|
+
|
86
|
+
* [Andriy Yanko](http://ayanko.github.io)
|
132
87
|
|
133
88
|
## License
|
134
89
|
|
data/lib/rspec/example_steps.rb
CHANGED
@@ -1,27 +1,22 @@
|
|
1
1
|
require 'rspec/core'
|
2
|
-
require 'rspec/core/formatters
|
2
|
+
require 'rspec/core/formatters'
|
3
|
+
require 'rspec/core/formatters/console_codes'
|
3
4
|
require 'rspec/core/formatters/documentation_formatter'
|
4
5
|
require 'rspec/core/example_group'
|
5
6
|
require 'rspec/core/reporter'
|
6
|
-
require 'rspec/core/world'
|
7
7
|
|
8
|
-
require 'rspec/example_steps/base_formatter'
|
9
8
|
require 'rspec/example_steps/documentation_formatter'
|
10
9
|
require 'rspec/example_steps/example_group'
|
10
|
+
require 'rspec/example_steps/notification'
|
11
11
|
require 'rspec/example_steps/reporter'
|
12
|
-
require 'rspec/example_steps/world'
|
13
12
|
|
14
|
-
RSpec::Core::Formatters::BaseFormatter.send :include, RSpec::ExampleSteps::BaseFormatter
|
15
13
|
RSpec::Core::Formatters::DocumentationFormatter.send :include, RSpec::ExampleSteps::DocumentationFormatter
|
16
14
|
RSpec::Core::ExampleGroup.send :include, RSpec::ExampleSteps::ExampleGroup
|
17
15
|
RSpec::Core::Reporter.send :include, RSpec::ExampleSteps::Reporter
|
18
|
-
RSpec::Core::World.send :include, RSpec::ExampleSteps::World
|
19
16
|
|
20
|
-
|
21
|
-
RSpec::Core::ExampleGroup.singleton_class.define_example_method :Steps, :with_steps => true
|
22
|
-
else
|
23
|
-
RSpec::Core::ExampleGroup.define_example_method :Steps, :with_steps => true
|
24
|
-
end
|
17
|
+
RSpec::Core::ExampleGroup.define_example_method :Steps, with_steps: true
|
25
18
|
|
26
|
-
|
27
|
-
|
19
|
+
if formatter = RSpec.world.reporter.find_registered_formatter(RSpec::Core::Formatters::DocumentationFormatter)
|
20
|
+
RSpec.world.reporter.register_listener formatter,
|
21
|
+
:example_started, :example_step_passed, :example_step_pending, :example_step_failed
|
22
|
+
end
|
@@ -14,55 +14,42 @@ module RSpec
|
|
14
14
|
end
|
15
15
|
|
16
16
|
module InstanceMethods
|
17
|
-
def
|
18
|
-
|
17
|
+
def example_started(notification)
|
18
|
+
end
|
19
|
+
|
20
|
+
def example_started_with_steps(notification)
|
21
|
+
example_started_without_steps(notification)
|
19
22
|
|
20
|
-
if example.
|
21
|
-
full_message = "#{current_indentation}#{example.description}"
|
22
|
-
|
23
|
-
output.puts default_color(full_message)
|
24
|
-
else
|
25
|
-
output.puts white(full_message)
|
26
|
-
end
|
23
|
+
if notification.example.metadata[:with_steps]
|
24
|
+
full_message = "#{current_indentation}#{notification.example.description}"
|
25
|
+
output.puts Core::Formatters::ConsoleCodes.wrap(full_message, :default)
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
30
|
-
def example_passed_with_steps(
|
31
|
-
example_passed_without_steps(
|
29
|
+
def example_passed_with_steps(notification)
|
30
|
+
example_passed_without_steps(notification) unless notification.example.metadata[:with_steps]
|
32
31
|
end
|
33
32
|
|
34
|
-
def example_step_passed(
|
35
|
-
full_message = "#{current_indentation} #{type.to_s.capitalize} #{message}"
|
36
|
-
|
37
|
-
output.puts success_color(full_message)
|
38
|
-
else
|
39
|
-
output.puts green(full_message)
|
40
|
-
end
|
33
|
+
def example_step_passed(notification)
|
34
|
+
full_message = "#{current_indentation} #{notification.type.to_s.capitalize} #{notification.message}"
|
35
|
+
output.puts Core::Formatters::ConsoleCodes.wrap(full_message, :success)
|
41
36
|
end
|
42
37
|
|
43
|
-
def example_step_pending(
|
44
|
-
full_message = "#{current_indentation} #{type.to_s.capitalize} #{message}"
|
38
|
+
def example_step_pending(notification)
|
39
|
+
full_message = "#{current_indentation} #{notification.type.to_s.capitalize} #{notification.message}"
|
45
40
|
|
46
|
-
if options[:pending] && options[:pending] != true
|
47
|
-
full_message << " (PENDING: #{options[:pending]})"
|
41
|
+
if notification.options[:pending] && notification.options[:pending] != true
|
42
|
+
full_message << " (PENDING: #{notification.options[:pending]})"
|
48
43
|
else
|
49
44
|
full_message << " (PENDING)"
|
50
45
|
end
|
51
46
|
|
52
|
-
|
53
|
-
output.puts pending_color(full_message)
|
54
|
-
else
|
55
|
-
output.puts yellow(full_message)
|
56
|
-
end
|
47
|
+
output.puts Core::Formatters::ConsoleCodes.wrap(full_message, :pending)
|
57
48
|
end
|
58
49
|
|
59
|
-
def example_step_failed(
|
60
|
-
full_message = "#{current_indentation} #{type.to_s.capitalize} #{message} (FAILED)"
|
61
|
-
|
62
|
-
output.puts failure_color(full_message)
|
63
|
-
else
|
64
|
-
output.puts red(full_message)
|
65
|
-
end
|
50
|
+
def example_step_failed(notification)
|
51
|
+
full_message = "#{current_indentation} #{notification.type.to_s.capitalize} #{notification.message} (FAILED)"
|
52
|
+
output.puts Core::Formatters::ConsoleCodes.wrap(full_message, :failure)
|
66
53
|
end
|
67
54
|
end
|
68
55
|
end
|
@@ -1,88 +1,25 @@
|
|
1
1
|
module RSpec
|
2
2
|
module ExampleSteps
|
3
3
|
module ExampleGroup
|
4
|
-
def
|
5
|
-
|
6
|
-
shared_block = RSpec.world.shared_example_steps[name]
|
7
|
-
shared_block or raise ArgumentError, "Could not find shared steps #{name.inspect}"
|
8
|
-
instance_eval_with_args(*args, &shared_block)
|
4
|
+
def Given(message, options = {}, &block)
|
5
|
+
RSpec.world.reporter.process_example_step(self, :given, message, options, &block)
|
9
6
|
end
|
10
7
|
|
11
|
-
def
|
12
|
-
RSpec.world.reporter.
|
13
|
-
if block_given? && !options[:pending]
|
14
|
-
begin
|
15
|
-
yield
|
16
|
-
rescue Exception => e
|
17
|
-
RSpec.world.reporter.example_step_failed(self, :given, message, options)
|
18
|
-
raise e
|
19
|
-
end
|
20
|
-
RSpec.world.reporter.example_step_passed(self, :given, message, options)
|
21
|
-
else
|
22
|
-
RSpec.world.reporter.example_step_pending(self, :given, message, options)
|
23
|
-
end
|
8
|
+
def When(message, options = {}, &block)
|
9
|
+
RSpec.world.reporter.process_example_step(self, :when, message, options, &block)
|
24
10
|
end
|
25
11
|
|
26
|
-
def
|
27
|
-
RSpec.world.reporter.
|
28
|
-
if block_given? && !options[:pending]
|
29
|
-
begin
|
30
|
-
yield
|
31
|
-
rescue Exception => e
|
32
|
-
RSpec.world.reporter.example_step_failed(self, :when, message, options)
|
33
|
-
raise e
|
34
|
-
end
|
35
|
-
RSpec.world.reporter.example_step_passed(self, :when, message, options)
|
36
|
-
else
|
37
|
-
RSpec.world.reporter.example_step_pending(self, :when, message, options)
|
38
|
-
end
|
12
|
+
def Then(message, options = {}, &block)
|
13
|
+
RSpec.world.reporter.process_example_step(self, :then, message, options, &block)
|
39
14
|
end
|
40
15
|
|
41
|
-
def
|
42
|
-
RSpec.world.reporter.
|
43
|
-
if block_given? && !options[:pending]
|
44
|
-
begin
|
45
|
-
yield
|
46
|
-
rescue Exception => e
|
47
|
-
RSpec.world.reporter.example_step_failed(self, :then, message, options)
|
48
|
-
raise e
|
49
|
-
end
|
50
|
-
RSpec.world.reporter.example_step_passed(self, :then, message, options)
|
51
|
-
else
|
52
|
-
RSpec.world.reporter.example_step_pending(self, :then, message, options)
|
53
|
-
end
|
16
|
+
def And(message, options = {}, &block)
|
17
|
+
RSpec.world.reporter.process_example_step(self, :and, message, options, &block)
|
54
18
|
end
|
55
19
|
|
56
|
-
def
|
57
|
-
RSpec.world.reporter.
|
58
|
-
if block_given? && !options[:pending]
|
59
|
-
begin
|
60
|
-
yield
|
61
|
-
rescue Exception => e
|
62
|
-
RSpec.world.reporter.example_step_failed(self, :and, message, options)
|
63
|
-
raise e
|
64
|
-
end
|
65
|
-
RSpec.world.reporter.example_step_passed(self, :and, message, options)
|
66
|
-
else
|
67
|
-
RSpec.world.reporter.example_step_pending(self, :and, message, options)
|
68
|
-
end
|
20
|
+
def But(message, options = {}, &block)
|
21
|
+
RSpec.world.reporter.process_example_step(self, :but, message, options, &block)
|
69
22
|
end
|
70
|
-
|
71
|
-
def But(message, options = {})
|
72
|
-
RSpec.world.reporter.example_step_started(self, :but, message, options)
|
73
|
-
if block_given? && !options[:pending]
|
74
|
-
begin
|
75
|
-
yield
|
76
|
-
rescue Exception => e
|
77
|
-
RSpec.world.reporter.example_step_failed(self, :but, message, options)
|
78
|
-
raise e
|
79
|
-
end
|
80
|
-
RSpec.world.reporter.example_step_passed(self, :but, message, options)
|
81
|
-
else
|
82
|
-
RSpec.world.reporter.example_step_pending(self, :but, message, options)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
23
|
end
|
87
24
|
end
|
88
25
|
end
|
@@ -1,29 +1,44 @@
|
|
1
1
|
module RSpec
|
2
2
|
module ExampleSteps
|
3
3
|
module Reporter
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
def process_example_step(example, type, message, options)
|
5
|
+
example_step_started(self, type, message, options)
|
6
|
+
|
7
|
+
if block_given? && !options[:pending]
|
8
|
+
begin
|
9
|
+
yield
|
10
|
+
rescue Exception => e
|
11
|
+
example_step_failed(self, type, message, options)
|
12
|
+
raise e
|
13
|
+
end
|
14
|
+
example_step_passed(self, type, message, options)
|
15
|
+
else
|
16
|
+
example_step_pending(self, type, message, options)
|
17
|
+
end
|
11
18
|
end
|
12
19
|
|
13
20
|
def example_step_started(example, type, message, options)
|
14
|
-
notify :example_step_started, example, type, message, options
|
21
|
+
notify :example_step_started, Notification.new(example, type, message, options)
|
15
22
|
end
|
16
23
|
|
17
24
|
def example_step_passed(example, type, message, options)
|
18
|
-
notify :example_step_passed, example, type, message, options
|
25
|
+
notify :example_step_passed, Notification.new(example, type, message, options)
|
19
26
|
end
|
20
27
|
|
21
28
|
def example_step_pending(example, type, message, options)
|
22
|
-
notify :example_step_pending, example, type, message, options
|
29
|
+
notify :example_step_pending, Notification.new(example, type, message, options)
|
23
30
|
end
|
24
31
|
|
25
32
|
def example_step_failed(example, type, message, options)
|
26
|
-
notify :example_step_failed, example, type, message, options
|
33
|
+
notify :example_step_failed, Notification.new(example, type, message, options)
|
34
|
+
end
|
35
|
+
|
36
|
+
def registered_formatters
|
37
|
+
@listeners.values.map(&:to_a).flatten.uniq
|
38
|
+
end
|
39
|
+
|
40
|
+
def find_registered_formatter(klass)
|
41
|
+
registered_formatters.detect { |formatter| formatter.class == klass }
|
27
42
|
end
|
28
43
|
end
|
29
44
|
end
|
data/rspec-example_steps.gemspec
CHANGED
@@ -2,19 +2,20 @@
|
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name =
|
6
|
-
s.version =
|
7
|
-
s.authors = [
|
8
|
-
s.email = [
|
9
|
-
s.homepage =
|
5
|
+
s.name = 'rspec-example_steps'
|
6
|
+
s.version = '3.1.1'
|
7
|
+
s.authors = ['Andriy Yanko']
|
8
|
+
s.email = ['andriy.yanko@gmail.com']
|
9
|
+
s.homepage = 'https://github.com/railsware/rspec-example_steps'
|
10
10
|
s.summary = %q{Given/When/Then steps for RSpec examples}
|
11
|
+
s.license = 'MIT'
|
11
12
|
|
12
|
-
s.rubyforge_project =
|
13
|
+
s.rubyforge_project = 'rspec_example_steps'
|
13
14
|
|
14
15
|
s.files = `git ls-files`.split("\n")
|
15
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
-
s.require_paths = [
|
18
|
+
s.require_paths = ['lib']
|
18
19
|
|
19
|
-
s.add_runtime_dependency
|
20
|
+
s.add_runtime_dependency 'rspec-core', '>=3.0.0'
|
20
21
|
end
|
data/spec/example_steps_spec.rb
CHANGED
@@ -25,11 +25,11 @@ describe "example steps" do
|
|
25
25
|
@but = "But value"
|
26
26
|
end
|
27
27
|
|
28
|
-
@thing.
|
29
|
-
@action.
|
30
|
-
@result.
|
31
|
-
@and.
|
32
|
-
@but.
|
28
|
+
expect(@thing).to eq("Given value")
|
29
|
+
expect(@action).to eq("When value")
|
30
|
+
expect(@result).to eq("Then value")
|
31
|
+
expect(@and).to eq("And value")
|
32
|
+
expect(@but).to eq("But value")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -113,7 +113,7 @@ describe "example steps" do
|
|
113
113
|
|
114
114
|
Steps "When fails" do
|
115
115
|
When "action" do
|
116
|
-
(2*2).
|
116
|
+
expect(2*2).to eq(5)
|
117
117
|
end
|
118
118
|
|
119
119
|
Then "I should see error" do
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Usual example' do
|
4
|
+
subject { 2 + 2 }
|
5
|
+
|
6
|
+
context 'success' do
|
7
|
+
specify { expect(subject).to eq(4) }
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'failed' do
|
11
|
+
specify { expect(subject).to eq(5) }
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'pending' do
|
15
|
+
it 'should be pending'
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,76 +1,75 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-example_steps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andriy Yanko
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec-core
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
description:
|
26
|
+
version: 3.0.0
|
27
|
+
description:
|
28
28
|
email:
|
29
29
|
- andriy.yanko@gmail.com
|
30
30
|
executables: []
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
-
- .gitignore
|
34
|
+
- ".gitignore"
|
35
|
+
- CHANGELOG.md
|
35
36
|
- Gemfile
|
36
37
|
- LICENSE
|
37
38
|
- README.md
|
38
39
|
- Rakefile
|
39
40
|
- lib/rspec/example_steps.rb
|
40
|
-
- lib/rspec/example_steps/base_formatter.rb
|
41
41
|
- lib/rspec/example_steps/documentation_formatter.rb
|
42
42
|
- lib/rspec/example_steps/example_group.rb
|
43
|
+
- lib/rspec/example_steps/notification.rb
|
43
44
|
- lib/rspec/example_steps/reporter.rb
|
44
|
-
- lib/rspec/example_steps/shared_steps.rb
|
45
|
-
- lib/rspec/example_steps/world.rb
|
46
45
|
- rspec-example_steps.gemspec
|
47
46
|
- spec/example_steps_spec.rb
|
48
|
-
- spec/
|
47
|
+
- spec/regression_spec.rb
|
49
48
|
- spec/spec_helper.rb
|
50
49
|
homepage: https://github.com/railsware/rspec-example_steps
|
51
|
-
licenses:
|
50
|
+
licenses:
|
51
|
+
- MIT
|
52
52
|
metadata: {}
|
53
|
-
post_install_message:
|
53
|
+
post_install_message:
|
54
54
|
rdoc_options: []
|
55
55
|
require_paths:
|
56
56
|
- lib
|
57
57
|
required_ruby_version: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
|
-
- -
|
64
|
+
- - ">="
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '0'
|
67
67
|
requirements: []
|
68
|
-
|
69
|
-
|
70
|
-
signing_key:
|
68
|
+
rubygems_version: 3.1.4
|
69
|
+
signing_key:
|
71
70
|
specification_version: 4
|
72
71
|
summary: Given/When/Then steps for RSpec examples
|
73
72
|
test_files:
|
74
73
|
- spec/example_steps_spec.rb
|
75
|
-
- spec/
|
74
|
+
- spec/regression_spec.rb
|
76
75
|
- spec/spec_helper.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module RSpec
|
2
|
-
module ExampleSteps
|
3
|
-
module BaseFormatter
|
4
|
-
def example_step_started(example, type, message, options)
|
5
|
-
end
|
6
|
-
|
7
|
-
def example_step_passed(example, type, message, options)
|
8
|
-
end
|
9
|
-
|
10
|
-
def example_step_pending(example, type, message, options)
|
11
|
-
end
|
12
|
-
|
13
|
-
def example_step_failed(example, type, message, options)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module RSpec
|
2
|
-
module ExampleSteps
|
3
|
-
module SharedSteps
|
4
|
-
|
5
|
-
def shared_steps(name, &block)
|
6
|
-
ensure_shared_example_steps_name_not_taken(name)
|
7
|
-
RSpec.world.shared_example_steps[name] = block
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def ensure_shared_example_steps_name_not_taken(name)
|
13
|
-
if RSpec.world.shared_example_steps.has_key?(name)
|
14
|
-
raise ArgumentError.new("Shared example steps '#{name}' already exists")
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/spec/shared_steps_spec.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
shared_steps "push steps" do
|
4
|
-
Given "empty pipe" do
|
5
|
-
pipe.clear
|
6
|
-
end
|
7
|
-
|
8
|
-
When "push data" do
|
9
|
-
pipe.push "hello"
|
10
|
-
end
|
11
|
-
|
12
|
-
Then "pipe should have data" do
|
13
|
-
pipe.items.should == ["hello"]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
shared_steps "push with arguments steps" do |value|
|
18
|
-
When "push data" do
|
19
|
-
pipe.push value
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
shared_steps "pull steps" do
|
24
|
-
When "pull data" do
|
25
|
-
pipe.pull
|
26
|
-
end
|
27
|
-
|
28
|
-
Then "pipe should be empty" do
|
29
|
-
pipe.items.should == []
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "shared steps" do
|
34
|
-
|
35
|
-
let(:pipe) do
|
36
|
-
Class.new do
|
37
|
-
def initialize
|
38
|
-
@values = []
|
39
|
-
end
|
40
|
-
|
41
|
-
def items
|
42
|
-
@values
|
43
|
-
end
|
44
|
-
|
45
|
-
def clear
|
46
|
-
@values = []
|
47
|
-
end
|
48
|
-
|
49
|
-
def push(value)
|
50
|
-
@values << value
|
51
|
-
end
|
52
|
-
|
53
|
-
def pull
|
54
|
-
@values.shift
|
55
|
-
end
|
56
|
-
|
57
|
-
end.new
|
58
|
-
end
|
59
|
-
|
60
|
-
Steps "push and pull steps" do
|
61
|
-
include_steps "push steps"
|
62
|
-
include_steps "pull steps"
|
63
|
-
end
|
64
|
-
|
65
|
-
Steps "push, count and pull" do
|
66
|
-
include_steps "push steps"
|
67
|
-
Then "pipe should have 1 item" do
|
68
|
-
pipe.items.size.should == 1
|
69
|
-
end
|
70
|
-
include_steps "pull steps"
|
71
|
-
end
|
72
|
-
|
73
|
-
Steps "push with arguments and pull" do
|
74
|
-
include_steps "push with arguments steps", "hi"
|
75
|
-
pipe.items.should == ["hi"]
|
76
|
-
include_steps "pull steps"
|
77
|
-
end
|
78
|
-
end
|