factory_bot 5.1.2 → 5.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/GETTING_STARTED.md +9 -1
- data/NEWS.md +4 -0
- data/README.md +3 -3
- data/lib/factory_bot.rb +19 -19
- data/lib/factory_bot/definition_hierarchy.rb +1 -11
- data/lib/factory_bot/definition_proxy.rb +1 -1
- data/lib/factory_bot/internal.rb +17 -15
- data/lib/factory_bot/strategy_syntax_method_registrar.rb +12 -1
- data/lib/factory_bot/syntax/default.rb +7 -19
- data/lib/factory_bot/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 802da48aa95dce3321f20d0173c5dcf041c5393fb0c270fb8ae2029ce12b6ed9
|
4
|
+
data.tar.gz: 0aa227896ef66ccf100f88b1aa4e9aa26c5bc657fee76739a73e15072bc80572
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63554d6765398f0c524cb8cd45b1a0da83da1d8aba9f359d0e4c44e42cdbd0d93edb8e38c668e0310ad709905c5cd6a3c35e640ad8c45a06a8b7d4090b4e6161
|
7
|
+
data.tar.gz: fe3be69bdd601384da0a7f2ec7e1fcf00ae7d4984c65423e31e94c1b7f3d7bb04345371daaea19d794365972b59f69f9f3403b0ef8b8ef7d7349d89404284ac2
|
data/GETTING_STARTED.md
CHANGED
@@ -119,7 +119,7 @@ It is also possible to explicitly specify the class:
|
|
119
119
|
|
120
120
|
```ruby
|
121
121
|
# This will use the User class (otherwise Admin would have been guessed)
|
122
|
-
factory :admin, class:
|
122
|
+
factory :admin, class: User
|
123
123
|
```
|
124
124
|
|
125
125
|
If the constant is not available
|
@@ -1018,6 +1018,14 @@ To set the attributes for each of the factories, you can pass in a hash as you n
|
|
1018
1018
|
twenty_year_olds = build_list(:user, 25, date_of_birth: 20.years.ago)
|
1019
1019
|
```
|
1020
1020
|
|
1021
|
+
In order to set different attributes for each factory, these methods may be passed a block, with the factory and the index as parameters:
|
1022
|
+
|
1023
|
+
```ruby
|
1024
|
+
twenty_somethings = build_list(:user, 10) do |user, i|
|
1025
|
+
user.date_of_birth = (20 + i).years.ago
|
1026
|
+
end
|
1027
|
+
```
|
1028
|
+
|
1021
1029
|
`build_stubbed_list` will give you fully stubbed out instances:
|
1022
1030
|
|
1023
1031
|
```ruby
|
data/NEWS.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 5.2.0 (April 24, 2020)
|
4
|
+
* Added: Pass index to block for `*_list` methods
|
5
|
+
* Deprecated: top-level methods meant only for internal use: `callbacks`, `configuration`, `constructor`, `initialize_with`, `register_sequence`, `resent_configuration`, `skip_create`, `to_create`
|
6
|
+
|
3
7
|
## 5.1.2 (March 25, 2020)
|
4
8
|
* Fixed: Ruby 2.7 keyword deprecation warning in FactoryBot.lint
|
5
9
|
|
data/README.md
CHANGED
@@ -72,14 +72,14 @@ Contributing
|
|
72
72
|
|
73
73
|
Please see [CONTRIBUTING.md](https://github.com/thoughtbot/factory_bot/blob/master/CONTRIBUTING.md).
|
74
74
|
|
75
|
-
factory_bot was originally written by Joe Ferris and is
|
76
|
-
|
75
|
+
factory_bot was originally written by Joe Ferris and is maintained by thoughtbot.
|
76
|
+
Many improvements and bugfixes were contributed by the [open source
|
77
77
|
community](https://github.com/thoughtbot/factory_bot/graphs/contributors).
|
78
78
|
|
79
79
|
License
|
80
80
|
-------
|
81
81
|
|
82
|
-
factory_bot is Copyright © 2008-
|
82
|
+
factory_bot is Copyright © 2008-2020 Joe Ferris and thoughtbot. It is free
|
83
83
|
software, and may be redistributed under the terms specified in the
|
84
84
|
[LICENSE] file.
|
85
85
|
|
data/lib/factory_bot.rb
CHANGED
@@ -4,6 +4,7 @@ require "active_support/core_ext/module/attribute_accessors"
|
|
4
4
|
require "active_support/deprecation"
|
5
5
|
require "active_support/notifications"
|
6
6
|
|
7
|
+
require "factory_bot/internal"
|
7
8
|
require "factory_bot/definition_hierarchy"
|
8
9
|
require "factory_bot/configuration"
|
9
10
|
require "factory_bot/errors"
|
@@ -45,19 +46,10 @@ require "factory_bot/decorator/invocation_tracker"
|
|
45
46
|
require "factory_bot/decorator/new_constructor"
|
46
47
|
require "factory_bot/linter"
|
47
48
|
require "factory_bot/version"
|
48
|
-
require "factory_bot/internal"
|
49
49
|
|
50
50
|
module FactoryBot
|
51
51
|
Deprecation = ActiveSupport::Deprecation.new("6.0", "factory_bot")
|
52
52
|
|
53
|
-
def self.configuration
|
54
|
-
Internal.configuration
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.reset_configuration
|
58
|
-
Internal.reset_configuration
|
59
|
-
end
|
60
|
-
|
61
53
|
mattr_accessor :use_parent_strategy, instance_accessor: false
|
62
54
|
self.use_parent_strategy = true
|
63
55
|
|
@@ -75,19 +67,13 @@ module FactoryBot
|
|
75
67
|
end
|
76
68
|
|
77
69
|
class << self
|
78
|
-
delegate :
|
79
|
-
:
|
70
|
+
delegate :callback_names,
|
71
|
+
:callbacks,
|
72
|
+
:configuration,
|
80
73
|
:constructor,
|
81
74
|
:factories,
|
75
|
+
:factory_by_name,
|
82
76
|
:initialize_with,
|
83
|
-
:sequences,
|
84
|
-
:skip_create,
|
85
|
-
:strategies,
|
86
|
-
:to_create,
|
87
|
-
:traits,
|
88
|
-
to: :configuration
|
89
|
-
|
90
|
-
delegate :factory_by_name,
|
91
77
|
:register_callback,
|
92
78
|
:register_default_callbacks,
|
93
79
|
:register_default_strategies,
|
@@ -95,10 +81,16 @@ module FactoryBot
|
|
95
81
|
:register_sequence,
|
96
82
|
:register_strategy,
|
97
83
|
:register_trait,
|
84
|
+
:reset_configuration,
|
98
85
|
:rewind_sequences,
|
99
86
|
:sequence_by_name,
|
87
|
+
:sequences,
|
88
|
+
:skip_create,
|
89
|
+
:strategies,
|
100
90
|
:strategy_by_name,
|
91
|
+
:to_create,
|
101
92
|
:trait_by_name,
|
93
|
+
:traits,
|
102
94
|
to: Internal
|
103
95
|
|
104
96
|
attr_accessor :allow_class_lookup
|
@@ -106,15 +98,23 @@ module FactoryBot
|
|
106
98
|
deprecate :allow_class_lookup,
|
107
99
|
:allow_class_lookup=,
|
108
100
|
:callback_names,
|
101
|
+
:callbacks,
|
102
|
+
:configuration,
|
103
|
+
:constructor,
|
109
104
|
:factory_by_name,
|
105
|
+
:initialize_with,
|
110
106
|
:register_callback,
|
111
107
|
:register_default_callbacks,
|
112
108
|
:register_default_strategies,
|
113
109
|
:register_factory,
|
110
|
+
:register_sequence,
|
114
111
|
:register_trait,
|
112
|
+
:reset_configuration,
|
115
113
|
:sequence_by_name,
|
116
114
|
:sequences,
|
115
|
+
:skip_create,
|
117
116
|
:strategies,
|
117
|
+
:to_create,
|
118
118
|
:trait_by_name,
|
119
119
|
:traits,
|
120
120
|
deprecator: Deprecation
|
@@ -1,16 +1,6 @@
|
|
1
1
|
module FactoryBot
|
2
2
|
class DefinitionHierarchy
|
3
|
-
|
4
|
-
FactoryBot.callbacks
|
5
|
-
end
|
6
|
-
|
7
|
-
def constructor
|
8
|
-
FactoryBot.constructor
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_create
|
12
|
-
FactoryBot.to_create
|
13
|
-
end
|
3
|
+
delegate :callbacks, :constructor, :to_create, to: Internal
|
14
4
|
|
15
5
|
def self.build_from_definition(definition)
|
16
6
|
build_to_create(&definition.to_create)
|
@@ -88,7 +88,7 @@ module FactoryBot
|
|
88
88
|
# end
|
89
89
|
#
|
90
90
|
# are equivalent.
|
91
|
-
def method_missing(name, *args, &block) # rubocop:disable Style/MissingRespondToMissing, Style/MethodMissingSuper
|
91
|
+
def method_missing(name, *args, &block) # rubocop:disable Style/MissingRespondToMissing, Style/MethodMissingSuper
|
92
92
|
association_options = args.first
|
93
93
|
|
94
94
|
if association_options.nil?
|
data/lib/factory_bot/internal.rb
CHANGED
@@ -1,24 +1,19 @@
|
|
1
1
|
module FactoryBot
|
2
2
|
# @api private
|
3
3
|
module Internal
|
4
|
-
DEFAULT_STRATEGIES = {
|
5
|
-
build: FactoryBot::Strategy::Build,
|
6
|
-
create: FactoryBot::Strategy::Create,
|
7
|
-
attributes_for: FactoryBot::Strategy::AttributesFor,
|
8
|
-
build_stubbed: FactoryBot::Strategy::Stub,
|
9
|
-
null: FactoryBot::Strategy::Null,
|
10
|
-
}.freeze
|
11
|
-
|
12
|
-
DEFAULT_CALLBACKS = [
|
13
|
-
:after_create, :after_build, :after_stub, :after_create
|
14
|
-
].freeze
|
15
|
-
|
16
4
|
class << self
|
17
|
-
delegate :
|
5
|
+
delegate :after,
|
6
|
+
:before,
|
7
|
+
:callback_names,
|
8
|
+
:callbacks,
|
9
|
+
:constructor,
|
18
10
|
:factories,
|
11
|
+
:initialize_with,
|
19
12
|
:inline_sequences,
|
20
13
|
:sequences,
|
14
|
+
:skip_create,
|
21
15
|
:strategies,
|
16
|
+
:to_create,
|
22
17
|
:traits,
|
23
18
|
to: :configuration
|
24
19
|
|
@@ -86,11 +81,18 @@ module FactoryBot
|
|
86
81
|
end
|
87
82
|
|
88
83
|
def register_default_strategies
|
89
|
-
|
84
|
+
register_strategy(:build, FactoryBot::Strategy::Build)
|
85
|
+
register_strategy(:create, FactoryBot::Strategy::Create)
|
86
|
+
register_strategy(:attributes_for, FactoryBot::Strategy::AttributesFor)
|
87
|
+
register_strategy(:build_stubbed, FactoryBot::Strategy::Stub)
|
88
|
+
register_strategy(:null, FactoryBot::Strategy::Null)
|
90
89
|
end
|
91
90
|
|
92
91
|
def register_default_callbacks
|
93
|
-
|
92
|
+
register_callback(:after_create)
|
93
|
+
register_callback(:after_build)
|
94
|
+
register_callback(:after_stub)
|
95
|
+
register_callback(:before_create)
|
94
96
|
end
|
95
97
|
|
96
98
|
def register_callback(name)
|
@@ -11,6 +11,14 @@ module FactoryBot
|
|
11
11
|
define_pair_strategy_method
|
12
12
|
end
|
13
13
|
|
14
|
+
def self.with_index(block, index)
|
15
|
+
if block&.arity == 2
|
16
|
+
->(instance) { block.call(instance, index) }
|
17
|
+
else
|
18
|
+
block
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
14
22
|
private
|
15
23
|
|
16
24
|
def define_singular_strategy_method
|
@@ -29,7 +37,10 @@ module FactoryBot
|
|
29
37
|
raise ArgumentError, "count missing for #{strategy_name}_list"
|
30
38
|
end
|
31
39
|
|
32
|
-
Array.new(amount)
|
40
|
+
Array.new(amount) do |i|
|
41
|
+
block_with_index = StrategySyntaxMethodRegistrar.with_index(block, i)
|
42
|
+
send(strategy_name, name, *traits_and_overrides, &block_with_index)
|
43
|
+
end
|
33
44
|
end
|
34
45
|
end
|
35
46
|
|
@@ -33,29 +33,17 @@ module FactoryBot
|
|
33
33
|
Internal.register_trait(Trait.new(name, &block))
|
34
34
|
end
|
35
35
|
|
36
|
-
def to_create(&block)
|
37
|
-
FactoryBot.to_create(&block)
|
38
|
-
end
|
39
|
-
|
40
|
-
def skip_create
|
41
|
-
FactoryBot.skip_create
|
42
|
-
end
|
43
|
-
|
44
|
-
def initialize_with(&block)
|
45
|
-
FactoryBot.initialize_with(&block)
|
46
|
-
end
|
47
|
-
|
48
36
|
def self.run(block)
|
49
37
|
new.instance_eval(&block)
|
50
38
|
end
|
51
39
|
|
52
|
-
delegate :
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
40
|
+
delegate :after,
|
41
|
+
:before,
|
42
|
+
:callback,
|
43
|
+
:initialize_with,
|
44
|
+
:skip_create,
|
45
|
+
:to_create,
|
46
|
+
to: FactoryBot::Internal
|
59
47
|
end
|
60
48
|
|
61
49
|
class ModifyDSL
|
data/lib/factory_bot/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factory_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Clayton
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-04-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -263,7 +263,8 @@ files:
|
|
263
263
|
homepage: https://github.com/thoughtbot/factory_bot
|
264
264
|
licenses:
|
265
265
|
- MIT
|
266
|
-
metadata:
|
266
|
+
metadata:
|
267
|
+
changelog_uri: https://github.com/thoughtbot/factory_bot/blob/master/NEWS.md
|
267
268
|
post_install_message:
|
268
269
|
rdoc_options: []
|
269
270
|
require_paths:
|
@@ -279,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
280
|
- !ruby/object:Gem::Version
|
280
281
|
version: '0'
|
281
282
|
requirements: []
|
282
|
-
rubygems_version: 3.
|
283
|
+
rubygems_version: 3.0.3
|
283
284
|
signing_key:
|
284
285
|
specification_version: 4
|
285
286
|
summary: factory_bot provides a framework and DSL for defining and using model instance
|