Skip to content

Commit ef0f060

Browse files
committed
fixed type checking, added getLastJobId() method
1 parent 25016a8 commit ef0f060

File tree

4 files changed

+53
-23
lines changed

4 files changed

+53
-23
lines changed

src/Jobs/SendMessageJob.php

+7-15
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,23 @@ class SendMessageJob extends BaseObject implements JobInterface
1616
{
1717
/** @var MessageInterface */
1818
public $message;
19-
/** @var Mailer */
19+
/** @var string */
2020
public $mailer;
2121

2222
/**
23+
* @inheritdoc
24+
* @see JobInterface::execute(
25+
*
2326
* @throws InvalidConfigException
2427
* @throws \InvalidArgumentException
2528
*/
26-
public function init()
29+
public function execute($queue)
2730
{
28-
parent::init();
2931
if (!$this->message instanceof MessageInterface) {
3032
throw new \InvalidArgumentException('Message must be an instance of ' . MessageInterface::class);
3133
}
32-
3334
/** @var Mailer $mailer */
34-
$this->mailer = Instance::ensure($this->mailer, Mailer::class);
35-
}
36-
37-
/**
38-
* @inheritdoc
39-
* @see JobInterface::execute()
40-
*/
41-
public function execute($queue)
42-
{
43-
44-
return $this->mailer->syncMailer->send($this->message);
35+
$mailer = Instance::ensure($this->mailer, Mailer::class);
36+
return $mailer->getSyncMailer()->send($this->message);
4537
}
4638
}

src/Jobs/SendMultipleMessagesJob.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@ public function execute($queue)
3030
if (!is_array($this->messages)) {
3131
throw new \InvalidArgumentException('Message must be an instance of ' . MessageInterface::class);
3232
}
33-
3433
/** @var Mailer $mailer */
3534
$mailer = Instance::ensure($this->mailer, Mailer::class);
36-
return $mailer->syncMailer->sendMultiple($this->messages);
35+
return $mailer->getSyncMailer()->sendMultiple($this->messages);
3736
}
3837
}

src/Mailer.php

+18-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class Mailer extends Component implements MailerInterface
2020
protected $queue = 'queue';
2121
/** @var MailerInterface */
2222
protected $syncMailer;
23+
/** @var int|null */
24+
protected $lastJobId;
2325

2426
/**
2527
* @return object|Queue
@@ -81,7 +83,8 @@ public function send($message)
8183
$job = \Yii::createObject(SendMessageJob::class);
8284
$job->mailer = $this->id;
8385
$job->message = $message;
84-
return $this->getQueue()->push($job);
86+
$this->lastJobId = $this->getQueue()->push($job);
87+
return $this->lastJobId !== null;
8588
}
8689

8790
/**
@@ -95,6 +98,19 @@ public function sendMultiple(array $messages)
9598
$job = \Yii::createObject(SendMultipleMessagesJob::class);
9699
$job->mailer = $this->id;
97100
$job->messages = $messages;
98-
return $this->getQueue()->push($job);
101+
$this->lastJobId = $this->getQueue()->push($job);
102+
if ($this->lastJobId !== null) {
103+
return count($messages);
104+
} else {
105+
return 0;
106+
}
107+
}
108+
109+
/**
110+
* @return int|null
111+
*/
112+
public function getLastJobId()
113+
{
114+
return $this->lastJobId;
99115
}
100116
}

tests/MailerTest.php

+27-4
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@
55
class MailerTest extends \PHPUnit\Framework\TestCase
66
{
77
/** @var \YarCode\Yii2\QueueMailer\Mailer */
8-
public $a;
9-
8+
public $mailer;
9+
/** @var \yii\mail\MessageInterface */
10+
public $message;
1011
/**
1112
* @throws \yii\base\InvalidConfigException
1213
*/
1314
public function setUp()
1415
{
1516
parent::setUp();
16-
$this->a = \Yii::createObject([
17+
18+
$this->mailer = \Yii::createObject([
1719
'class' => \YarCode\Yii2\QueueMailer\Mailer::class,
1820
'queue' => [
1921
'class' => \yii\queue\sync\Queue::class,
@@ -24,10 +26,31 @@ public function setUp()
2426
'useFileTransport' => true,
2527
],
2628
]);
29+
30+
$this->message = $this->mailer->compose();
31+
$this->message->setTo('[email protected]');
32+
$this->message->setFrom('[email protected]');
33+
$this->message->setHtmlBody('test message');
2734
}
2835

2936
public function testInterface()
3037
{
31-
$this->assertInstanceOf(\yii\mail\MailerInterface::class, $this->a);
38+
$this->assertInstanceOf(\yii\mail\MailerInterface::class, $this->mailer);
39+
}
40+
41+
public function testSend()
42+
{
43+
$this->assertTrue($this->mailer->send($this->message));
44+
}
45+
46+
public function testSendMultiple()
47+
{
48+
$this->assertEquals(2, $this->mailer->send([$this->message, $this->message]));
49+
}
50+
51+
public function testGetLastJobId()
52+
{
53+
$this->mailer->send($this->message);
54+
$this->assertEquals(1, $this->mailer->getLastJobId());
3255
}
3356
}

0 commit comments

Comments
 (0)