factory_bot-blueprint-rspec 0.2.0 → 0.4.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: 90ab135111ffaf75e4c4e76bb988f18ba65a4830a651806fa3488055931b730c
4
- data.tar.gz: 6ced697033d75f2be92a0e4353f4e119a119b3b8d88b6b6ac2981112e819dd70
3
+ metadata.gz: f99bbc7d1b7e6a8a7fb74d0fb64b88efb1baff08a583fdab7491db3c81ab4233
4
+ data.tar.gz: 2aa5ba9a0705e6389236e8e5699e2d0cb7c418c70373b9ef74d71c854450a473
5
5
  SHA512:
6
- metadata.gz: 5d5c135992273852319396b86bd7bf9e7a843d7882378ec8c9b024fed1d36624f248be87b9840baf3d3b1498db12fef2e0208539d34a73e6a8a7e210151e7e0b
7
- data.tar.gz: 0f630406055469c8b5c917c1f294224f3915dc78f016e5ee92aed62efd25c4e55c4765dbd609f4dc9a78dd7ec79ee1ad8da276d67d009b3110fd4e6c9bfad2f2
6
+ metadata.gz: 71b5c78c7b59fa4f97c2171591dbe2533fd901fc4e7bd7647e48e017ce26f509e9c4c75178d3d86494c275b92e07431f11ca88c66de0164cf9b77cf3c2c1e321
7
+ data.tar.gz: d8e3182c44520b7ea3d2233388bf7711690f71c050f9a37089955ddad25cb9c62c5170440a486a977ae7d0b8c90a78001195bde7ea1e224026b7a497d43b67b5
@@ -27,6 +27,7 @@ module FactoryBot
27
27
  # end
28
28
  def let_blueprint(name, inherit: false, &)
29
29
  let(name) { ::FactoryBot::Blueprint.plan(inherit ? super() : nil, ext: self, &) }
30
+ name
30
31
  end
31
32
 
32
33
  # Build objects by <code>build</code> strategy in FactoryBot from a blueprint and declare them using RSpec's
@@ -55,9 +56,9 @@ module FactoryBot
55
56
  # let_blueprint_build blog_bp: { result: :blog, items: %i[article], instance: :blog_instance }
56
57
  #
57
58
  # # Above example will be expanded to:
58
- # let(:blog_instance) { ::FactoryBot::Blueprint.build(blog_bp) } # the instance object
59
- # let(:blog) { blog_instance[0] } # the result object
60
- # let(:article) { blog_instance[1][:article] } # the item objects
59
+ # let(:blog_instance) { ::FactoryBot::Blueprint.build(blog_bp) } # the instance object
60
+ # let(:blog) { blog_instance[Factrey::Blueprint::Node::RESULT_NAME] } # the result object
61
+ # let(:article) { blog_instance[:article] } # the item objects
61
62
  # end
62
63
  def let_blueprint_build(**map) = let_blueprint_instantiate(:build, **map)
63
64
 
@@ -73,7 +74,7 @@ module FactoryBot
73
74
  def let_blueprint_instantiate(strategy, **map)
74
75
  raise ArgumentError, "Unsupported strategy: #{strategy}" if strategy && !%i[create build].include?(strategy)
75
76
 
76
- map.each do |source, definition|
77
+ map.map do |source, definition|
77
78
  raise TypeError, "source must be a Symbol" unless source.is_a?(Symbol)
78
79
 
79
80
  definition =
@@ -102,9 +103,11 @@ module FactoryBot
102
103
  let(instance) { ::FactoryBot::Blueprint.instantiate(strategy, __send__(source)) }
103
104
  end
104
105
 
105
- let(result_name) { __send__(instance)[0] } if result_name
106
+ let(result_name) { __send__(instance)[::Factrey::Blueprint::Node::RESULT_NAME] } if result_name
106
107
 
107
- item_names.each { |name| let(name) { __send__(instance)[1][name] } }
108
+ item_names.each { |name| let(name) { __send__(instance)[name] } }
109
+
110
+ instance
108
111
  end
109
112
  end
110
113
 
@@ -150,6 +153,30 @@ module FactoryBot
150
153
  let_blueprint(source, inherit:, &)
151
154
  let_blueprint_instantiate strategy, source => { result: name, items: }
152
155
  end
156
+
157
+ # <code>let!</code> version of {#let_blueprint}.
158
+ def let_blueprint!(...)
159
+ name = let_blueprint(...)
160
+ before { __send__(name) }
161
+ end
162
+
163
+ # <code>let!</code> version of {#let_blueprint_build}.
164
+ def let_blueprint_build!(...)
165
+ names = let_blueprint_build(...)
166
+ before { names.each { __send__(_1) } }
167
+ end
168
+
169
+ # <code>let!</code> version of {#let_blueprint_create}.
170
+ def let_blueprint_create!(...)
171
+ names = let_blueprint_create(...)
172
+ before { names.each { __send__(_1) } }
173
+ end
174
+
175
+ # <code>let!</code> version of {#letbp}.
176
+ def letbp!(...)
177
+ names = letbp(...)
178
+ before { names.each { __send__(_1) } }
179
+ end
153
180
  end
154
181
  end
155
182
  end
@@ -3,7 +3,7 @@
3
3
  module FactoryBot
4
4
  module Blueprint
5
5
  module RSpec
6
- VERSION = "0.2.0"
6
+ VERSION = "0.4.0"
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory_bot-blueprint-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yubrot
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-29 00:00:00.000000000 Z
11
+ date: 2024-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_bot-blueprint
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.0
19
+ version: 0.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.0
26
+ version: 0.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-core
29
29
  requirement: !ruby/object:Gem::Requirement