factory_bot 5.1.0 → 6.0.1
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/CONTRIBUTING.md +52 -13
- data/GETTING_STARTED.md +426 -68
- data/NEWS.md +22 -1
- data/README.md +4 -4
- data/lib/factory_bot.rb +21 -55
- data/lib/factory_bot/aliases.rb +3 -3
- data/lib/factory_bot/attribute/association.rb +2 -2
- data/lib/factory_bot/attribute/dynamic.rb +2 -1
- data/lib/factory_bot/attribute_assigner.rb +9 -10
- data/lib/factory_bot/attribute_list.rb +1 -1
- data/lib/factory_bot/callback.rb +2 -10
- data/lib/factory_bot/configuration.rb +6 -6
- data/lib/factory_bot/declaration.rb +1 -1
- data/lib/factory_bot/declaration_list.rb +2 -2
- data/lib/factory_bot/decorator.rb +1 -1
- data/lib/factory_bot/decorator/invocation_tracker.rb +1 -1
- data/lib/factory_bot/definition.rb +45 -17
- data/lib/factory_bot/definition_hierarchy.rb +1 -11
- data/lib/factory_bot/definition_proxy.rb +64 -6
- data/lib/factory_bot/enum.rb +27 -0
- data/lib/factory_bot/evaluator.rb +5 -7
- data/lib/factory_bot/evaluator_class_definer.rb +1 -1
- data/lib/factory_bot/factory.rb +12 -12
- data/lib/factory_bot/factory_runner.rb +3 -3
- data/lib/factory_bot/find_definitions.rb +1 -1
- data/lib/factory_bot/internal.rb +18 -29
- data/lib/factory_bot/linter.rb +9 -13
- data/lib/factory_bot/null_factory.rb +10 -4
- data/lib/factory_bot/null_object.rb +2 -6
- data/lib/factory_bot/registry.rb +4 -4
- data/lib/factory_bot/reload.rb +0 -1
- data/lib/factory_bot/sequence.rb +5 -5
- data/lib/factory_bot/strategy/null.rb +4 -2
- data/lib/factory_bot/strategy/stub.rb +6 -2
- data/lib/factory_bot/strategy_syntax_method_registrar.rb +12 -1
- data/lib/factory_bot/syntax/default.rb +7 -19
- data/lib/factory_bot/trait.rb +1 -1
- data/lib/factory_bot/version.rb +1 -1
- metadata +9 -22
data/lib/factory_bot/reload.rb
CHANGED
data/lib/factory_bot/sequence.rb
CHANGED
@@ -6,14 +6,14 @@ module FactoryBot
|
|
6
6
|
attr_reader :name
|
7
7
|
|
8
8
|
def initialize(name, *args, &proc)
|
9
|
-
@name
|
10
|
-
@proc
|
9
|
+
@name = name
|
10
|
+
@proc = proc
|
11
11
|
|
12
|
-
options
|
13
|
-
@value
|
12
|
+
options = args.extract_options!
|
13
|
+
@value = args.first || 1
|
14
14
|
@aliases = options.fetch(:aliases) { [] }
|
15
15
|
|
16
|
-
|
16
|
+
unless @value.respond_to?(:peek)
|
17
17
|
@value = EnumeratorAdapter.new(@value)
|
18
18
|
end
|
19
19
|
end
|
@@ -21,9 +21,13 @@ module FactoryBot
|
|
21
21
|
:update_attributes!,
|
22
22
|
:update_attributes,
|
23
23
|
:update_column,
|
24
|
-
:update_columns
|
24
|
+
:update_columns
|
25
25
|
].freeze
|
26
26
|
|
27
|
+
def self.next_id=(id)
|
28
|
+
@@next_id = id
|
29
|
+
end
|
30
|
+
|
27
31
|
def association(runner)
|
28
32
|
runner.run(:build_stubbed)
|
29
33
|
end
|
@@ -64,7 +68,7 @@ module FactoryBot
|
|
64
68
|
DISABLED_PERSISTENCE_METHODS.each do |write_method|
|
65
69
|
define_singleton_method(write_method) do |*args|
|
66
70
|
raise "stubbed models are not allowed to access the database - "\
|
67
|
-
"#{self.class}##{write_method}(#{args.join(
|
71
|
+
"#{self.class}##{write_method}(#{args.join(",")})"
|
68
72
|
end
|
69
73
|
end
|
70
74
|
end
|
@@ -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/trait.rb
CHANGED
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:
|
4
|
+
version: 6.0.1
|
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:
|
12
|
+
date: 2020-06-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 5.0.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 5.0.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: activerecord
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,21 +124,7 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - '='
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0.54'
|
133
|
-
type: :development
|
134
|
-
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - '='
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '0.54'
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: simplecov
|
127
|
+
name: standard
|
142
128
|
requirement: !ruby/object:Gem::Requirement
|
143
129
|
requirements:
|
144
130
|
- - ">="
|
@@ -152,7 +138,7 @@ dependencies:
|
|
152
138
|
- !ruby/object:Gem::Version
|
153
139
|
version: '0'
|
154
140
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
141
|
+
name: simplecov
|
156
142
|
requirement: !ruby/object:Gem::Requirement
|
157
143
|
requirements:
|
158
144
|
- - ">="
|
@@ -219,6 +205,7 @@ files:
|
|
219
205
|
- lib/factory_bot/definition.rb
|
220
206
|
- lib/factory_bot/definition_hierarchy.rb
|
221
207
|
- lib/factory_bot/definition_proxy.rb
|
208
|
+
- lib/factory_bot/enum.rb
|
222
209
|
- lib/factory_bot/errors.rb
|
223
210
|
- lib/factory_bot/evaluation.rb
|
224
211
|
- lib/factory_bot/evaluator.rb
|
@@ -258,14 +245,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
258
245
|
requirements:
|
259
246
|
- - ">="
|
260
247
|
- !ruby/object:Gem::Version
|
261
|
-
version: 2.
|
248
|
+
version: 2.5.0
|
262
249
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
263
250
|
requirements:
|
264
251
|
- - ">="
|
265
252
|
- !ruby/object:Gem::Version
|
266
253
|
version: '0'
|
267
254
|
requirements: []
|
268
|
-
rubygems_version: 3.
|
255
|
+
rubygems_version: 3.1.2
|
269
256
|
signing_key:
|
270
257
|
specification_version: 4
|
271
258
|
summary: factory_bot provides a framework and DSL for defining and using model instance
|