active_cucumber 0.0.7 → 0.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1048545c953152ca466b938200d8ff3394db73e0
4
- data.tar.gz: 78945b8fe777ae5449fd7c3ce61f6853da5f9cdf
3
+ metadata.gz: 7d0cb88ebda8bc14d3664472e9701713e4d4bcff
4
+ data.tar.gz: baffe5a2484e68525d0c473bba68fc77506b3ffd
5
5
  SHA512:
6
- metadata.gz: 5ebaf30097d41bae186253bba0e1dcbdf595e3b593cbad28c466c35a0acc0fbb0aeaeaaf193c4f1f5d20ac0b00195328740697de7e900825651241c539584235
7
- data.tar.gz: bc8030615a10e8aa15474bafb9e9745645936b151bccb6be1d687970e635b232320d673c2b61938a61054ed58130b1a11920a8b9a6b14fec08ddd939f998c3ad
6
+ metadata.gz: 1350ecc0b1709523fc140a997fcb454c4e5bfba5b60ba1b862f39edc01bb1a58b62947eeead2f8639d0cac36387e992880ed81d3eddbcfd9938b7191416a29b0
7
+ data.tar.gz: 3523c3ea4f2d48f7c667e608b136ec5cd8434f27e3d4d4ae1c9823252cdfe356b20aff5026cab4839d36f2f9ff2168df522dba36225ddcd7fd4c847a62d9a2dc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_cucumber (0.0.7)
4
+ active_cucumber (0.0.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # ActiveCucumber [![Circle CI](https://circleci.com/gh/Originate/active_cucumber.svg?style=shield)](https://circleci.com/gh/Originate/active_cucumber)
1
+ # ActiveCucumber [![Circle CI](https://circleci.com/gh/Originate/active_cucumber.svg?style=shield)](https://circleci.com/gh/Originate/active_cucumber) [![Dependency Status](https://gemnasium.com/Originate/active_cucumber.svg)](https://gemnasium.com/Originate/active_cucumber) [![Gem Version](https://badge.fury.io/rb/active_cucumber.svg)](https://badge.fury.io/rb/active_cucumber)
2
2
 
3
3
  High-level Cucumber helpers for performing
4
4
  [ActiveRecord](http://guides.rubyonrails.org/active_record_basics.html)-based
@@ -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.7'
6
+ s.version = '0.0.8'
7
7
  s.authors = ['Kevin Goslar']
8
8
  s.email = ['kevin.goslar@gmail.com']
9
9
  s.summary = %s(ActiveRecord tools for Cucumber)
@@ -30,6 +30,15 @@ Feature: ActiveCucumber.create_many
30
30
  And the database contains the show "Star Trek TNG"
31
31
 
32
32
 
33
+ Scenario: creating associated objects with a nil value
34
+ When running "ActiveCucumber.create_many Show, table" with this table:
35
+ | DIRECTOR | NAME |
36
+ | | Directionless |
37
+ | Gene Roddenberry | Star Trek TNG |
38
+ Then the database contains the given shows
39
+ And "Directionless" does not have a director
40
+
41
+
33
42
  Scenario: creating associated objects that depend on other associated objects
34
43
  When running "ActiveCucumber.create_many Episode, table" with this table:
35
44
  | GENRE | SHOW | NAME |
@@ -11,7 +11,7 @@ end
11
11
 
12
12
 
13
13
 
14
- Then(/^running "([^"]+)" with this table:$/) do |code, table|
14
+ When(/^running "([^"]+)" with this table:$/) do |code, table|
15
15
  @previous_table = table
16
16
  begin
17
17
  @error_happened = false
@@ -23,6 +23,10 @@ Then(/^running "([^"]+)" with this table:$/) do |code, table|
23
23
  end
24
24
  end
25
25
 
26
+ Then(/^"(.*?)" does not have a director$/) do |show_name|
27
+ expect(Show.find_by(name: show_name).director).to be nil
28
+ end
29
+
26
30
 
27
31
  Then(/^the database contains the given episode$/) do
28
32
  expect(Episode).to have(1).instance
@@ -34,6 +38,9 @@ Then(/^the database contains the given episodes$/) do
34
38
  ActiveCucumber.diff_all! Episode, @previous_table
35
39
  end
36
40
 
41
+ Then(/^the database contains the given shows$/) do
42
+ ActiveCucumber.diff_all! Show, @previous_table
43
+ end
37
44
 
