cucumber_factory 2.4.0 → 2.5.0

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
  SHA256:
3
- metadata.gz: 78565ce9629eae8ff1b24176f63ad3fad1888e8655512111abbfab093a5055c2
4
- data.tar.gz: 872f23d4281d15207b32b70a763de61c86754528480c1583a6833cd9ced941c3
3
+ metadata.gz: bf3824a0f6c872595184e9e5b772fd86a1620d680ad201cde8b07fb53d57541c
4
+ data.tar.gz: cfc9cf7ffa2f07b79f307f058525a4c14db4d27f40cd57b7c17768994d4e71fa
5
5
  SHA512:
6
- metadata.gz: 7efebf9e96a5c1c84d0c04e7c34f8bb652c2a30d44176ea4787d0e7deb8315d87840ab92906c769170189ea125a2d3bee0f45c64db053f8605064e60069471ef
7
- data.tar.gz: e676696b08c3cf2beee1266d3c667b725988343794d110b0d3b1d70ad80ea6aa2b253b920d13312261fa0ac21eba5482171b5f1f126b522e258b2ffc76d50a66
6
+ metadata.gz: bbf5e11cd62c8fe595c782ba1d216ce430363eb6bd38dc8a2ce918851afd30bf01af8c6dfa95ded9a9612b9264e2479a466e3539358557340e7cede1eabc815a
7
+ data.tar.gz: c92ba2dac384b42969ef024d15afd7a368f72f80e5ec2c1f6d3bbb83dc4135a151ebe70d45c09b018fddfd5e4ae501a7cbcc01dc9d292652d95e1c066e0eb161
@@ -22,10 +22,6 @@ jobs:
22
22
  fail-fast: false
23
23
  matrix:
24
24
  include:
25
- - ruby: 2.2.10
26
- gemfile: Gemfile.cucumber-1.3
27
- - ruby: 2.2.10
28
- gemfile: Gemfile.cucumber-2.4
29
25
  - ruby: 2.5.3
30
26
  gemfile: Gemfile.cucumber-1.3
31
27
  - ruby: 2.5.3
@@ -34,12 +30,19 @@ jobs:
34
30
  gemfile: Gemfile.cucumber-3.0
35
31
  - ruby: 2.5.3
36
32
  gemfile: Gemfile.cucumber-3.1
33
+
37
34
  - ruby: 2.6.6
38
35
  gemfile: Gemfile.cucumber-4.1
36
+
39
37
  - ruby: 2.7.2
40
38
  gemfile: Gemfile.cucumber-5.3
39
+
40
+ - ruby: 3.0.0
41
+ gemfile: Gemfile.cucumber-4.1
41
42
  - ruby: 3.0.0
42
43
  gemfile: Gemfile.cucumber-5.3
44
+ - ruby: 3.0.0
45
+ gemfile: Gemfile.rails-7
43
46
  env:
44
47
  BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
45
48
  steps:
data/CHANGELOG.md CHANGED
@@ -15,6 +15,18 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
15
15
 
16
16
  -
17
17
 
18
+ ## 2.5.0 - 2022-09-15
19
+
20
+ ### Compatible changes
21
+
22
+ - Treat transient factory_bot attributes as associations if they are named like a factory.
23
+
24
+ ## 2.4.1 - 2022-03-16
25
+
26
+ ### Compatible changes
27
+
28
+ - Enabled MFA for RubyGems
29
+
18
30
  ## 2.4.0 - 2021-03-30
19
31
 
20
32
  ### Compatible changes
data/Gemfile CHANGED
@@ -1 +1 @@
1
- ./Gemfile.cucumber-2.4
1
+ Gemfile.cucumber-2.4
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cucumber_factory (2.4.0)
4
+ cucumber_factory (2.5.0)
5
5
  activerecord
6
6
  activesupport
7
7
  cucumber
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cucumber_factory (2.4.0)
4
+ cucumber_factory (2.5.0)
5
5
  activerecord
6
6
  activesupport
7
7
  cucumber
@@ -92,4 +92,4 @@ DEPENDENCIES
92
92
  rspec (~> 3.0)
93
93
 
94
94
  BUNDLED WITH
95
- 1.17.3
95
+ 2.3.0
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cucumber_factory (2.4.0)
4
+ cucumber_factory (2.5.0)
5
5
  activerecord
