forked from jdavidbakr/mail-tracker
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathRecordComplaintJobTest.php
More file actions
54 lines (49 loc) · 1.7 KB
/
Copy pathRecordComplaintJobTest.php
File metadata and controls
54 lines (49 loc) · 1.7 KB
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
<?php
namespace jdavidbakr\MailTracker\Tests;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Event;
use jdavidbakr\MailTracker\Model\SentEmail;
use jdavidbakr\MailTracker\RecordBounceJob;
use jdavidbakr\MailTracker\RecordComplaintJob;
use jdavidbakr\MailTracker\Events\ComplaintMessageEvent;
class RecordComplaintJobTest extends SetUpTest
{
/**
* @test
*/
public function it_marks_the_email_as_unsuccessful()
{
Event::fake();
$track = SentEmail::create([
'hash' => Str::random(32),
]);
$message_id = Str::uuid();
$track->message_id = $message_id;
$track->save();
$message = (object)[
'mail' => (object)[
'messageId' => $message_id,
],
'complaint' => (object)[
'timestamp' => 12345,
'complainedRecipients' => (object)[
(object)[
'emailAddress' => 'recipient@example.com'
]
],
]
];
$job = new RecordComplaintJob($message);
$job->handle();
$track = $track->fresh();
$meta = $track->meta;
$this->assertTrue($meta->get('complaint'));
$this->assertFalse($meta->get('success'));
$this->assertEquals(12345, $meta->get('complaint_time'));
$this->assertEquals(json_decode(json_encode($message), true), $meta->get('sns_message_complaint'));
Event::assertDispatched(ComplaintMessageEvent::class, function ($event) use ($track) {
return $event->email_address == 'recipient@example.com' &&
$event->sent_email->hash == $track->hash;
});
}
}