From 02213d3de24a51352202f12668a9fcdd8fcb7951 Mon Sep 17 00:00:00 2001 From: Maxim Smakouz Date: Wed, 8 May 2024 19:23:55 +0300 Subject: [PATCH] Add headers to SyncDriver (#1107) --- src/Queue/src/Driver/SyncDriver.php | 4 +++- src/Queue/tests/Driver/SyncDriverTest.php | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Queue/src/Driver/SyncDriver.php b/src/Queue/src/Driver/SyncDriver.php index 63c9ef276..35b75edb1 100644 --- a/src/Queue/src/Driver/SyncDriver.php +++ b/src/Queue/src/Driver/SyncDriver.php @@ -5,6 +5,7 @@ namespace Spiral\Queue\Driver; use Ramsey\Uuid\Uuid; +use Spiral\Queue\ExtendedOptionsInterface; use Spiral\Queue\Interceptor\Consume\Handler; use Spiral\Queue\OptionsInterface; use Spiral\Queue\QueueInterface; @@ -36,7 +37,8 @@ public function push(string $name, mixed $payload = [], OptionsInterface $option driver: 'sync', queue: 'default', id: $id, - payload: $payload + payload: $payload, + headers: $options instanceof ExtendedOptionsInterface ? $options->getHeaders() : [], ); return $id; diff --git a/src/Queue/tests/Driver/SyncDriverTest.php b/src/Queue/tests/Driver/SyncDriverTest.php index 42e5932a6..18786cb83 100644 --- a/src/Queue/tests/Driver/SyncDriverTest.php +++ b/src/Queue/tests/Driver/SyncDriverTest.php @@ -13,6 +13,7 @@ use Spiral\Core\CoreInterface; use Spiral\Queue\Driver\SyncDriver; use Spiral\Queue\Interceptor\Consume\Handler; +use Spiral\Queue\Options; use Spiral\Telemetry\NullTracer; use Spiral\Telemetry\NullTracerFactory; use Spiral\Telemetry\TracerInterface; @@ -64,6 +65,28 @@ public function testJobShouldBePushed(mixed $payload): void $this->assertSame($uuid->toString(), $id); } + public function testJobWithHeadersShouldBePushed(): void + { + $this->factory->shouldReceive('uuid4') + ->andReturn($uuid = (new UuidFactory())->uuid4()); + + $options = (new Options())->withHeader('foo', 'bar'); + + $this->core->shouldReceive('callAction') + ->withSomeOfArgs('foo', [ + 'driver' => 'sync', + 'queue' => 'default', + 'id' => $uuid->toString(), + 'payload' => ['baz' => 'baf'], + 'headers' => ['foo' => ['bar']] + ]) + ->once(); + + $id = $this->queue->push('foo', ['baz' => 'baf'], $options); + + $this->assertSame($uuid->toString(), $id); + } + public static function payloadDataProvider(): \Traversable { yield [['baz' => 'baf']];