6
6
  activesupport
7
7
  cucumber
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cucumber_factory (2.4.0)
4
+ cucumber_factory (2.5.0)
5
5
  activerecord
6
6
  activesupport
7
7
  cucumber
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cucumber_factory (2.4.0)
4
+ cucumber_factory (2.5.0)
5
5
  activerecord
6
6
  activesupport
7
7
  cucumber
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cucumber_factory (2.4.0)
4
+ cucumber_factory (2.5.0)
5
5
  activerecord
6
6
  activesupport
7
7
  cucumber
data/Gemfile.lock CHANGED
@@ -1 +1 @@
1
- ./Gemfile.cucumber-2.4.lock
1
+ Gemfile.cucumber-2.4.lock
data/Gemfile.rails-7 ADDED
@@ -0,0 +1,20 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Runtime dependencies
4
+ gem 'cucumber', '~> 5.3.0'
5
+ gem 'activesupport', '~> 7.0.0'
6
+ gem 'activerecord', '~> 7.0.0'
7
+ gem 'pg'
8
+
9
+ # Development dependencies
10
+ gem 'rspec', '~> 3.0'
11
+ gem 'rake'
12
+ gem 'database_cleaner'
13
+ gem 'gemika'
14
+
15
+ # Test dependencies
16
+ gem 'factory_bot'
17
+ gem 'carrierwave'
18
+
19
+ # Gem under test
20
+ gem 'cucumber_factory', :path => '.'
@@ -0,0 +1,138 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cucumber_factory (2.5.0)
5
+ activerecord
6
+ activesupport
7
+ cucumber
8
+ cucumber_priority (>= 0.2.0)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ activemodel (7.0.0)
14
+ activesupport (= 7.0.0)
15
+ activerecord (7.0.0)
16
+ activemodel (= 7.0.0)
17
+ activesupport (= 7.0.0)
18
+ activesupport (7.0.0)
19
+ concurrent-ruby (~> 1.0, >= 1.0.2)
20
+ i18n (>= 1.6, < 2)
21
+ minitest (>= 5.1)
22
+ tzinfo (~> 2.0)
23
+ addressable (2.8.0)
24
+ public_suffix (>= 2.0.2, < 5.0)
25
+ builder (3.2.4)
26
+ carrierwave (2.2.2)
27
+ activemodel (>= 5.0.0)
28
+ activesupport (>= 5.0.0)
29
+ addressable (~> 2.6)
30
+ image_processing (~> 1.1)
31
+ marcel (~> 1.0.0)
32
+ mini_mime (>= 0.1.3)
33
+ ssrf_filter (~> 1.0)
34
+ concurrent-ruby (1.1.9)
35
+ cucumber (5.3.0)
36
+ builder (~> 3.2, >= 3.2.4)
37
+ cucumber-core (~> 8.0, >= 8.0.1)
38
+ cucumber-create-meta (~> 2.0, >= 2.0.2)
39
+ cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
40
+ cucumber-gherkin (~> 15.0, >= 15.0.2)
41
+ cucumber-html-formatter (~> 9.0, >= 9.0.0)
42
+ cucumber-messages (~> 13.1, >= 13.1.0)
43
+ cucumber-wire (~> 4.0, >= 4.0.1)
44
+ diff-lcs (~> 1.4, >= 1.4.4)
45
+ multi_test (~> 0.1, >= 0.1.2)
46
+ sys-uname (~> 1.2, >= 1.2.1)
47
+ cucumber-core (8.0.1)
48
+ cucumber-gherkin (~> 15.0, >= 15.0.2)
49
+ cucumber-messages (~> 13.0, >= 13.0.1)
50
+ cucumber-tag-expressions (~> 2.0, >= 2.0.4)
51
+ cucumber-create-meta (2.0.4)
52
+ cucumber-messages (~> 13.1, >= 13.1.0)
53
+ sys-uname (~> 1.2, >= 1.2.1)
54
+ cucumber-cucumber-expressions (10.3.0)
55
+ cucumber-gherkin (15.0.2)
56
+ cucumber-messages (~> 13.0, >= 13.0.1)
57
+ cucumber-html-formatter (9.0.0)
58
+ cucumber-messages (~> 13.0, >= 13.0.1)
59
+ cucumber-messages (13.2.1)
60
+ protobuf-cucumber (~> 3.10, >= 3.10.8)
61
+ cucumber-tag-expressions (2.0.4)
62
+ cucumber-wire (4.0.1)
63
+ cucumber-core (~> 8.0, >= 8.0.1)
64
+ cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
65
+ cucumber-messages (~> 13.0, >= 13.0.1)
66
+ cucumber_priority (0.3.2)
67
+ cucumber
68
+ database_cleaner (2.0.1)
69
+ database_cleaner-active_record (~> 2.0.0)
70
+ database_cleaner-active_record (2.0.1)
71
+ activerecord (>= 5.a)
72
+ database_cleaner-core (~> 2.0.0)
73
+ database_cleaner-core (2.0.1)
74
+ diff-lcs (1.4.4)
75
+ factory_bot (6.2.0)
76
+ activesupport (>= 5.0.0)
77
+ ffi (1.15.4)
78
+ gemika (0.6.1)
79
+ i18n (1.8.11)
80
+ concurrent-ruby (~> 1.0)
81
+ image_processing (1.12.1)
82
+ mini_magick (>= 4.9.5, < 5)
83
+ ruby-vips (>= 2.0.17, < 3)
84
+ marcel (1.0.2)
85
+ middleware (0.1.0)
86
+ mini_magick (4.11.0)
87
+ mini_mime (1.1.2)
88
+ minitest (5.15.0)
89
+ multi_test (0.1.2)
90
+ pg (1.2.3)
91
+ protobuf-cucumber (3.10.8)
92
+ activesupport (>= 3.2)
93
+ middleware
94
+ thor
95
+ thread_safe
96
+ public_suffix (4.0.6)
97
+ rake (13.0.6)
98
+ rspec (3.10.0)
99
+ rspec-core (~> 3.10.0)
100
+ rspec-expectations (~> 3.10.0)
101
+ rspec-mocks (~> 3.10.0)
102
+ rspec-core (3.10.1)
103
+ rspec-support (~> 3.10.0)
104
+ rspec-expectations (3.10.1)
105
+ diff-lcs (>= 1.2.0, < 2.0)
106
+ rspec-support (~> 3.10.0)
107
+ rspec-mocks (3.10.2)
108
+ diff-lcs (>= 1.2.0, < 2.0)
109
+ rspec-support (~> 3.10.0)
110
+ rspec-support (3.10.3)
111
+ ruby-vips (2.1.4)
112
+ ffi (~> 1.12)
113
+ ssrf_filter (1.0.7)
114
+ sys-uname (1.2.2)
115
+ ffi (~> 1.1)
116
+ thor (1.1.0)
117
+ thread_safe (0.3.6)
118
+ tzinfo (2.0.4)
119
+ concurrent-ruby (~> 1.0)
120
+
121
+ PLATFORMS
122
+ x86_64-linux
123
+
124
+ DEPENDENCIES
125
+ activerecord (~> 7.0.0)
126
+ activesupport (~> 7.0.0)
127
+ carrierwave
128
+ cucumber (~> 5.3.0)
129
+ cucumber_factory!
130
+ database_cleaner
131
+ factory_bot
132
+ gemika
133
+ pg
134
+ rake
135
+ rspec (~> 3.0)
136
+
137
+ BUNDLED WITH
138
+ 2.3.0
@@ -11,6 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.summary = %q{Create records from Cucumber features without writing step definitions.}
12
12
  s.description = %q{Cucumber Factory allows you to create ActiveRecord models from your Cucumber features without writing step definitions for each model.}
