From 821a8705642b724f6dcfdf52ad9adad77726e2c7 Mon Sep 17 00:00:00 2001 From: Nick Sutterer Date: Thu, 12 Dec 2024 16:00:32 +0100 Subject: [PATCH] test that we can use `#assert_fail` without a contract errors list. --- test/assertion_test.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/test/assertion_test.rb b/test/assertion_test.rb index 58413ae..167cf9f 100644 --- a/test/assertion_test.rb +++ b/test/assertion_test.rb @@ -273,6 +273,18 @@ def model(ctx, params:, **) result = assert_fail Update, {params: {title: nil}}, [:title] assert_equal CU.inspect(result[:"contract.default"].errors.messages), %({:title=>[\"is missing\"]}) end + + # test_0011_anonymous + # {#assert_fail} can be used without contract errors. + it do + operation = Class.new(Trailblazer::Operation) do + step ->(ctx, **) { false } + end + + result = assert_fail operation, {params: {title: nil}} + + assert_equal result.keys.inspect, %([:params]) + end end test_1 = test.new(:test_0001_anonymous) @@ -330,6 +342,10 @@ def model(ctx, params:, **) test_10 = test.new(:test_0010_anonymous) failures = test_10.() assert_equal failures.size, 0 + + test_11 = test.new(:test_0011_anonymous) + failures = test_11.() + assert_equal failures.size, 0 end end @@ -443,12 +459,14 @@ def self.__(activity, options, &block) # TODO: move this to endpoint. return signal, ctx # DISCUSS: should we provide a Result object here? end - it "{Activity} invoked via endpoint" do + it "{#assert_pass} {Activity} invoked via endpoint" do ctx = assert_pass Create, {params: {title: "Roxanne"}}, title: "Roxanne" assert_equal ctx[:object].title, "Roxanne" # aliasing only works through endpoint. + end + it "{#assert_fail} with activity via endpoint" do ctx = assert_fail Create, {params: {}}, [:title] assert_equal ctx.class, Trailblazer::Context::Container::WithAliases