Mon Feb 3
Mocking multiple overloads based on arguments.
$this->mock('overload:Stripe\Charge', function ($mock) {
$mock->shouldReceive('create')
->with(\Mockery::on(function ($argument) {
return is_array($argument) && isset($argument['source']) && $argument['source'] == 'card_expired';
}))
->times(1)
->andThrow(new \Stripe\Error\InvalidRequest("Source should be a valid card id", null)) // This relies on the try/catch logic in the Job
->getMock()
->shouldReceive('create')
->times(1)
->andReturn($this->getTestStripeResponse()); // Overload our instance with this default
});
We ignore our raised exception by you guessed it, a try/catch block.
try {
$this->withoutExceptionHandling()->artisan("subscriptions:process-remaining --day={$day} --no-progress")
->expectsOutput('4 subscription(s) found');
} catch(\Throwable $exception) {
}
\Event::assertDispatched(\App\Events\CardCharged::class, 3);
try {
$this->withoutExceptionHandling()->artisan("subscriptions:process-remaining --day={$day} --no-progress")
->expectsOutput('1 subscription(s) found');
} catch(\Throwable $exception) {
}
Wed Feb 2
Illuminate\Queue\MaxAttemptsExceededException
This stack trace shows the method call set at 5 maxTries:
Illuminate\Queue\MaxAttemptsExceededException: App\Jobs\PendingOrderTransferJob has been attempted too many times or run too long. The job may have previously timed out. in /home/forge/obr.rethinkgroup.org/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:394
Stack trace:
#0 /home/forge/obr.rethinkgroup.org/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(314): Illuminate\Queue\Worker->markJobAsFailedIfAlreadyExceedsMaxAttempts('redis:horizon', Object(Illuminate\Queue\Jobs\RedisJob), 5)
The failed job payload shows 5 attempts were made:
{"type":"job","timeout":null,"tags":["App\\Model\\PendingOrderStatus:1534"],"id":"3078","data":{"command":"O:32:\"App\\Jobs\\PendingOrderTransferJob\":8:{s:6:\"status\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":3:{s:5:\"class\";s:28:\"App\\Model\\PendingOrderStatus\";s:2:\"id\";i:1534;s:10:\"connection\";s:5:\"mysql\";}s:6:\"\u0000*\u0000job\";N;s:10:\"connection\";s:13:\"redis:horizon\";s:5:\"queue\";s:15:\"orders:transfer\";s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";N;s:7:\"chained\";a:0:{}}","commandName":"App\\Jobs\\PendingOrderTransferJob"},"displayName":"App\\Jobs\\PendingOrderTransferJob","timeoutAt":null,"pushedAt":"1580851619.0033","maxTries":null,"job":"Illuminate\\Queue\\CallQueuedHandler@call","attempts":5}