diff --git a/lib/trailblazer/test/testing.rb b/lib/trailblazer/test/testing.rb index 1e96fac..b5da607 100644 --- a/lib/trailblazer/test/testing.rb +++ b/lib/trailblazer/test/testing.rb @@ -39,9 +39,12 @@ class Form < Reform::Form step :parse_tag_list step Contract::Persist() - def capture(ctx, **) - ctx[:captured] = CU.inspect(ctx.to_h) + module Capture + def capture(ctx, **) + ctx[:captured] = CU.inspect(ctx.to_h) + end end + include Capture def parse_tag_list(ctx, **) tag_list = ctx["contract.default"].tag_list or return true diff --git a/test/suite_test.rb b/test/suite_test.rb index 19ee68a..5ff083c 100644 --- a/test/suite_test.rb +++ b/test/suite_test.rb @@ -16,6 +16,16 @@ def call # let(:default_ctx) { {params: {memo: {title: "Note to self", content: "Remember me!"}}} } # let(:expected_attributes) { {content: "Remember me!", persisted?: true} } # let(:key_in_params) { :memo } + # it "{#assert_pass} with {:model_at" do + # test = Class.new(Test) do + # Trailblazer::Test::Assertion.module!(self, suite: true) + + # let(:operation) { Memo::Operation::Create } + # let(:default_ctx) { {params: {memo: {title: "Note to self", content: "Remember me!"}}} } + # let(:expected_attributes) { {title: "Note to self", content: "Remember me!"} } + # let(:key_in_params) { :memo } + # end + # end it "#assert_pass" do # FIXME: test that assert_* returns {ctx} @@ -134,7 +144,24 @@ def call ) end - vvvvvvvvv + Test_for_ModelAt = describe ":model_at" do + let(:operation) do + Class.new(Trailblazer::Operation) do + include Memo::Operation::Create::Capture + step :capture + step :model + + def model(ctx, params:, **) + ctx[:record] = Memo.new(**params[:memo]) + end + end + end + + # 01 + it do + @result = assert_pass({title: "Done"}, {title: "Done"}, model_at: :record) + end + end # test_0006_anonymous # We accept {:model_at} as a first level kw arg, currently. @@ -208,6 +235,8 @@ def assert_test_case_fails(test, number, error_message) assert_test_case_passes(test, "09", input) assert_test_case_passes(test, "10", input) + assert_test_case_passes(Test_for_ModelAt, "01", %({:params=>{:memo=>{:title=>\"Done\", :content=>\"Remember me!\"}}})) +