13
13
  s.license = 'MIT'
14
+ s.metadata = { 'rubygems_mfa_required' => 'true' }
14
15
 
15
16
  s.files = `git ls-files`.split("\n")
16
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -22,6 +22,12 @@ module CucumberFactory
22
22
  [strategy, transient_attributes]
23
23
  end
24
24
 
25
+ def class_from_factory(model_prose)
26
+ if (factory = factory_bot_factory(model_prose, []))
27
+ factory.build_class
28
+ end
29
+ end
30
+
25
31
  def parse_model_class(model_prose)
26
32
  underscored_model_name(model_prose).camelize.constantize
27
33
  end
@@ -40,11 +46,13 @@ module CucumberFactory
40
46
  def factory_bot_factory(model_prose, variants)
41
47
  return unless factory_bot_class
42
48
 
49
+ factories = factory_bot_class.factories
50
+
43
51
  factory_name = factory_name_from_prose(model_prose)
44
- factory = factory_bot_class.factories[factory_name]
52
+ factory = factories.registered?(factory_name) && factories[factory_name]
45
53
 
46
54
  if factory.nil? && variants.present?
47
- factory = factory_bot_class.factories[variants[0]]
55
+ factory = factories.registered?(variants[0]) && factories[variants[0]]
48
56
  end
