|
7 | 7 | use Illuminate\Contracts\Events\Dispatcher;
|
8 | 8 | use Illuminate\Contracts\Queue\QueueableEntity;
|
9 | 9 | use Illuminate\Contracts\Queue\ShouldQueue;
|
| 10 | +use Illuminate\Contracts\Queue\ShouldQueueAfterCommit; |
| 11 | +use Illuminate\Database\DatabaseTransactionsManager; |
10 | 12 | use Illuminate\Queue\InteractsWithQueue;
|
11 | 13 | use Illuminate\Queue\Jobs\SyncJob;
|
12 | 14 | use Illuminate\Queue\SyncQueue;
|
@@ -77,6 +79,32 @@ public function testCreatesPayloadObject()
|
77 | 79 | $this->assertSame('extraValue', $e->getMessage());
|
78 | 80 | }
|
79 | 81 | }
|
| 82 | + |
| 83 | + public function testItAddsATransactionCallbackForAfterCommitJobs() |
| 84 | + { |
| 85 | + $sync = new SyncQueue; |
| 86 | + $container = new Container; |
| 87 | + $container->bind(\Illuminate\Contracts\Container\Container::class, \Illuminate\Container\Container::class); |
| 88 | + $transactionManager = m::mock(DatabaseTransactionsManager::class); |
| 89 | + $transactionManager->shouldReceive('addCallback')->once()->andReturn(null); |
| 90 | + $container->instance('db.transactions', $transactionManager); |
| 91 | + |
| 92 | + $sync->setContainer($container); |
| 93 | + $sync->push(new SyncQueueAfterCommitJob()); |
| 94 | + } |
| 95 | + |
| 96 | + public function testItAddsATransactionCallbackForInterfaceBasedAfterCommitJobs() |
| 97 | + { |
| 98 | + $sync = new SyncQueue; |
| 99 | + $container = new Container; |
| 100 | + $container->bind(\Illuminate\Contracts\Container\Container::class, \Illuminate\Container\Container::class); |
| 101 | + $transactionManager = m::mock(DatabaseTransactionsManager::class); |
| 102 | + $transactionManager->shouldReceive('addCallback')->once()->andReturn(null); |
| 103 | + $container->instance('db.transactions', $transactionManager); |
| 104 | + |
| 105 | + $sync->setContainer($container); |
| 106 | + $sync->push(new SyncQueueAfterCommitInterfaceJob()); |
| 107 | + } |
80 | 108 | }
|
81 | 109 |
|
82 | 110 | class SyncQueueTestEntity implements QueueableEntity
|
@@ -134,3 +162,23 @@ public function getValueFromJob($key)
|
134 | 162 | return $payload['data'][$key] ?? null;
|
135 | 163 | }
|
136 | 164 | }
|
| 165 | + |
| 166 | +class SyncQueueAfterCommitJob |
| 167 | +{ |
| 168 | + use InteractsWithQueue; |
| 169 | + |
| 170 | + public $afterCommit = true; |
| 171 | + |
| 172 | + public function handle() |
| 173 | + { |
| 174 | + } |
| 175 | +} |
| 176 | + |
| 177 | +class SyncQueueAfterCommitInterfaceJob implements ShouldQueueAfterCommit |
| 178 | +{ |
| 179 | + use InteractsWithQueue; |
| 180 | + |
| 181 | + public function handle() |
| 182 | + { |
| 183 | + } |
| 184 | +} |
0 commit comments