active_cucumber 0.0.1 → 0.0.2
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 +20 -1
- data/README.md +12 -1
- data/Rakefile +14 -2
- data/active_cucumber.gemspec +6 -1
- data/cucumber_lint.yml +13 -0
- data/documentation/horizontal_diff.png +0 -0
- data/documentation/vertical_diff.png +0 -0
- data/features/active_cucumber/create_many.feature +40 -0
- data/features/active_cucumber/create_one.feature +33 -0
- data/features/{cucumparer → active_cucumber}/diff_all.feature +1 -1
- data/features/{cucumparer → active_cucumber}/diff_one.feature +1 -1
- data/features/step_definitions/steps.rb +28 -14
- data/features/support/env.rb +24 -0
- data/features/support/episode_cureator.rb +7 -0
- data/lib/active_cucumber/cureator.rb +86 -0
- data/lib/active_cucumber.rb +28 -0
- metadata +81 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d79075dcae64e837aac60d1fcd14e2afdbd5e3cd
|
4
|
+
data.tar.gz: f44adf57d12377ea1751400a63469af2be5e350c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b644b362eaae699f43e408e9253bf331d7aad0787455a912af9196e8bd4d70b16f1f8aa0722a48a953639162b10b1fa49859d47bdfeba226170cfac582ef64d
|
7
|
+
data.tar.gz: 5a782c450a2166c849c258c64d5174ddae91328d0c8359a13452db7df81e58964bafe8a0819950d49540405d926a97b005aa8bf842504bc0ba55703bb993c6fb
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
active_cucumber (0.0.
|
4
|
+
active_cucumber (0.0.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -24,6 +24,7 @@ GEM
|
|
24
24
|
astrolabe (1.3.1)
|
25
25
|
parser (~> 2.2)
|
26
26
|
builder (3.2.2)
|
27
|
+
colorize (0.7.7)
|
27
28
|
cucumber (2.1.0)
|
28
29
|
builder (>= 2.1.2)
|
29
30
|
cucumber-core (~> 1.3.0)
|
@@ -33,10 +34,21 @@ GEM
|
|
33
34
|
multi_test (>= 0.1.2)
|
34
35
|
cucumber-core (1.3.0)
|
35
36
|
gherkin3 (~> 3.1.0)
|
37
|
+
cucumber_lint (0.1.2)
|
38
|
+
colorize (~> 0.7.7)
|
39
|
+
gherkin (~> 2.12.2)
|
40
|
+
multi_json (~> 1.11.2)
|
36
41
|
diff-lcs (1.2.5)
|
42
|
+
factory_girl (4.5.0)
|
43
|
+
activesupport (>= 3.0.0)
|
44
|
+
faker (1.5.0)
|
45
|
+
i18n (~> 0.5)
|
46
|
+
gherkin (2.12.2)
|
47
|
+
multi_json (~> 1.3)
|
37
48
|
gherkin3 (3.1.2)
|
38
49
|
i18n (0.7.0)
|
39
50
|
json (1.8.3)
|
51
|
+
kappamaki (0.0.3)
|
40
52
|
minitest (5.8.1)
|
41
53
|
mortadella (0.2.1)
|
42
54
|
multi_json (1.11.2)
|
@@ -50,6 +62,8 @@ GEM
|
|
50
62
|
rspec-core (~> 3.3.0)
|
51
63
|
rspec-expectations (~> 3.3.0)
|
52
64
|
rspec-mocks (~> 3.3.0)
|
65
|
+
rspec-collection_matchers (1.1.2)
|
66
|
+
rspec-expectations (>= 2.99.0.beta1)
|
53
67
|
rspec-core (3.3.2)
|
54
68
|
rspec-support (~> 3.3.0)
|
55
69
|
rspec-expectations (3.3.1)
|
@@ -79,9 +93,14 @@ DEPENDENCIES
|
|
79
93
|
activerecord
|
80
94
|
bundler
|
81
95
|
cucumber
|
96
|
+
cucumber_lint
|
97
|
+
factory_girl
|
98
|
+
faker
|
99
|
+
kappamaki
|
82
100
|
mortadella
|
83
101
|
rake
|
84
102
|
rspec
|
103
|
+
rspec-collection_matchers
|
85
104
|
rubocop
|
86
105
|
sqlite3
|
87
106
|
|
data/README.md
CHANGED
@@ -16,6 +16,11 @@ the ones not listed are ignored.
|
|
16
16
|
|
17
17
|
### diff_one!
|
18
18
|
|
19
|
+
<img width="385"
|
20
|
+
height="144"
|
21
|
+
alt="image of a mismatching vertical Cucumber table"
|
22
|
+
src="documentation/vertical_diff.png">
|
23
|
+
|
19
24
|
`ActiveCucumber.diff_one!` compares the given ActiveRecord entry with the given
|
20
25
|
_vertical_ Cucumber table.
|
21
26
|
These tables have their headers on the left side, and are used to describe
|
@@ -41,6 +46,11 @@ end
|
|
41
46
|
|
42
47
|
### diff_all!
|
43
48
|
|
49
|
+
<img width="431"
|
50
|
+
height="95"
|
51
|
+
alt="image of a mismatching vertical Cucumber table"
|
52
|
+
src="documentation/horizontal_diff.png">
|
53
|
+
|
44
54
|
`ActiveCucumber.diff_all!` verifies that the given _horizontal_ Cucumber table
|
45
55
|
describes all existing database entries of the given class.
|
46
56
|
Horizontal Cucumber tables have their headers on top, and define several
|
@@ -80,7 +90,8 @@ for attribute values into the format used in the Cucumber table.
|
|
80
90
|
```ruby
|
81
91
|
class EpisodeCucumberator < Cucumberator
|
82
92
|
|
83
|
-
# In the SHOW column, print the name of the show
|
93
|
+
# In the SHOW column, print the name of the associated show object,
|
94
|
+
# truncated to 10 characters
|
84
95
|
def value_of_show
|
85
96
|
show.name.truncate 10
|
86
97
|
end
|
data/Rakefile
CHANGED
@@ -6,7 +6,19 @@ require 'cucumber/rake/task'
|
|
6
6
|
Cucumber::Rake::Task.new :features
|
7
7
|
task default: %i(lint features)
|
8
8
|
|
9
|
-
desc 'Run
|
10
|
-
task
|
9
|
+
desc 'Run linters'
|
10
|
+
task lint: %w(lint:ruby lint:cucumber)
|
11
|
+
|
12
|
+
desc 'Run Cucumber linter'
|
13
|
+
task 'lint:cucumber' do
|
14
|
+
sh 'bundle exec cucumber_lint'
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Run Ruby linter'
|
18
|
+
task 'lint:ruby' do
|
19
|
+
# NOTE: cannot use "task 'lint:ruby' => [:rubocop]" here,
|
20
|
+
# because the Heroku toolbelt has issues with JRuby.
|
21
|
+
# In particular, running "heroku run rake db:migrate"
|
22
|
+
# fails when JRuby is the active Ruby at this point.
|
11
23
|
sh 'bundle exec rubocop'
|
12
24
|
end
|
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.2'
|
7
7
|
s.authors = ['Kevin Goslar']
|
8
8
|
s.email = ['kevin.goslar@gmail.com']
|
9
9
|
s.summary = %s(ActiveRecord tools for Cucumber)
|
@@ -18,9 +18,14 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.add_development_dependency 'activerecord'
|
19
19
|
s.add_development_dependency 'bundler'
|
20
20
|
s.add_development_dependency 'cucumber'
|
21
|
+
s.add_development_dependency 'cucumber_lint'
|
22
|
+
s.add_development_dependency 'factory_girl'
|
23
|
+
s.add_development_dependency 'faker'
|
24
|
+
s.add_development_dependency 'kappamaki'
|
21
25
|
s.add_development_dependency 'mortadella'
|
22
26
|
s.add_development_dependency 'rake'
|
23
27
|
s.add_development_dependency 'rubocop'
|
24
28
|
s.add_development_dependency 'rspec'
|
29
|
+
s.add_development_dependency 'rspec-collection_matchers'
|
25
30
|
s.add_development_dependency 'sqlite3'
|
26
31
|
end
|
data/cucumber_lint.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
consistent_empty_lines:
|
2
|
+
enabled: true
|
3
|
+
between_description_and_element: 2
|
4
|
+
between_elements: 2
|
5
|
+
between_feature_and_description: 1
|
6
|
+
between_feature_and_element: 1
|
7
|
+
between_scenario_outline_and_examples: 1
|
8
|
+
|
9
|
+
consistent_table_whitespace:
|
10
|
+
enabled: false
|
11
|
+
|
12
|
+
consistent_table_headers:
|
13
|
+
enabled: false
|
Binary file
|
Binary file
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Feature: ActiveCucumber.create_many
|
2
|
+
|
3
|
+
As a Cucumber user
|
4
|
+
I want to create database records using Cucumber tables
|
5
|
+
So that I can easily and intuitively set up my test environment.
|
6
|
+
|
7
|
+
|
8
|
+
Scenario: creating string columns
|
9
|
+
When running "ActiveCucumber.create_many Episode, table" with this table:
|
10
|
+
| NAME |
|
11
|
+
| Encounter at Farpoint |
|
12
|
+
| All Good Things |
|
13
|
+
Then the database contains the given episodes
|
14
|
+
|
15
|
+
|
16
|
+
Scenario: creating integer columns
|
17
|
+
When running "ActiveCucumber.create_many Episode, table" with this table:
|
18
|
+
| YEAR |
|
19
|
+
| 1987 |
|
20
|
+
| 1994 |
|
21
|
+
Then the database contains the given episodes
|
22
|
+
|
23
|
+
|
24
|
+
Scenario: creating associated objects
|
25
|
+
When running "ActiveCucumber.create_many Episode, table" with this table:
|
26
|
+
| SHOW | NAME |
|
27
|
+
| Star Trek TNG | Encounter at Farpoint |
|
28
|
+
| Star Trek TNG | All Good Things |
|
29
|
+
Then the database contains the given episodes
|
30
|
+
And the database contains the show "Star Trek TNG"
|
31
|
+
|
32
|
+
|
33
|
+
Scenario: complex example
|
34
|
+
When running "ActiveCucumber.create_many Episode, table" with this table:
|
35
|
+
| SHOW | NAME | YEAR |
|
36
|
+
| Star Trek TNG | Encounter at Farpoint | 1987 |
|
37
|
+
| Star Trek TOS | The Paradise Syndrome | 1994 |
|
38
|
+
Then the database contains the given episodes
|
39
|
+
And the database contains the shows "Star Trek TNG" and "Star Trek TOS"
|
40
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: ActiveCucumber.create_one
|
2
|
+
|
3
|
+
(see ./create_many.feature)
|
4
|
+
|
5
|
+
|
6
|
+
Scenario: creating string columns
|
7
|
+
When running "ActiveCucumber.create_one Episode, table" with this table:
|
8
|
+
| NAME | Encounter at Farpoint |
|
9
|
+
Then the database contains the given episode
|
10
|
+
|
11
|
+
|
12
|
+
Scenario: creating integer columns
|
13
|
+
When running "ActiveCucumber.create_one Episode, table" with this table:
|
14
|
+
| YEAR | 1994 |
|
15
|
+
Then the database contains the given episode
|
16
|
+
|
17
|
+
|
18
|
+
Scenario: creating associated objects
|
19
|
+
When running "ActiveCucumber.create_one Episode, table" with this table:
|
20
|
+
| SHOW | Star Trek TNG |
|
21
|
+
| NAME | Encounter at Farpoint |
|
22
|
+
Then the database contains the given episode
|
23
|
+
And the database contains the show "Star Trek TNG"
|
24
|
+
|
25
|
+
|
26
|
+
Scenario: complex example
|
27
|
+
When running "ActiveCucumber.create_one Episode, table" with this table:
|
28
|
+
| SHOW | Star Trek TNG |
|
29
|
+
| NAME | Encounter at Farpoint |
|
30
|
+
| YEAR | 1987 |
|
31
|
+
Then the database contains the given episode
|
32
|
+
And the database contains the show "Star Trek TNG"
|
33
|
+
|
@@ -1,41 +1,55 @@
|
|
1
1
|
Given(/^the TV episode:$/) do |table|
|
2
|
-
data = table
|
2
|
+
data = ActiveCucumber.vertical_table table
|
3
3
|
show = Show.find_or_create_by name: data['SHOW']
|
4
4
|
@episode = show.episodes.create name: data['NAME'], year: data['YEAR']
|
5
5
|
end
|
6
6
|
|
7
7
|
|
8
8
|
Given(/^the TV episodes:$/) do |table|
|
9
|
-
table.
|
10
|
-
|
11
|
-
show
|
12
|
-
show.episodes.create name: row[:name], year: row[:year]
|
9
|
+
ActiveCucumber.horizontal_table(table).each do |row|
|
10
|
+
show = Show.find_or_create_by name: row['SHOW']
|
11
|
+
show.episodes.create name: row['NAME'], year: row['YEAR']
|
13
12
|
end
|
14
13
|
end
|
15
14
|
|
16
15
|
|
17
16
|
|
18
|
-
# rubocop:disable Lint/UnusedBlockArgument
|
19
17
|
Then(/^running "([^"]+)" with this table:$/) do |code, table|
|
18
|
+
@previous_table = table
|
20
19
|
begin
|
21
|
-
@
|
20
|
+
@error_happened = false
|
22
21
|
@result = eval code
|
23
22
|
rescue StandardError => e
|
24
|
-
@
|
23
|
+
@error_happened = true
|
25
24
|
@error_message = e.message
|
25
|
+
@exception = e
|
26
26
|
end
|
27
27
|
end
|
28
|
-
# rubocop:enable Lint/UnusedBlockArgument
|
29
28
|
|
30
29
|
|
31
|
-
Then(/^the
|
32
|
-
|
33
|
-
|
30
|
+
Then(/^the database contains the given episode$/) do
|
31
|
+
expect(Episode).to have(1).instance
|
32
|
+
ActiveCucumber.diff_one! Episode.first, @previous_table
|
34
33
|
end
|
35
34
|
|
36
35
|
|
37
|
-
Then(/^the
|
38
|
-
|
36
|
+
Then(/^the database contains the given episodes$/) do
|
37
|
+
ActiveCucumber.diff_all! Episode, @previous_table
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
Then(/^the database contains the shows? (.+)$/) do |show_names|
|
42
|
+
expect(Show.all.map(&:name)).to match Kappamaki.from_sentence show_names
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
Then(/^the test (passes|fails)$/) do |expected_result|
|
47
|
+
@error_checked = true
|
48
|
+
if expected_result == 'passes' && @error_happened
|
49
|
+
p @error_message
|
50
|
+
p @exception
|
51
|
+
end
|
52
|
+
expect(@error_happened).to be expected_result != 'passes'
|
39
53
|
end
|
40
54
|
|
41
55
|
|
data/features/support/env.rb
CHANGED
@@ -2,6 +2,10 @@ require 'active_record'
|
|
2
2
|
require 'sqlite3'
|
3
3
|
require 'mortadella'
|
4
4
|
require 'active_cucumber'
|
5
|
+
require 'factory_girl'
|
6
|
+
require 'faker'
|
7
|
+
require 'kappamaki'
|
8
|
+
require 'rspec/collection_matchers'
|
5
9
|
|
6
10
|
|
7
11
|
ActiveRecord::Base.establish_connection(
|
@@ -9,6 +13,7 @@ ActiveRecord::Base.establish_connection(
|
|
9
13
|
database: ':memory:'
|
10
14
|
)
|
11
15
|
|
16
|
+
|
12
17
|
ActiveRecord::Schema.define do
|
13
18
|
create_table :shows, force: true do |t|
|
14
19
|
t.string :name
|
@@ -23,7 +28,26 @@ ActiveRecord::Schema.define do
|
|
23
28
|
end
|
24
29
|
end
|
25
30
|
|
31
|
+
|
32
|
+
FactoryGirl.define do
|
33
|
+
factory :show do
|
34
|
+
name { Faker::Book.title }
|
35
|
+
end
|
36
|
+
|
37
|
+
factory :episode do
|
38
|
+
name { Faker::Book.title }
|
39
|
+
year { 1960 + rand(40) }
|
40
|
+
show
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
26
45
|
Before do
|
27
46
|
Show.delete_all
|
28
47
|
Episode.delete_all
|
48
|
+
@error_checked = false
|
49
|
+
end
|
50
|
+
|
51
|
+
After do
|
52
|
+
expect(@error_happened).to be false unless @error_checked
|
29
53
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module ActiveCucumber
|
2
|
+
|
3
|
+
# Creates ActiveRecord entries
|
4
|
+
class Cureator
|
5
|
+
|
6
|
+
# Returns the Cureator instance for the given ActiveRecord class.
|
7
|
+
def self.for activerecord_class
|
8
|
+
cureator_class(activerecord_class).new activerecord_class
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def initialize activerecord_class
|
13
|
+
@clazz = activerecord_class
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
# Creates all entries in the given Cucumber table
|
18
|
+
#
|
19
|
+
# Assumes a horizontal Cucumber table.
|
20
|
+
def create_records table
|
21
|
+
table.each do |row|
|
22
|
+
create_record row
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# Creates a new record in the database,
|
28
|
+
# of the given class, with the given Cucumber-formatted String attributes.
|
29
|
+
def create_record attributes
|
30
|
+
FactoryGirl.create @clazz, factorygirl_row(symbolized_hash(attributes))
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# Returns the Cucumberator subclass to be used by this Cucumparer instance
|
37
|
+
def self.cureator_class activerecord_class
|
38
|
+
cureator_class_name(activerecord_class).constantize
|
39
|
+
rescue NameError
|
40
|
+
Cureator
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# Returns the name of the Cucumberator subclass to be used by this Cucumparer instance.
|
45
|
+
def self.cureator_class_name activerecord_class
|
46
|
+
"#{activerecord_class.name}Cureator"
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
# Returns the given row, with values converted to FactoryGirl format
|
51
|
+
#
|
52
|
+
# Assumes the keys of the row are hashes
|
53
|
+
def factorygirl_row row
|
54
|
+
{}.tap do |result|
|
55
|
+
row.each do |key, value|
|
56
|
+
method = method_name key
|
57
|
+
result[key] = respond_to?(method) ? send(method, value) : value
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
# Returns the name of the value_for method for the given key
|
64
|
+
def method_name key
|
65
|
+
"value_for_#{key}"
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
# Converts the key given in Cucumber format into FactoryGirl format
|
70
|
+
def normalized_key key
|
71
|
+
key.downcase.parameterize.underscore
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
# Returns a new hash with the keys normalized to symbols
|
76
|
+
def symbolized_hash row
|
77
|
+
{}.tap do |result|
|
78
|
+
row.each do |key, value|
|
79
|
+
result[normalized_key key] = value
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
data/lib/active_cucumber.rb
CHANGED
@@ -1,9 +1,23 @@
|
|
1
1
|
require 'active_cucumber/cucumparer'
|
2
2
|
require 'active_cucumber/cucumberator'
|
3
|
+
require 'active_cucumber/cureator'
|
3
4
|
|
4
5
|
# The main namespace for this gem
|
5
6
|
module ActiveCucumber
|
6
7
|
|
8
|
+
# Creates entries of the given ActiveRecord class
|
9
|
+
# specified by the given Cucumber table
|
10
|
+
def self.create_many activerecord_class, cucumber_table
|
11
|
+
Cureator.for(activerecord_class).create_records ActiveCucumber.horizontal_table(cucumber_table)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Creates an entry of the given ActiveRecord class
|
15
|
+
# specified by the given Cucumber table
|
16
|
+
def self.create_one activerecord_class, cucumber_table
|
17
|
+
Cureator.for(activerecord_class).create_record ActiveCucumber.vertical_table(cucumber_table)
|
18
|
+
end
|
19
|
+
|
20
|
+
|
7
21
|
# Verifies that the database table for the given ActiveRecord class
|
8
22
|
# matches the given horizontal Cucumber table.
|
9
23
|
#
|
@@ -13,10 +27,24 @@ module ActiveCucumber
|
|
13
27
|
cucumber_table.diff! cucumparer.to_horizontal_table
|
14
28
|
end
|
15
29
|
|
30
|
+
|
16
31
|
# Verifies that the given object matches the given vertical Cucumber table
|
17
32
|
def self.diff_one! object, cucumber_table
|
18
33
|
cucumparer = Cucumparer.new object.class, cucumber_table
|
19
34
|
cucumber_table.diff! cucumparer.to_vertical_table(object)
|
20
35
|
end
|
21
36
|
|
37
|
+
|
38
|
+
# Returns the given horizontal Cucumber table in standardized format
|
39
|
+
def self.horizontal_table table
|
40
|
+
table.hashes
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# Returns the given vertical Cucumber table in standardized format
|
45
|
+
def self.vertical_table table
|
46
|
+
table.rows_hash
|
47
|
+
end
|
48
|
+
|
49
|
+
|
22
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Goslar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -52,6 +52,62 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: cucumber_lint
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: factory_girl
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: faker
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: kappamaki
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
55
111
|
- !ruby/object:Gem::Dependency
|
56
112
|
name: mortadella
|
57
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +164,20 @@ dependencies:
|
|
108
164
|
- - ">="
|
109
165
|
- !ruby/object:Gem::Version
|
110
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec-collection_matchers
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
111
181
|
- !ruby/object:Gem::Dependency
|
112
182
|
name: sqlite3
|
113
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,16 +208,23 @@ files:
|
|
138
208
|
- Rakefile
|
139
209
|
- active_cucumber.gemspec
|
140
210
|
- circle.yml
|
141
|
-
-
|
142
|
-
-
|
211
|
+
- cucumber_lint.yml
|
212
|
+
- documentation/horizontal_diff.png
|
213
|
+
- documentation/vertical_diff.png
|
214
|
+
- features/active_cucumber/create_many.feature
|
215
|
+
- features/active_cucumber/create_one.feature
|
216
|
+
- features/active_cucumber/diff_all.feature
|
217
|
+
- features/active_cucumber/diff_one.feature
|
143
218
|
- features/step_definitions/steps.rb
|
144
219
|
- features/support/env.rb
|
145
220
|
- features/support/episode.rb
|
146
221
|
- features/support/episode_cucumberator.rb
|
222
|
+
- features/support/episode_cureator.rb
|
147
223
|
- features/support/show.rb
|
148
224
|
- lib/active_cucumber.rb
|
149
225
|
- lib/active_cucumber/cucumberator.rb
|
150
226
|
- lib/active_cucumber/cucumparer.rb
|
227
|
+
- lib/active_cucumber/cureator.rb
|
151
228
|
homepage: https://github.com/Originate/active_cucumber
|
152
229
|
licenses:
|
153
230
|
- MIT
|