diff --git a/app/Invitation.php b/app/Invitation.php index efd95b1..5cb8b7a 100644 --- a/app/Invitation.php +++ b/app/Invitation.php @@ -2,6 +2,8 @@ namespace App; +use App\Mail\InvitationEmail; +use Illuminate\Support\Facades\Mail; use Illuminate\Database\Eloquent\Model; class Invitation extends Model @@ -22,4 +24,9 @@ class Invitation extends Model { return $this->user_id !== null; } + + public function send() + { + Mail::to($this->email)->send(new InvitationEmail($this)); + } } diff --git a/app/Mail/InvitationEmail.php b/app/Mail/InvitationEmail.php new file mode 100644 index 0000000..3aa7714 --- /dev/null +++ b/app/Mail/InvitationEmail.php @@ -0,0 +1,35 @@ +invitation = $invitation; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->view('view.name'); + } +} diff --git a/routes/console.php b/routes/console.php index 896ec60..ad085df 100644 --- a/routes/console.php +++ b/routes/console.php @@ -1,6 +1,7 @@ $email, 'code' => InvitationCode::generate(), - ]); + ])->send(); })->describe('Invite a new promoter to create an account.'); diff --git a/tests/Feature/InvitePromoterTest.php b/tests/Feature/InvitePromoterTest.php index 7ac4b34..b98476f 100644 --- a/tests/Feature/InvitePromoterTest.php +++ b/tests/Feature/InvitePromoterTest.php @@ -4,7 +4,9 @@ namespace Tests\Feature; use App\Invitation; use Tests\TestCase; +use App\Mail\InvitationEmail; use App\Facades\InvitationCode; +use Illuminate\Support\Facades\Mail; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -15,6 +17,7 @@ class InvitePromoterTest extends TestCase /** @test */ function inviting_a_promoter_via_the_cli() { + Mail::fake(); InvitationCode::shouldReceive('generate')->andReturn('TESTCODE1234'); $this->artisan('invite-promoter', ['email' => 'john@example.com']); @@ -23,5 +26,10 @@ class InvitePromoterTest extends TestCase $invitation = Invitation::first(); $this->assertEquals('john@example.com', $invitation->email); $this->assertEquals('TESTCODE1234', $invitation->code); + + Mail::assertSent(InvitationEmail::class, function ($mail) use ($invitation) { + return $mail->hasTo('john@example.com') + && $mail->invitation->is($invitation); + }); } }