Skip to content

Commit dc2b82a

Browse files
committed
Merge branch 'event-message-sent' of https://github.com/CyrilMazur/laravel-framework into CyrilMazur-event-message-sent
2 parents a513aaa + 7cf5d6d commit dc2b82a

File tree

3 files changed

+46
-2
lines changed

3 files changed

+46
-2
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Illuminate\Mail\Events;
4+
5+
class MessageSent
6+
{
7+
/**
8+
* The Swift message instance.
9+
*
10+
* @var \Swift_Message
11+
*/
12+
public $message;
13+
14+
/**
15+
* Create a new event instance.
16+
*
17+
* @param \Swift_Message $message
18+
* @return void
19+
*/
20+
public function __construct($message)
21+
{
22+
$this->message = $message;
23+
}
24+
}

src/Illuminate/Mail/Mailer.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,10 @@ public function send($view, array $data = [], $callback = null)
206206
}
207207

208208
$this->sendSwiftMessage($message->getSwiftMessage());
209+
210+
if ($this->events) {
211+
$this->events->dispatch(new Events\MessageSent($message->getSwiftMessage()));
212+
}
209213
}
210214

211215
/**

tests/Mail/MailMailerTest.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,25 @@ public function testFailedRecipientsAreAppendedAndCanBeRetrieved()
132132
$this->assertEquals(['[email protected]'], $mailer->failures());
133133
}
134134

135-
protected function getMailer()
135+
public function testEventsAreDispatched()
136136
{
137-
return new \Illuminate\Mail\Mailer(m::mock('Illuminate\Contracts\View\Factory'), m::mock('Swift_Mailer'));
137+
unset($_SERVER['__mailer.test']);
138+
$events = m::mock('Illuminate\Contracts\Events\Dispatcher');
139+
$events->shouldReceive('until')->once()->with(m::type('Illuminate\Mail\Events\MessageSending'));
140+
$events->shouldReceive('dispatch')->once()->with(m::type('Illuminate\Mail\Events\MessageSent'));
141+
$mailer = $this->getMailer($events);
142+
$view = m::mock('StdClass');
143+
$mailer->getViewFactory()->shouldReceive('make')->once()->andReturn($view);
144+
$view->shouldReceive('render')->once()->andReturn('rendered.view');
145+
$this->setSwiftMailer($mailer);
146+
$mailer->getSwiftMailer()->shouldReceive('send')->once()->with(m::type('Swift_Message'), []);
147+
$mailer->send('foo', ['data'], function ($m) {
148+
});
149+
}
150+
151+
protected function getMailer($events = null)
152+
{
153+
return new \Illuminate\Mail\Mailer(m::mock('Illuminate\Contracts\View\Factory'), m::mock('Swift_Mailer'), $events);
138154
}
139155

140156
public function setSwiftMailer($mailer)

0 commit comments

Comments
 (0)