Skip to content

Commit 73d3984

Browse files
committed
added tests
1 parent ce35b0e commit 73d3984

File tree

3 files changed

+94
-1
lines changed

3 files changed

+94
-1
lines changed

src/SendEmailJob.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class SendEmailJob implements ShouldQueue
1313
{
1414
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
1515

16-
private $email;
16+
public $email;
1717

1818
public function __construct(Email $email)
1919
{

tests/QueuedEmailsTest.php

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
3+
namespace Tests;
4+
5+
use Illuminate\Support\Facades\Queue;
6+
use Stackkit\LaravelDatabaseEmails\SendEmailJob;
7+
use Illuminate\Support\Facades\Mail;
8+
9+
class QueuedEmailsTest extends TestCase
10+
{
11+
public function setUp(): void
12+
{
13+
parent::setUp();
14+
15+
Mail::getSwiftMailer()->registerPlugin(new TestingMailEventListener($this));
16+
}
17+
18+
/** @test */
19+
public function queueing_an_email_will_leave_sending_on_false()
20+
{
21+
$email = $this->queueEmail();
22+
23+
$this->assertEquals(0, $email->sending);
24+
}
25+
26+
/** @test */
27+
public function queueing_an_email_will_dispatch_a_job()
28+
{
29+
Queue::fake();
30+
31+
$email = $this->queueEmail();
32+
33+
Queue::assertPushed(SendEmailJob::class, function (SendEmailJob $job) use ($email) {
34+
return $job->email->id === $email->id;
35+
});
36+
}
37+
38+
/** @test */
39+
public function emails_can_be_queued_on_a_specific_connection()
40+
{
41+
Queue::fake();
42+
43+
$this->queueEmail('some-connection');
44+
45+
Queue::assertPushed(SendEmailJob::class, function (SendEmailJob $job) {
46+
return $job->connection === 'some-connection';
47+
});
48+
}
49+
50+
/** @test */
51+
public function emails_can_be_queued_on_a_specific_queue()
52+
{
53+
Queue::fake();
54+
55+
$this->queueEmail('default', 'some-queue');
56+
57+
Queue::assertPushed(SendEmailJob::class, function (SendEmailJob $job) {
58+
return $job->queue === 'some-queue';
59+
});
60+
}
61+
62+
/** @test */
63+
public function the_send_email_job_will_call_send_on_the_email_instance()
64+
{
65+
Queue::fake();
66+
67+
$email = $this->queueEmail('default', 'some-queue');
68+
69+
$job = new SendEmailJob($email);
70+
71+
Mail::shouldReceive('send')->once();
72+
73+
$job->handle();
74+
}
75+
76+
/** @test */
77+
public function the_mail_will_be_marked_as_sent_when_job_is_finished()
78+
{
79+
Queue::fake();
80+
81+
$email = $this->queueEmail('default', 'some-queue');
82+
83+
$job = new SendEmailJob($email);
84+
$job->handle();
85+
86+
$this->assertTrue($email->isSent());
87+
}
88+
}

tests/TestCase.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ public function scheduleEmail($scheduledFor, $overwrite = [])
131131
return $this->createEmail($overwrite)->schedule($scheduledFor);
132132
}
133133

134+
public function queueEmail($connection = null, $queue = null, $overwrite = [])
135+
{
136+
return $this->createEmail($overwrite)->queue($connection, $queue);
137+
}
138+
134139
public function assertStringContains($needle, $haystack)
135140
{
136141
if (method_exists($this, 'assertStringContainsString')) {

0 commit comments

Comments
 (0)