trailblazer-macro 2.1.15 → 2.1.16
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/CHANGES.md +6 -0
- data/Gemfile +1 -1
- data/lib/trailblazer/macro/model/find.rb +175 -0
- data/lib/trailblazer/macro/rescue.rb +1 -1
- data/lib/trailblazer/macro/strategy.rb +1 -1
- data/lib/trailblazer/macro/version.rb +1 -1
- data/lib/trailblazer/macro.rb +2 -0
- data/test/docs/autogenerated/operation_each_test.rb +2 -0
- data/test/docs/autogenerated/operation_model_test.rb +4 -1
- data/test/docs/each_test.rb +7 -2
- data/test/docs/guard_test.rb +17 -15
- data/test/docs/macro_test.rb +1 -1
- data/test/docs/model/find_test.rb +679 -0
- data/test/docs/model_test.rb +3 -0
- data/test/docs/nested_static_test.rb +3 -1
- data/test/docs/pundit_test.rb +19 -19
- data/test/docs/rescue_test.rb +20 -19
- data/test/docs/wrap_test.rb +39 -21
- data/test/operation/integration_test.rb +5 -7
- data/test/operation/pundit_test.rb +31 -25
- metadata +5 -2
data/test/docs/pundit_test.rb
CHANGED
@@ -29,29 +29,29 @@ class DocsPunditProcTest < Minitest::Spec
|
|
29
29
|
end
|
30
30
|
#:pundit end
|
31
31
|
|
32
|
-
it { Trailblazer::Developer.railway(Create)
|
33
|
-
it { Create.(params: {}, current_user: Module).inspect(:model)
|
34
|
-
it { Create.(params: {}
|
32
|
+
it { assert_equal Trailblazer::Developer.railway(Create), %{[>model.build,>policy.default.eval]} }
|
33
|
+
it { assert_equal Create.(params: {}, current_user: Module).inspect(:model), %{<Result:true [#<struct DocsPunditProcTest::Song id=nil>] >} }
|
34
|
+
it { assert_equal Create.(params: {}).inspect(:model), %{<Result:false [#<struct DocsPunditProcTest::Song id=nil>] >} }
|
35
35
|
|
36
36
|
it do
|
37
37
|
#:pundit-result
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
result = Create.(params: {}, current_user: Module)
|
39
|
+
result[:"result.policy.default"].success? #=> true
|
40
|
+
result[:"result.policy.default"][:policy] #=> #<MyPolicy ...>
|
41
41
|
#:pundit-result end
|
42
|
-
result[:"result.policy.default"].success
|
43
|
-
result[:"result.policy.default"][:policy].is_a?(MyPolicy)
|
42
|
+
assert_equal result[:"result.policy.default"].success?, true
|
43
|
+
assert_equal result[:"result.policy.default"][:policy].is_a?(MyPolicy), true
|
44
44
|
end
|
45
45
|
|
46
46
|
#---
|
47
47
|
#- override
|
48
48
|
class New < Create
|
49
|
-
step Policy::Pundit( MyPolicy, :new? ),
|
49
|
+
step Policy::Pundit( MyPolicy, :new? ), replace: :"policy.default.eval"
|
50
50
|
end
|
51
51
|
|
52
|
-
it { Trailblazer::Developer.railway(New)
|
53
|
-
it { New.(params: {}, current_user: Class ).inspect(:model)
|
54
|
-
it { New.(params: {}, current_user: nil ).inspect(:model)
|
52
|
+
it { assert_equal Trailblazer::Developer.railway(New), %{[>model.build,>policy.default.eval]} }
|
53
|
+
it { assert_equal New.(params: {}, current_user: Class ).inspect(:model), %{<Result:true [#<struct DocsPunditProcTest::Song id=nil>] >} }
|
54
|
+
it { assert_equal New.(params: {}, current_user: nil ).inspect(:model), %{<Result:false [#<struct DocsPunditProcTest::Song id=nil>] >} }
|
55
55
|
|
56
56
|
#---
|
57
57
|
#- override with :name
|
@@ -64,10 +64,10 @@ class DocsPunditProcTest < Minitest::Spec
|
|
64
64
|
step Policy::Pundit( MyPolicy, :new?, name: "first" ), override: true
|
65
65
|
end
|
66
66
|
|
67
|
-
it { Trailblazer::Developer.railway(Edit)
|
68
|
-
it { Edit.(params: {}, current_user: Class).inspect(:model)
|
69
|
-
it { Trailblazer::Developer.railway(Update)
|
70
|
-
it { Update.(params: {}, current_user: Class).inspect(:model)
|
67
|
+
it { assert_equal Trailblazer::Developer.railway(Edit), %{[>policy.first.eval,>policy.second.eval]} }
|
68
|
+
it { assert_equal Edit.(params: {}, current_user: Class).inspect(:model), %{<Result:false [nil] >} }
|
69
|
+
it { assert_equal Trailblazer::Developer.railway(Update), %{[>policy.first.eval,>policy.second.eval]} }
|
70
|
+
it { assert_equal Update.(params: {}, current_user: Class).inspect(:model), %{<Result:true [nil] >} }
|
71
71
|
|
72
72
|
#---
|
73
73
|
# dependency injection
|
@@ -85,7 +85,7 @@ class DocsPunditProcTest < Minitest::Spec
|
|
85
85
|
:"policy.default.eval" => Trailblazer::Operation::Policy::Pundit.build(AnotherPolicy, :create?)
|
86
86
|
)
|
87
87
|
#:di-call end
|
88
|
-
|
88
|
+
assert_equal result.inspect(""), %{<Result:true [nil] >} }
|
89
89
|
end
|
90
90
|
|
91
91
|
#-
|
@@ -106,7 +106,7 @@ class PunditWithNameTest < Minitest::Spec
|
|
106
106
|
result = Create.(params: {}, current_user: Module)
|
107
107
|
result[:"result.policy.after_model"].success? #=> true
|
108
108
|
#:name-call end
|
109
|
-
|
109
|
+
assert_equal result[:"result.policy.after_model"].success?, true }
|
110
110
|
end
|
111
111
|
|
112
112
|
#---
|
@@ -123,7 +123,7 @@ end
|
|
123
123
|
# #:class-level end
|
124
124
|
|
125
125
|
# it { Create.(); Create["result.policy"].must_be_nil }
|
126
|
-
# it { Create.(params: {}, current_user: Module)["x"]
|
126
|
+
# it { Create.(params: {}, current_user: Module)["x"], true }
|
127
127
|
# it { Create.(params: {} )["x"].must_be_nil }
|
128
128
|
# end
|
129
129
|
|
data/test/docs/rescue_test.rb
CHANGED
@@ -23,18 +23,18 @@ class NestedRescueTest < Minitest::Spec
|
|
23
23
|
fail ->(options, **) { options["outer-err"] = true }, id: "nested/failure"
|
24
24
|
end
|
25
25
|
|
26
|
-
it {
|
27
|
-
it { NestedInsanity.().inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err")
|
28
|
-
it { NestedInsanity.( "raise-y" => true).inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err")
|
29
|
-
it { NestedInsanity.( "raise-a" => true).inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err")
|
26
|
+
it { assert_match /\[>Rescue\/.{1,3},>nested/, Trailblazer::Developer.railway(NestedInsanity) } # FIXME: better introspect tests for all id-generating macros.
|
27
|
+
it { assert_equal NestedInsanity.().inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err"), %{<Result:true [true, true, true, true, true, true, nil, nil] >} }
|
28
|
+
it { assert_equal NestedInsanity.( "raise-y" => true).inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err"), %{<Result:false [true, true, nil, nil, nil, nil, true, true] >} }
|
29
|
+
it { assert_equal NestedInsanity.( "raise-a" => true).inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err"), %{<Result:false [true, true, true, true, nil, nil, nil, true] >} }
|
30
30
|
|
31
31
|
#-
|
32
32
|
# inheritance
|
33
33
|
class UbernestedInsanity < NestedInsanity
|
34
34
|
end
|
35
35
|
|
36
|
-
it { UbernestedInsanity.().inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err")
|
37
|
-
it { UbernestedInsanity.( "raise-a" => true).inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err")
|
36
|
+
it { assert_equal UbernestedInsanity.().inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err"), %{<Result:true [true, true, true, true, true, true, nil, nil] >} }
|
37
|
+
it { assert_equal UbernestedInsanity.( "raise-a" => true).inspect("a", "y", "z", "b", "c", "e", "inner-err", "outer-err"), %{<Result:false [true, true, true, true, nil, nil, nil, true] >} }
|
38
38
|
end
|
39
39
|
|
40
40
|
class RescueTest < Minitest::Spec
|
@@ -130,8 +130,8 @@ Rescue( SPECIFIC_EXCEPTION, handler: X )
|
|
130
130
|
include Rehash
|
131
131
|
end
|
132
132
|
|
133
|
-
it { Memo::Create.( { seq: [], } ).inspect(:seq, :exception_class)
|
134
|
-
it { Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq, :exception_class)
|
133
|
+
it { assert_equal Memo::Create.( { seq: [], } ).inspect(:seq, :exception_class), %{<Result:true [[:find_model, :update, :rehash, :notify], nil] >} }
|
134
|
+
it { assert_equal Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq, :exception_class), %{<Result:false [[:find_model, :update, :rehash, :log_error], RuntimeError] >} }
|
135
135
|
end
|
136
136
|
|
137
137
|
=begin
|
@@ -160,8 +160,8 @@ Rescue( handler: :instance_method )
|
|
160
160
|
end
|
161
161
|
#:rescue-method end
|
162
162
|
|
163
|
-
it { Memo::Create.( { seq: [], } ).inspect(:seq, :exception_class)
|
164
|
-
it { Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq, :exception_class)
|
163
|
+
it { assert_equal Memo::Create.( { seq: [], } ).inspect(:seq, :exception_class), %{<Result:true [[:find_model, :update, :rehash, :notify], nil] >} }
|
164
|
+
it { assert_equal Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq, :exception_class), %{<Result:false [[:find_model, :update, :rehash, :log_error], RuntimeError] >} }
|
165
165
|
end
|
166
166
|
|
167
167
|
=begin
|
@@ -185,8 +185,8 @@ Rescue(), fast_track: true {}
|
|
185
185
|
include T.def_steps(:find_model, :update, :notify, :log_error, :rehash)
|
186
186
|
end
|
187
187
|
|
188
|
-
it { Memo::Create.( { seq: [], } ).inspect(:seq)
|
189
|
-
it { Memo::Create.( { seq: [], update: false } ).inspect(:seq)
|
188
|
+
it { assert_equal Memo::Create.( { seq: [], } ).inspect(:seq), %{<Result:true [[:find_model, :update, :rehash, :notify]] >} }
|
189
|
+
it { assert_equal Memo::Create.( { seq: [], update: false } ).inspect(:seq), %{<Result:false [[:find_model, :update]] >} }
|
190
190
|
end
|
191
191
|
|
192
192
|
class RescueIDTest < Minitest::Spec
|
@@ -212,13 +212,13 @@ Rescue(), fast_track: true {}
|
|
212
212
|
# assert_equal Trailblazer::Developer::Introspect.find_path(activity, ["Each-1"])[0].id, "Each-1"
|
213
213
|
# assert_equal Trailblazer::Developer::Introspect.find_path(activity, ["Each/composers_for_each"])[0].id, "Each/composers_for_each"
|
214
214
|
|
215
|
-
assert_match /Rescue\/\d
|
216
|
-
assert_match /Rescue\/\d
|
217
|
-
assert_match /Rescue\/\d
|
218
|
-
|
219
|
-
|
220
|
-
assert_match /Rescue\/\d
|
221
|
-
assert_match /Rescue\/\d
|
215
|
+
assert_match (/Rescue\/\d+/), Trailblazer::Activity::Introspect::Nodes(activity).values[1].id
|
216
|
+
assert_match (/Rescue\/\d+/), Trailblazer::Activity::Introspect::Nodes(activity).values[2].id
|
217
|
+
assert_match (/Rescue\/\d+/), Trailblazer::Activity::Introspect::Nodes(activity).values[3].id
|
218
|
+
assert_equal "Rescue-1", Trailblazer::Activity::Introspect::Nodes(activity).values[4].id
|
219
|
+
assert_equal "Rescue-2", Trailblazer::Activity::Introspect::Nodes(activity).values[5].id
|
220
|
+
assert_match (/Rescue\/\d+/), Trailblazer::Activity::Introspect::Nodes(activity).values[6].id
|
221
|
+
assert_match (/Rescue\/\d+/), Trailblazer::Activity::Introspect::Nodes(activity).values[7].id
|
222
222
|
end
|
223
223
|
end
|
224
224
|
|
@@ -239,6 +239,7 @@ Rescue(), fast_track: true {}
|
|
239
239
|
ctx = {validate: false}
|
240
240
|
|
241
241
|
output, _ = trace activity, ctx
|
242
|
+
|
242
243
|
assert_equal output, %(TOP
|
243
244
|
|-- Start.default
|
244
245
|
|-- Rescue/1
|
data/test/docs/wrap_test.rb
CHANGED
@@ -204,8 +204,8 @@ When raise: return {Railway.fail!}, but wire Wrap() to {fail_fast: true}
|
|
204
204
|
#~methods end
|
205
205
|
end
|
206
206
|
|
207
|
-
it { Memo::Create.( { seq: [] } ).inspect(:seq)
|
208
|
-
it { Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq)
|
207
|
+
it { assert_equal Memo::Create.( { seq: [] } ).inspect(:seq), %{<Result:true [[:model, :update, :rehash, :notify]] >} }
|
208
|
+
it { assert_equal Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq), %{<Result:false [[:model, :update, :rehash]] >} }
|
209
209
|
end
|
210
210
|
|
211
211
|
=begin
|
@@ -241,8 +241,8 @@ When raise: return {Railway.fail_fast!} and configure Wrap() to {fast_track: t
|
|
241
241
|
end
|
242
242
|
#:fail-fast end
|
243
243
|
|
244
|
-
it { Memo::Create.( { seq: [] } ).inspect(:seq)
|
245
|
-
it { Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq)
|
244
|
+
it { assert_equal Memo::Create.( { seq: [] } ).inspect(:seq), %{<Result:true [[:model, :update, :rehash, :notify]] >} }
|
245
|
+
it { assert_equal Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq), %{<Result:false [[:model, :update, :rehash]] >} }
|
246
246
|
end
|
247
247
|
|
248
248
|
=begin
|
@@ -284,14 +284,16 @@ When raise: return {Railway.fail!} or {Railway.pass!}
|
|
284
284
|
|
285
285
|
it do
|
286
286
|
result = Memo::Create.( { seq: [] } )
|
287
|
-
|
288
|
-
result.
|
287
|
+
|
288
|
+
assert_equal result.inspect(:seq), %{<Result:false [[:model, :update, :rehash]] >}
|
289
|
+
assert_equal result.event.inspect, %{#<Trailblazer::Activity::End semantic=:transaction_worked>}
|
289
290
|
end
|
290
291
|
|
291
292
|
it do
|
292
293
|
result = Memo::Create.( { seq: [], rehash_raise: RuntimeError } )
|
293
|
-
|
294
|
-
result.
|
294
|
+
|
295
|
+
assert_equal result.inspect(:seq), %{<Result:false [[:model, :update, :rehash]] >}
|
296
|
+
assert_equal result.event.inspect, %{#<Trailblazer::Activity::End semantic=:transaction_failed>}
|
295
297
|
end
|
296
298
|
end
|
297
299
|
|
@@ -325,8 +327,8 @@ When raise: return {Railway.pass!} and go "successful"
|
|
325
327
|
#~methods end
|
326
328
|
end
|
327
329
|
|
328
|
-
it { Memo::Create.( { seq: [] } ).inspect(:seq)
|
329
|
-
it { Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq)
|
330
|
+
it { assert_equal Memo::Create.( { seq: [] } ).inspect(:seq), %{<Result:true [[:model, :update, :rehash, :notify]] >} }
|
331
|
+
it { assert_equal Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq), %{<Result:true [[:model, :update, :rehash, :notify]] >} }
|
330
332
|
end
|
331
333
|
|
332
334
|
=begin
|
@@ -362,8 +364,9 @@ You can return boolean true in wrap.
|
|
362
364
|
|
363
365
|
it "translates true returned form a wrap to a signal with a `success` semantic" do
|
364
366
|
result = Memo::Create.( { seq: [], rehash_raise: RuntimeError } )
|
365
|
-
|
366
|
-
result.
|
367
|
+
|
368
|
+
assert_equal result.inspect(:seq), %{<Result:true [[:model, :update, :rehash, :notify]] >}
|
369
|
+
assert_equal result.event.inspect, %{#<Trailblazer::Activity::Railway::End::Success semantic=:success>}
|
367
370
|
end
|
368
371
|
end
|
369
372
|
|
@@ -400,8 +403,9 @@ You can return boolean false in wrap.
|
|
400
403
|
|
401
404
|
it "translates false returned form a wrap to a signal with a `failure` semantic" do
|
402
405
|
result = Memo::Create.( { seq: [], rehash_raise: RuntimeError } )
|
403
|
-
|
404
|
-
result.
|
406
|
+
|
407
|
+
assert_equal result.inspect(:seq), %{<Result:false [[:model, :update, :rehash, :log_error]] >}
|
408
|
+
assert_equal result.event.inspect, %{#<Trailblazer::Activity::Railway::End::Failure semantic=:failure>}
|
405
409
|
end
|
406
410
|
end
|
407
411
|
|
@@ -438,8 +442,9 @@ You can return nil in wrap.
|
|
438
442
|
|
439
443
|
it "translates nil returned form a wrap to a signal with a `failure` semantic" do
|
440
444
|
result = Memo::Create.( { seq: [], rehash_raise: RuntimeError } )
|
441
|
-
|
442
|
-
result.
|
445
|
+
|
446
|
+
assert_equal result.inspect(:seq), %{<Result:false [[:model, :update, :rehash, :log_error]] >}
|
447
|
+
assert_equal result.event.inspect, %{#<Trailblazer::Activity::Railway::End::Failure semantic=:failure>}
|
443
448
|
end
|
444
449
|
end
|
445
450
|
|
@@ -453,7 +458,7 @@ This one is mostly to show how one could wrap steps in a transaction
|
|
453
458
|
|
454
459
|
module Sequel
|
455
460
|
def self.transaction
|
456
|
-
|
461
|
+
_end_event, (_ctx, _flow_options) = yield
|
457
462
|
end
|
458
463
|
end
|
459
464
|
|
@@ -483,8 +488,8 @@ This one is mostly to show how one could wrap steps in a transaction
|
|
483
488
|
end
|
484
489
|
#:transaction end
|
485
490
|
|
486
|
-
it { Memo::Create.( { seq: [] } ).inspect(:seq)
|
487
|
-
it { Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq)
|
491
|
+
it { assert_equal Memo::Create.( { seq: [] } ).inspect(:seq), %{<Result:true [[:model, :update, :rehash, :notify]] >} }
|
492
|
+
it { assert_equal Memo::Create.( { seq: [], rehash_raise: RuntimeError } ).inspect(:seq), %{<Result:false [[:model, :update, :rehash, :log_error]] >} }
|
488
493
|
end
|
489
494
|
|
490
495
|
=begin
|
@@ -523,8 +528,8 @@ This one is mostly to show how one could evaluate Wrap()'s return value based on
|
|
523
528
|
end
|
524
529
|
#:transaction end
|
525
530
|
|
526
|
-
it { Memo::Create.( { seq: [] } ).inspect(:seq)
|
527
|
-
it { Memo::Create.( { seq: [], update: false } ).inspect(:seq)
|
531
|
+
it { assert_equal Memo::Create.( { seq: [] } ).inspect(:seq), %{<Result:true [[:model, :update]] >} }
|
532
|
+
it { assert_equal Memo::Create.( { seq: [], update: false } ).inspect(:seq), %{<Result:false [[:model, :update, :log_error]] >} }
|
528
533
|
end
|
529
534
|
|
530
535
|
|
@@ -661,6 +666,19 @@ class WrapUnitTest < Minitest::Spec
|
|
661
666
|
|
662
667
|
#@ the patched version only runs {mock_validation}.
|
663
668
|
assert_invoke patched_activity, seq: %{[:mock_validation]}
|
669
|
+
|
670
|
+
# Patch Wrap/Subprocess/step, put step after {validate}
|
671
|
+
patched_activity = Trailblazer::Activity::DSL::Linear::Patch.call(
|
672
|
+
activity,
|
673
|
+
["Wrap/WrapUnitTest::HandleUnsafeProcess", :validation],
|
674
|
+
-> { step mock_validation }
|
675
|
+
)
|
676
|
+
|
677
|
+
#@ the original activity with Wrap is unchanged.
|
678
|
+
assert_invoke activity, seq: %{[:validate]}
|
679
|
+
|
680
|
+
#@ the patched version only runs {mock_validation}.
|
681
|
+
assert_invoke patched_activity, seq: %{[:validate, :mock_validation]}
|
664
682
|
end
|
665
683
|
end
|
666
684
|
|
@@ -30,12 +30,12 @@ class IntegrationTest < Minitest::Spec
|
|
30
30
|
end
|
31
31
|
|
32
32
|
class SongSpecialCreate < Trailblazer::Operation
|
33
|
-
step
|
34
|
-
step
|
33
|
+
step Subprocess(ArtistCreate)
|
34
|
+
step Subprocess(SongCreate)
|
35
35
|
end
|
36
36
|
|
37
37
|
it "create Artist and Song" do
|
38
|
-
result = SongSpecialCreate.
|
38
|
+
result = SongSpecialCreate.wtf?(
|
39
39
|
params: {
|
40
40
|
artist: {
|
41
41
|
name: "My Artist"
|
@@ -46,10 +46,8 @@ class IntegrationTest < Minitest::Spec
|
|
46
46
|
}
|
47
47
|
)
|
48
48
|
|
49
|
-
puts result.wtf?
|
50
|
-
|
51
49
|
# this should return song
|
52
|
-
result[:model].name
|
53
|
-
result[:model].artist_name
|
50
|
+
assert_equal result[:model].name, "My Song"
|
51
|
+
assert_equal result[:model].artist_name, "My Artist"
|
54
52
|
end
|
55
53
|
end
|
@@ -27,23 +27,24 @@ class PolicyTest < Minitest::Spec
|
|
27
27
|
# successful.
|
28
28
|
it do
|
29
29
|
result = Create.(params: {}, current_user: Module)
|
30
|
-
|
30
|
+
|
31
|
+
assert_equal result[:process], true
|
31
32
|
#- result object, policy
|
32
|
-
result[:"result.policy.default"].success
|
33
|
-
result[:"result.policy.default"][:message]
|
33
|
+
assert_equal result[:"result.policy.default"].success?, true
|
34
|
+
assert_nil result[:"result.policy.default"][:message]
|
34
35
|
# result[:valid].must_be_nil
|
35
|
-
result[:"policy.default"].inspect
|
36
|
+
assert_equal result[:"policy.default"].inspect, %{<Auth: user:Module, model:nil>}
|
36
37
|
end
|
37
38
|
# breach.
|
38
39
|
it do
|
39
40
|
result = Create.(params: {}, current_user: nil)
|
40
|
-
result[:process]
|
41
|
+
assert_nil result[:process]
|
41
42
|
#- result object, policy
|
42
|
-
result[:"result.policy.default"].success
|
43
|
-
result[:"result.policy.default"][:message]
|
43
|
+
assert_equal result[:"result.policy.default"].success?, false
|
44
|
+
assert_equal result[:"result.policy.default"][:message], "Breach"
|
44
45
|
end
|
45
|
-
# inject different policy.Condition it { Create.(params: {}, current_user: Object, "policy.default.eval" => Trailblazer::Operation::Policy::Pundit::Condition.new(Auth, :user_object?))["process"]
|
46
|
-
it { Create.(params: {}, current_user: Module, :"policy.default.eval" => Trailblazer::Operation::Policy::Pundit::Condition.new(Auth, :user_object?))[:process]
|
46
|
+
# inject different policy.Condition it { Create.(params: {}, current_user: Object, "policy.default.eval" => Trailblazer::Operation::Policy::Pundit::Condition.new(Auth, :user_object?))["process"], true }
|
47
|
+
it { assert_nil Create.(params: {}, current_user: Module, :"policy.default.eval" => Trailblazer::Operation::Policy::Pundit::Condition.new(Auth, :user_object?))[:process] }
|
47
48
|
|
48
49
|
|
49
50
|
#---
|
@@ -52,23 +53,25 @@ class PolicyTest < Minitest::Spec
|
|
52
53
|
step Model( Song, :new ), before: :"policy.default.eval"
|
53
54
|
end
|
54
55
|
|
55
|
-
it { Trailblazer::Developer.railway(Show)
|
56
|
+
it { assert_equal Trailblazer::Developer.railway(Show), %{[>model.build,>policy.default.eval,>process]} }
|
56
57
|
|
57
58
|
# invalid because user AND model.
|
58
59
|
it do
|
59
60
|
result = Show.(params: {}, current_user: Module)
|
60
|
-
result[:process]
|
61
|
-
|
62
|
-
|
61
|
+
assert_nil result[:process]
|
62
|
+
|
63
|
+
assert_equal result[:model].inspect, %{#<struct PolicyTest::Song id=nil>}
|
64
|
+
# result["policy"].inspect, %{#<struct PolicyTest::Song id=nil>}
|
63
65
|
end
|
64
66
|
|
65
67
|
# valid because new policy.
|
66
68
|
it do
|
67
69
|
# puts Show["pipetree"].inspect
|
68
70
|
result = Show.(params: {}, current_user: Module, :"policy.default.eval" => Trailblazer::Operation::Policy::Pundit::Condition.new(Auth, :user_and_model?))
|
69
|
-
|
70
|
-
result[:
|
71
|
-
result[:
|
71
|
+
|
72
|
+
assert_equal result[:process], true
|
73
|
+
assert_equal result[:model].inspect, %{#<struct PolicyTest::Song id=nil>}
|
74
|
+
assert_equal result[:"policy.default"].inspect, %{<Auth: user:Module, model:#<struct PolicyTest::Song id=nil>>}
|
72
75
|
end
|
73
76
|
|
74
77
|
##--
|
@@ -86,20 +89,23 @@ class PolicyTest < Minitest::Spec
|
|
86
89
|
# successful.
|
87
90
|
it do
|
88
91
|
result = Edit.(params: { id: 1 }, current_user: Module)
|
89
|
-
|
90
|
-
result[:
|
91
|
-
result[:
|
92
|
-
result[:"result.policy.default"]
|
92
|
+
|
93
|
+
assert_equal result[:process], true
|
94
|
+
assert_equal result[:model].inspect, %{#<struct PolicyTest::Song id=1>}
|
95
|
+
assert_equal result[:"result.policy.default"].success?, true
|
96
|
+
assert_nil result[:"result.policy.default"][:message]
|
93
97
|
# result[:valid].must_be_nil
|
94
|
-
result[:"policy.default"].inspect
|
98
|
+
assert_equal result[:"policy.default"].inspect, %{<Auth: user:Module, model:#<struct PolicyTest::Song id=1>>}
|
95
99
|
end
|
96
100
|
|
97
101
|
# breach.
|
98
102
|
it do
|
99
103
|
result = Edit.(params: { id: 4 }, current_user: nil)
|
100
|
-
|
101
|
-
result[:
|
102
|
-
result[:
|
103
|
-
|
104
|
+
|
105
|
+
assert_equal result[:model].inspect, %{#<struct PolicyTest::Song id=4>}
|
106
|
+
assert_nil result[:process]
|
107
|
+
|
108
|
+
assert_equal result[:"result.policy.default"].success?, false
|
109
|
+
assert_equal result[:"result.policy.default"][:message], "Breach"
|
104
110
|
end
|
105
111
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trailblazer-macro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- lib/trailblazer/macro/each.rb
|
112
112
|
- lib/trailblazer/macro/guard.rb
|
113
113
|
- lib/trailblazer/macro/model.rb
|
114
|
+
- lib/trailblazer/macro/model/find.rb
|
114
115
|
- lib/trailblazer/macro/nested.rb
|
115
116
|
- lib/trailblazer/macro/policy.rb
|
116
117
|
- lib/trailblazer/macro/pundit.rb
|
@@ -123,6 +124,7 @@ files:
|
|
123
124
|
- test/docs/each_test.rb
|
124
125
|
- test/docs/guard_test.rb
|
125
126
|
- test/docs/macro_test.rb
|
127
|
+
- test/docs/model/find_test.rb
|
126
128
|
- test/docs/model_test.rb
|
127
129
|
- test/docs/nested_static_test.rb
|
128
130
|
- test/docs/pundit_test.rb
|
@@ -161,6 +163,7 @@ test_files:
|
|
161
163
|
- test/docs/each_test.rb
|
162
164
|
- test/docs/guard_test.rb
|
163
165
|
- test/docs/macro_test.rb
|
166
|
+
- test/docs/model/find_test.rb
|
164
167
|
- test/docs/model_test.rb
|
165
168
|
- test/docs/nested_static_test.rb
|
166
169
|
- test/docs/pundit_test.rb
|