1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
<?php
namespace Illuminate\Tests\Integration\Queue;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Orchestra\Testbench\TestCase;
abstract class QueueTestCase extends TestCase
{
use DatabaseMigrations;
/**
* The current database driver.
*
* @return string
*/
protected $driver;
/**
* Define the test environment.
*
* @param \Illuminate\Foundation\Application $app
* @return void
*/
protected function defineEnvironment($app)
{
$this->driver = $app['config']->get('queue.default', 'sync');
}
/**
* Run queue worker command.
*
* @param array $options
* @param int $times
* @return void
*/
protected function runQueueWorkerCommand(array $options = [], int $times = 1): void
{
if ($this->getQueueDriver() !== 'sync' && $times > 0) {
$count = 0;
do {
$this->artisan('queue:work', array_merge($options, [
'--memory' => 1024,
]))->assertSuccessful();
$count++;
} while ($count < $times);
}
}
/**
* Mark test as skipped when using given queue drivers.
*
* @param array<int, string> $drivers
* @return void
*/
protected function markTestSkippedWhenUsingQueueDrivers(array $drivers): void
{
foreach ($drivers as $driver) {
if ($this->getQueueDriver() === $driver) {
$this->markTestSkipped("Unable to use `{$driver}` queue driver for the test");
}
}
}
/**
* Mark test as skipped when using "sync" queue driver.
*
* @return void
*/
protected function markTestSkippedWhenUsingSyncQueueDriver(): void
{
$this->markTestSkippedWhenUsingQueueDrivers(['sync']);
}
/**
* Get the queue driver.
*
* @return string
*/
protected function getQueueDriver(): string
{
return $this->driver;
}
}
|