active_cucumber 0.0.6 → 0.0.7
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +34 -0
- data/active_cucumber.gemspec +1 -1
- data/features/active_cucumber/create_many.feature +9 -0
- data/features/active_cucumber/create_one.feature +9 -0
- data/features/support/env.rb +12 -0
- data/features/support/show.rb +1 -0
- data/features/support/subscription.rb +3 -0
- data/features/support/subscription_creator.rb +11 -0
- data/features/support/subscription_cucumberator.rb +7 -0
- data/lib/active_cucumber.rb +4 -4
- data/lib/active_cucumber/active_record_builder.rb +3 -2
- data/lib/active_cucumber/creator.rb +4 -1
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1048545c953152ca466b938200d8ff3394db73e0
|
4
|
+
data.tar.gz: 78945b8fe777ae5449fd7c3ce61f6853da5f9cdf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ebaf30097d41bae186253bba0e1dcbdf595e3b593cbad28c466c35a0acc0fbb0aeaeaaf193c4f1f5d20ac0b00195328740697de7e900825651241c539584235
|
7
|
+
data.tar.gz: bc8030615a10e8aa15474bafb9e9745645936b151bccb6be1d687970e635b232320d673c2b61938a61054ed58130b1a11920a8b9a6b14fec08ddd939f998c3ad
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -105,6 +105,40 @@ class EpisodeCreator < ActiveCucumber::Creator
|
|
105
105
|
end
|
106
106
|
```
|
107
107
|
|
108
|
+
### Context values
|
109
|
+
|
110
|
+
You can provide extra values to ActiveCucumber that are available as instance
|
111
|
+
variables on your creators.
|
112
|
+
|
113
|
+
Let's say our system has subscriptions for series, and we want to be able to
|
114
|
+
use the currently logged in user in them:
|
115
|
+
|
116
|
+
```cucumber
|
117
|
+
Given the subscriptions:
|
118
|
+
| SUBSCRIBER | SHOW |
|
119
|
+
| me | Star Trek TNG |
|
120
|
+
```
|
121
|
+
|
122
|
+
The currently logged in user can be provided to ActiveCucumber using the `context` parameter:
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
Given(/^the subscriptions:$/) do |table|
|
126
|
+
ActiveCucumber.create_many Subscription, table, context: { logged_in_user: @current_user }
|
127
|
+
end
|
128
|
+
```
|
129
|
+
|
130
|
+
In the Creator, the context is available as instance variables:
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
class SubscriptionCreator < ActiveCucumber::Creator
|
134
|
+
|
135
|
+
def value_for_subscriber subscriber_name
|
136
|
+
subscriber_name == 'me' ? @logged_in_user : subscriber_name
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
```
|
141
|
+
|
108
142
|
|
109
143
|
## Verifying database records
|
110
144
|
|
data/active_cucumber.gemspec
CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'active_cucumber'
|
6
|
-
s.version = '0.0.
|
6
|
+
s.version = '0.0.7'
|
7
7
|
s.authors = ['Kevin Goslar']
|
8
8
|
s.email = ['kevin.goslar@gmail.com']
|
9
9
|
s.summary = %s(ActiveRecord tools for Cucumber)
|
@@ -44,6 +44,15 @@ Feature: ActiveCucumber.create_many
|
|
44
44
|
| Star Trek TNG | All Good Things |
|
45
45
|
|
46
46
|
|
47
|
+
Scenario: using context values
|
48
|
+
When running "ActiveCucumber.create_many Subscription, table, context: { current_user: 'Q' }" with this table:
|
49
|
+
| SUBSCRIBER | SHOW |
|
50
|
+
| me | Star Trek TNG |
|
51
|
+
Then the database contains the subscriptions:
|
52
|
+
| SUBSCRIBER | SHOW |
|
53
|
+
| Q | Star Trek TNG |
|
54
|
+
|
55
|
+
|
47
56
|
Scenario: complex example
|
48
57
|
When running "ActiveCucumber.create_many Episode, table" with this table:
|
49
58
|
| SHOW | NAME | YEAR |
|
@@ -23,6 +23,15 @@ Feature: ActiveCucumber.create_one
|
|
23
23
|
And the database contains the show "Star Trek TNG"
|
24
24
|
|
25
25
|
|
26
|
+
Scenario: using context values
|
27
|
+
When running "ActiveCucumber.create_one Subscription, table, context: { current_user: 'Q' }" with this table:
|
28
|
+
| SUBSCRIBER | me |
|
29
|
+
| SHOW | Star Trek TNG |
|
30
|
+
Then the database contains the subscriptions:
|
31
|
+
| SUBSCRIBER | SHOW |
|
32
|
+
| Q | Star Trek TNG |
|
33
|
+
|
34
|
+
|
26
35
|
Scenario: complex example
|
27
36
|
When running "ActiveCucumber.create_one Episode, table" with this table:
|
28
37
|
| SHOW | Star Trek TNG |
|
data/features/support/env.rb
CHANGED
@@ -32,6 +32,12 @@ ActiveRecord::Schema.define do
|
|
32
32
|
t.integer :year
|
33
33
|
t.datetime 'created_at'
|
34
34
|
end
|
35
|
+
|
36
|
+
create_table :subscriptions, force: true do |t|
|
37
|
+
t.string :subscriber
|
38
|
+
t.belongs_to :show
|
39
|
+
t.datetime 'created_at'
|
40
|
+
end
|
35
41
|
end
|
36
42
|
|
37
43
|
|
@@ -49,12 +55,18 @@ FactoryGirl.define do
|
|
49
55
|
year { 1960 + rand(40) }
|
50
56
|
show
|
51
57
|
end
|
58
|
+
|
59
|
+
factory :subscription do
|
60
|
+
subscriber { Faker::Name.name }
|
61
|
+
show
|
62
|
+
end
|
52
63
|
end
|
53
64
|
|
54
65
|
|
55
66
|
Before do
|
56
67
|
Show.delete_all
|
57
68
|
Episode.delete_all
|
69
|
+
Subscription.delete_all
|
58
70
|
@error_checked = false
|
59
71
|
end
|
60
72
|
|
data/features/support/show.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
class SubscriptionCreator < ActiveCucumber::Creator
|
2
|
+
|
3
|
+
def value_for_show show_name
|
4
|
+
Show.find_by(name: show_name) || FactoryGirl.create(:show, name: show_name)
|
5
|
+
end
|
6
|
+
|
7
|
+
def value_for_subscriber subscriber_name
|
8
|
+
subscriber_name == 'me' ? @current_user : subscriber_name
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
data/lib/active_cucumber.rb
CHANGED
@@ -8,16 +8,16 @@ module ActiveCucumber
|
|
8
8
|
|
9
9
|
# Creates entries of the given ActiveRecord class
|
10
10
|
# specified by the given horizontal Cucumber table
|
11
|
-
def self.create_many activerecord_class, cucumber_table
|
12
|
-
builder = ActiveRecordBuilder.new activerecord_class
|
11
|
+
def self.create_many activerecord_class, cucumber_table, context: {}
|
12
|
+
builder = ActiveRecordBuilder.new activerecord_class, context
|
13
13
|
builder.create_many ActiveCucumber.horizontal_table(cucumber_table)
|
14
14
|
end
|
15
15
|
|
16
16
|
|
17
17
|
# Creates an entry of the given ActiveRecord class
|
18
18
|
# specified by the given vertical Cucumber table
|
19
|
-
def self.create_one activerecord_class, cucumber_table
|
20
|
-
builder = ActiveRecordBuilder.new activerecord_class
|
19
|
+
def self.create_one activerecord_class, cucumber_table, context: {}
|
20
|
+
builder = ActiveRecordBuilder.new activerecord_class, context
|
21
21
|
builder.create_record ActiveCucumber.vertical_table(cucumber_table)
|
22
22
|
end
|
23
23
|
|
@@ -3,9 +3,10 @@ module ActiveCucumber
|
|
3
3
|
# Creates ActiveRecord entries with data from given Cucumber tables.
|
4
4
|
class ActiveRecordBuilder
|
5
5
|
|
6
|
-
def initialize activerecord_class
|
6
|
+
def initialize activerecord_class, context
|
7
7
|
@clazz = activerecord_class
|
8
8
|
@creator_class = creator_class
|
9
|
+
@context = context
|
9
10
|
end
|
10
11
|
|
11
12
|
|
@@ -19,7 +20,7 @@ module ActiveCucumber
|
|
19
20
|
|
20
21
|
# Creates a new record with the given attributes in the database
|
21
22
|
def create_record attributes
|
22
|
-
creator = @creator_class.new attributes
|
23
|
+
creator = @creator_class.new attributes, @context
|
23
24
|
FactoryGirl.create @clazz, creator.factorygirl_attributes
|
24
25
|
end
|
25
26
|
|
@@ -7,8 +7,11 @@ module ActiveCucumber
|
|
7
7
|
|
8
8
|
include FactoryGirl::Syntax::Methods
|
9
9
|
|
10
|
-
def initialize attributes
|
10
|
+
def initialize attributes, context
|
11
11
|
@attributes = attributes
|
12
|
+
context.each do |key, value|
|
13
|
+
instance_variable_set "@#{key}", value
|
14
|
+
end
|
12
15
|
end
|
13
16
|
|
14
17
|
# Returns the FactoryGirl version of this Creator's attributes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Goslar
|
@@ -223,6 +223,9 @@ files:
|
|
223
223
|
- features/support/genre.rb
|
224
224
|
- features/support/show.rb
|
225
225
|
- features/support/show_cucumberator.rb
|
226
|
+
- features/support/subscription.rb
|
227
|
+
- features/support/subscription_creator.rb
|
228
|
+
- features/support/subscription_cucumberator.rb
|
226
229
|
- lib/active_cucumber.rb
|
227
230
|
- lib/active_cucumber/active_record_builder.rb
|
228
231
|
- lib/active_cucumber/creator.rb
|