49
57
 
50
58
  factory
@@ -207,6 +207,9 @@ module CucumberFactory
207
207
  if Object.const_defined?(klass_name)
208
208
  association_class = klass_name.constantize
209
209
  associated = true
210
+ elsif (factory_class = CucumberFactory::BuildStrategy.class_from_factory(attribute.to_s))
211
+ association_class = factory_class
212
+ associated = true
210
213
  end
211
214
  else
212
215
  associated = false
@@ -1,3 +1,3 @@
1
1
  module CucumberFactory
2
- VERSION = '2.4.0'
2
+ VERSION = '2.5.0'
3
3
  end
@@ -1 +1 @@
1
- spec/assets/file.txt
1
+ file.txt
@@ -45,4 +45,10 @@ describe CucumberFactory::BuildStrategy do
45
45
 
46
46
  end
47
47
 
48
+ describe '.class_from_factory' do
49
+ it 'returns the class associated with a factory_bot factory' do
50
+ described_class.class_from_factory('film').should == Movie
51
+ end
52
+ end
53
+
48
54
  end
@@ -304,6 +304,14 @@ describe 'steps provided by cucumber_factory' do
304
304
  user.reviewed_movies.first.title.should == 'Sunshine'
305
305
  end
306
306
 
307
+ it 'allow associations for transient attributes if they are named like a factory' do
308
+ invoke_cucumber_step('there is a movie with the title "Sunshine"')
309
+ invoke_cucumber_step('there is a user with the film "Sunshine"')
310
+ user = User.last
311
+ user.reviewed_movies.count.should == 1
312
+ user.reviewed_movies.first.title.should == 'Sunshine'
313
+ end
314
+
307
315
  it "should allow to set attributes via doc string" do
308
316
  user = User.new
309
317
  User.stub(:new => user)
@@ -16,11 +16,12 @@ FactoryBot.define do
16
16
  factory :user, :class => User do
17
17
  transient do
18
18
  movie { nil }
19
+ film { nil }
19
20
  end
20
21
 
21
22
  after(:build) do |user, evaluator|
22
- if user.reviewed_movies.blank? && evaluator.movie
23
- user.reviewed_movies << evaluator.movie
23
+ if user.reviewed_movies.blank? && (evaluator.movie || evaluator.film)
24
+ user.reviewed_movies << (evaluator.movie || evaluator.film)
24
25
  end
25
26
  end
26
27
  end
@@ -43,4 +44,5 @@ FactoryBot.define do
43
44
  factory :opera, :class => Opera
44
45
  factory :payment, :class => Payment
45
46
  factory :uuid_user, :class => UuidUser
47
+ factory :film, :class => Movie
46
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber_factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Koch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-30 00:00:00.000000000 Z
11
+ date: 2022-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber
@@ -92,6 +92,8 @@ files:
92
92
  - Gemfile.cucumber-5.3
93
93
  - Gemfile.cucumber-5.3.lock
94
94
  - Gemfile.lock
95
+ - Gemfile.rails-7
96
+ - Gemfile.rails-7.lock
95
97
  - LICENSE
96
98
  - README.md
97
99
  - Rakefile
@@ -127,7 +129,8 @@ files:
127
129
  homepage: http://github.com/makandra/cucumber_factory
128
130
  licenses:
129
131
  - MIT
130
- metadata: {}
132
+ metadata:
133
+ rubygems_mfa_required: 'true'
131
134
  post_install_message:
132
135
  rdoc_options: []
133
136
  require_paths:
@@ -143,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
146
  - !ruby/object:Gem::Version
144
147
  version: '0'
145
148
  requirements: []
146
- rubygems_version: 3.1.3
149
+ rubygems_version: 3.3.22
147
150
  signing_key:
148
151
  specification_version: 4
149
152
  summary: Create records from Cucumber features without writing step definitions.