96 - Testing Mailable Contents

This commit is contained in:
Adam Wathan
2017-04-18 14:31:08 -04:00
parent b9837f168f
commit cbbb986af7
3 changed files with 48 additions and 1 deletions

View File

@@ -30,6 +30,7 @@ class OrderConfirmationEmail extends Mailable
*/
public function build()
{
return $this->view('view.name');
return $this->view('emails.order-confirmation-email')
->subject("Your TicketBeast Order");
}
}

View File

@@ -0,0 +1,7 @@
<p>Thanks for your order!</p>
<p>You can view your tickets at any time by visiting this URL:</p>
<p>
<a href="{{ url("/orders/{$order->confirmation_number}") }}">{{ url("/orders/{$order->confirmation_number}") }}</a>
</p>

View File

@@ -0,0 +1,39 @@
<?php
use App\Order;
use App\Mail\OrderConfirmationEmail;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class OrderConfirmationEmailTest extends TestCase
{
/** @test */
function email_contains_a_link_to_the_order_confirmation_page()
{
$order = factory(Order::class)->make([
'confirmation_number' => 'ORDERCONFIRMATION1234'
]);
$email = new OrderConfirmationEmail($order);
$rendered = $this->render($email);
// In Laravel 5.5...
// $rendered = $email->render();
$this->assertContains(url('/orders/ORDERCONFIRMATION1234'), $rendered);
}
/** @test */
function email_has_a_subject()
{
$order = factory(Order::class)->make();
$email = new OrderConfirmationEmail($order);
$this->assertEquals("Your TicketBeast Order", $email->build()->subject);
}
private function render($mailable)
{
$mailable->build();
return view($mailable->view, $mailable->buildViewData())->render();
}
}