Skip to content

Commit ff6776c

Browse files
authored
Check instance support failed without resolving (#26)
1 parent 266c797 commit ff6776c

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

Diff for: src/Job/QlessJob.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ protected function failed($e)
208208

209209
[$class, $method] = JobName::parse($payload['job']);
210210

211-
if (class_exists($class) && method_exists($this->instance = $this->resolve($class), 'failed')) {
211+
if (class_exists($class) && method_exists($class, 'failed')) {
212+
$this->instance = $this->resolve($class);
212213
$this->instance->failed($payload['data'], $e);
213214
}
214215
}

Diff for: tests/Job/QlessJobTest.php

+23
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use LaravelQless\Queue\QlessQueue;
99
use LaravelQless\Tests\Helpers\ModifierTrait;
1010
use LaravelQless\Tests\Stub\JobStub;
11+
use LaravelQless\Tests\Stub\JobWithOutFailedStub;
1112
use Orchestra\Testbench\TestCase;
1213
use LaravelQless\Job\QlessJob;
1314
use Qless\Jobs\BaseJob;
@@ -98,6 +99,28 @@ public function testFireFailedWithExistentClass(): void
9899
self::assertNotNull($job->getResolvedJob());
99100
}
100101

102+
public function testFireWithNonFailedClass(): void
103+
{
104+
$jobMock = $this->getJob();
105+
$jobMock->method('getData')
106+
->willReturn(new JobData(['key' => 'value']));
107+
108+
$jobMock->method('__get')
109+
->with('failed')
110+
->willReturn(true);
111+
112+
$container = $this->getContainer();
113+
$container->expects(self::never())->method('make')->with(JobWithOutFailedStub::class)
114+
->willReturn(new JobWithOutFailedStub());
115+
116+
$payload = json_encode(['job' => JobWithOutFailedStub::class . '@failed', 'data' => []]);
117+
118+
$job = (new QlessJob($container, $this->getQueue(), $this->getJobHandler(), $jobMock, $payload));
119+
$job->fire();
120+
121+
self::assertNull($job->getResolvedJob());
122+
}
123+
101124
public function testRelease(): void
102125
{
103126
$queue = $this->getQueue();

Diff for: tests/Stub/JobWithOutFailedStub.php

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
namespace LaravelQless\Tests\Stub;
3+
4+
/**
5+
* Class JobWithOutFailedStub
6+
*
7+
* @package LaravelQless\Tests\Stub
8+
*/
9+
class JobWithOutFailedStub
10+
{
11+
public function fire()
12+
{
13+
}
14+
}

0 commit comments

Comments
 (0)