@@ -60,20 +60,45 @@ defmodule Zebra.Workers.TaskFinisherTest do
60
60
describe ".calculate_task_result" do
61
61
test "when any of the jobs are stopped => result is stopped" do
62
62
results = [ "passed" , "failed" , "stopped" ]
63
+ { :ok , task } = Support.Factories.Task . create ( )
63
64
64
- assert { :ok , "stopped" } = W . calculate_task_result ( results )
65
+ assert { :ok , "stopped" } = W . calculate_task_result ( results , task )
65
66
end
66
67
67
68
test "when any of the jobs are failed => result is failed" do
68
69
results = [ "passed" , "failed" , "passed" ]
70
+ { :ok , task } = Support.Factories.Task . create ( )
69
71
70
- assert { :ok , "failed" } = W . calculate_task_result ( results )
72
+ assert { :ok , "failed" } = W . calculate_task_result ( results , task )
71
73
end
72
74
73
75
test "when all of the jobs are passed => result is passed" do
74
- results = [ "passed" , "failed" , "passed" ]
76
+ results = [ "passed" , "passed" , "passed" ]
77
+ { :ok , task } = Support.Factories.Task . create ( )
78
+
79
+ assert { :ok , "passed" } = W . calculate_task_result ( results , task )
80
+ end
81
+
82
+ test "when fail_fast:stop is active and jobs are stopped due to failure => result is failed" do
83
+ results = [ "passed" , "failed" , "stopped" , "stopped" ]
84
+ { :ok , task } = Support.Factories.Task . create ( % { fail_fast_strategy: "stop" } )
85
+
86
+ assert { :ok , "failed" } = W . calculate_task_result ( results , task )
87
+ end
88
+
89
+ test "when fail_fast:stop is active but no jobs failed => result is stopped" do
90
+ results = [ "passed" , "stopped" , "stopped" ]
91
+ { :ok , task } = Support.Factories.Task . create ( % { fail_fast_strategy: "stop" } )
92
+
93
+ assert { :ok , "stopped" } = W . calculate_task_result ( results , task )
94
+ end
95
+
96
+ test "when fail_fast:cancel is active and jobs are stopped due to failure => result is stopped" do
97
+ results = [ "passed" , "failed" , "stopped" ]
98
+ { :ok , task } = Support.Factories.Task . create ( % { fail_fast_strategy: "cancel" } )
75
99
76
- assert { :ok , "failed" } = W . calculate_task_result ( results )
100
+ # With cancel strategy, we don't override the normal logic
101
+ assert { :ok , "stopped" } = W . calculate_task_result ( results , task )
77
102
end
78
103
end
79
104
0 commit comments