38
45
  Then(/^the database contains the (\w+):$/) do |class_name, table|
39
46
  ActiveCucumber.diff_all! class_name.humanize.singularize.constantize, table
@@ -0,0 +1,3 @@
1
+ class Director < ActiveRecord::Base
2
+ has_many :shows
3
+ end
@@ -22,6 +22,7 @@ ActiveRecord::Schema.define do
22
22
 
23
23
  create_table :shows, force: true do |t|
24
24
  t.belongs_to :genre
25
+ t.belongs_to :director
25
26
  t.string :name
26
27
  t.datetime 'created_at'
27
28
  end
@@ -38,6 +39,11 @@ ActiveRecord::Schema.define do
38
39
  t.belongs_to :show
39
40
  t.datetime 'created_at'
40
41
  end
42
+
43
+ create_table :directors, force: true do |t|
44
+ t.string :name
45
+ t.datetime 'created_at'
46
+ end
41
47
  end
42
48
 
43
49
 
@@ -48,6 +54,7 @@ FactoryGirl.define do
48
54
 
49
55
  factory :show do
50
56
  name { Faker::Book.title }
57
+ director
51
58
  end
52
59
 
53
60
  factory :episode do
@@ -60,6 +67,10 @@ FactoryGirl.define do
60
67
  subscriber { Faker::Name.name }
61
68
  show
62
69
  end
70
+
71
+ factory :director do
72
+ name { Faker::Name.name }
73
+ end
63
74
  end
64
75
 
65
76
 
@@ -67,6 +78,7 @@ Before do
67
78
  Show.delete_all
68
79
  Episode.delete_all
69
80
  Subscription.delete_all
81
+ Director.delete_all
70
82
  @error_checked = false
71
83
  end
72
84
 
@@ -1,5 +1,6 @@
1
1
  class Show < ActiveRecord::Base
2
2
  belongs_to :genre
3
+ belongs_to :director
3
4
  has_many :episodes
4
5
  has_many :subscriptions
5
6
  end
@@ -0,0 +1,8 @@
1
+ class ShowCreator < ActiveCucumber::Creator
2
+
3
+ def value_for_director director_name
4
+ return nil if director_name.blank?
5
+ Director.find_by(name: director_name) || FactoryGirl.create(:director, name: director_name)
6
+ end
7
+
8
+ end
@@ -1,5 +1,9 @@
1
1
  class ShowCucumberator < ActiveCucumber::Cucumberator
2
2
 
3
+ def value_for_director
4
+ director ? director.name : ''
5
+ end
6
+
3
7
  def value_for_genre
4
8
  genre.name
5
9
  end
@@ -19,7 +19,7 @@ module ActiveCucumber
19
19
  symbolize_attributes!
20
20
  @attributes.each do |key, value|
21
21
  next unless respond_to?(method = method_name(key))
22
- if (result = send method, value)
22
+ if (result = send method, value) || value.nil?
23
23
  @attributes[key] = result if @attributes.key? key
24
24
  else
25
25
  @attributes.delete key
@@ -48,12 +48,16 @@ module ActiveCucumber
48
48
  key.downcase.parameterize.underscore.to_sym
49
49
  end
50
50
 
51
+ def normalized_value value
52
+ value.blank? ? nil : value
53
+ end
54
+
51
55
 
52
56
  # Makes the keys on @attributes be normalized symbols
53
57
  def symbolize_attributes!
54
58
  @attributes = {}.tap do |result|
55
59
  @attributes.each do |key, value|
56
- result[normalized_key key] = value
60
+ result[normalized_key key] = normalized_value value
57
61
  end
58
62
  end
59
63
  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.7
4
+ version: 0.0.8
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-26 00:00:00.000000000 Z
11
+ date: 2015-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -216,12 +216,14 @@ files:
216
216
  - features/active_cucumber/diff_all.feature
217
217
  - features/active_cucumber/diff_one.feature
218
218
  - features/step_definitions/steps.rb
219
+ - features/support/director.rb
219
220
  - features/support/env.rb
220
221
  - features/support/episode.rb
221
222
  - features/support/episode_creator.rb
222
223
  - features/support/episode_cucumberator.rb
223
224
  - features/support/genre.rb
224
225
  - features/support/show.rb
226
+ - features/support/show_creator.rb
225
227
  - features/support/show_cucumberator.rb
226
228
  - features/support/subscription.rb
227
229
  - features/support/subscription_creator.rb