|
14 | 14 | use Tests\TestCase; |
15 | 15 | use Workflow\Serializers\Serializer; |
16 | 16 | use Workflow\V2\ActivityTaskBridge; |
17 | | -use Workflow\V2\Contracts\HistoryProjectionRole; |
18 | 17 | use Workflow\V2\Enums\ActivityStatus; |
19 | 18 | use Workflow\V2\Enums\HistoryEventType; |
20 | 19 | use Workflow\V2\Enums\RunStatus; |
|
33 | 32 | use Workflow\V2\Models\WorkflowRunSummary; |
34 | 33 | use Workflow\V2\Models\WorkflowTask; |
35 | 34 | use Workflow\V2\Models\WorkflowTimer; |
36 | | -use Workflow\V2\Support\DefaultHistoryProjectionRole; |
37 | 35 | use Workflow\V2\Support\HistoryExport; |
38 | 36 | use Workflow\V2\Support\RunDetailView; |
39 | 37 | use Workflow\V2\Support\TaskDispatcher; |
@@ -92,37 +90,6 @@ public function testTaskDispatchPersistsSuccessOnlyAfterAfterCommitPublicationRu |
92 | 90 | $this->assertSame('workflow_task_ready', $summary->liveness_state); |
93 | 91 | } |
94 | 92 |
|
95 | | - public function testTaskDispatchUsesHistoryProjectionRoleBindingForSuccessfulDispatches(): void |
96 | | - { |
97 | | - config()->set('workflows.v2.compatibility.current', 'build-a'); |
98 | | - config() |
99 | | - ->set('workflows.v2.compatibility.supported', ['build-a']); |
100 | | - |
101 | | - $customRole = $this->trackingHistoryProjectionRole(); |
102 | | - |
103 | | - $this->app->instance(HistoryProjectionRole::class, $customRole); |
104 | | - Queue::fake(); |
105 | | - |
106 | | - $run = $this->createWaitingRun('01J00000000000000000000001H'); |
107 | | - |
108 | | - /** @var WorkflowTask $task */ |
109 | | - $task = WorkflowTask::query()->create([ |
110 | | - 'workflow_run_id' => $run->id, |
111 | | - 'task_type' => TaskType::Workflow->value, |
112 | | - 'status' => TaskStatus::Ready->value, |
113 | | - 'available_at' => now() |
114 | | - ->subSecond(), |
115 | | - 'payload' => [], |
116 | | - 'connection' => 'redis', |
117 | | - 'queue' => 'default', |
118 | | - 'compatibility' => 'build-a', |
119 | | - ]); |
120 | | - |
121 | | - TaskDispatcher::dispatch($task); |
122 | | - |
123 | | - $this->assertSame([$run->id], $customRole->projectedRunIds); |
124 | | - } |
125 | | - |
126 | 93 | public function testTaskDispatchFailureRecordsTransportFailureWithoutPretendingPublishSucceeded(): void |
127 | 94 | { |
128 | 95 | config()->set('workflows.v2.compatibility.current', 'build-a'); |
@@ -204,46 +171,6 @@ public function testTaskDispatchFailureRecordsTransportFailureWithoutPretendingP |
204 | 171 | $this->assertSame('active', $export['summary']['task_problem_badge']['code']); |
205 | 172 | } |
206 | 173 |
|
207 | | - public function testTaskDispatchUsesHistoryProjectionRoleBindingForDispatchFailures(): void |
208 | | - { |
209 | | - config()->set('workflows.v2.compatibility.current', 'build-a'); |
210 | | - config() |
211 | | - ->set('workflows.v2.compatibility.supported', ['build-a']); |
212 | | - |
213 | | - $customRole = $this->trackingHistoryProjectionRole(); |
214 | | - |
215 | | - $this->app->instance(HistoryProjectionRole::class, $customRole); |
216 | | - $this->mock(BusDispatcher::class, static function (MockInterface $mock): void { |
217 | | - $mock->shouldReceive('dispatch') |
218 | | - ->once() |
219 | | - ->andThrow(new RuntimeException('Queue transport unavailable.')); |
220 | | - }); |
221 | | - |
222 | | - $run = $this->createWaitingRun('01J00000000000000000000002H'); |
223 | | - |
224 | | - /** @var WorkflowTask $task */ |
225 | | - $task = WorkflowTask::query()->create([ |
226 | | - 'workflow_run_id' => $run->id, |
227 | | - 'task_type' => TaskType::Workflow->value, |
228 | | - 'status' => TaskStatus::Ready->value, |
229 | | - 'available_at' => now() |
230 | | - ->subSeconds(5), |
231 | | - 'payload' => [], |
232 | | - 'connection' => 'redis', |
233 | | - 'queue' => 'default', |
234 | | - 'compatibility' => 'build-a', |
235 | | - ]); |
236 | | - |
237 | | - try { |
238 | | - TaskDispatcher::dispatch($task); |
239 | | - $this->fail('Expected dispatch to throw.'); |
240 | | - } catch (RuntimeException $exception) { |
241 | | - $this->assertSame('Queue transport unavailable.', $exception->getMessage()); |
242 | | - } |
243 | | - |
244 | | - $this->assertSame([$run->id], $customRole->projectedRunIds); |
245 | | - } |
246 | | - |
247 | 174 | public function testTaskDispatchFailureRecordsUnsupportedQueueCapabilityWithoutRunningInline(): void |
248 | 175 | { |
249 | 176 | config()->set('queue.default', 'redis'); |
@@ -979,38 +906,4 @@ private function configureUnsupportedSyncTaskConnection(): void |
979 | 906 | config() |
980 | 907 | ->set('workflows.v2.compatibility.supported', ['build-a']); |
981 | 908 | } |
982 | | - |
983 | | - /** |
984 | | - * @return HistoryProjectionRole&object{projectedRunIds:list<string>} |
985 | | - */ |
986 | | - private function trackingHistoryProjectionRole() |
987 | | - { |
988 | | - return new class(new DefaultHistoryProjectionRole()) implements HistoryProjectionRole { |
989 | | - /** |
990 | | - * @var list<string> |
991 | | - */ |
992 | | - public array $projectedRunIds = []; |
993 | | - |
994 | | - public function __construct( |
995 | | - private readonly DefaultHistoryProjectionRole $delegate, |
996 | | - ) { |
997 | | - } |
998 | | - |
999 | | - public function projectRun(WorkflowRun $run): WorkflowRunSummary |
1000 | | - { |
1001 | | - $this->projectedRunIds[] = $run->id; |
1002 | | - |
1003 | | - return $this->delegate->projectRun($run); |
1004 | | - } |
1005 | | - |
1006 | | - public function recordActivityStarted( |
1007 | | - WorkflowRun $run, |
1008 | | - ActivityExecution $execution, |
1009 | | - ActivityAttempt $attempt, |
1010 | | - WorkflowTask $task, |
1011 | | - ): WorkflowRunSummary { |
1012 | | - return $this->delegate->recordActivityStarted($run, $execution, $attempt, $task); |
1013 | | - } |
1014 | | - }; |
1015 | | - } |
1016 | 909 | } |
0 commit comments