A Livewire Test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Tests\Feature; | |
use App\User; | |
use Tests\TestCase; | |
use Livewire\Livewire; | |
use Illuminate\Support\Facades\Route; | |
use Illuminate\Foundation\Testing\RefreshDatabase; | |
class LoginTest extends TestCase | |
{ | |
use RefreshDatabase; | |
/** @test */ | |
public function can_view_login_page() | |
{ | |
$this->get(route('login')) | |
->assertSuccessful() | |
->assertSeeLivewire('login'); | |
} | |
/** @test */ | |
public function is_redirected_if_already_logged_in() | |
{ | |
auth()->login( | |
factory(User::class)->create() | |
); | |
$this->get(route('login')) | |
->assertRedirect('/'); | |
} | |
/** @test */ | |
public function can_login() | |
{ | |
$user = factory(User::class)->create(); | |
Livewire::test('login') | |
->set('email', $user->email) | |
->set('password', 'secret') | |
->call('submit'); | |
$this->assertTrue( | |
auth()->user()->is(User::where('email', $user->email)->first()) | |
); | |
} | |
/** @test */ | |
public function is_redirected_to_intended_after_login_prompt_from_auth_guard() | |
{ | |
Route::get('/intended')->middleware('auth'); | |
$user = factory(User::class)->create(); | |
$this->get('/intended')->assertRedirect('/login'); | |
Livewire::test('login') | |
->set('email', $user->email) | |
->set('password', 'secret') | |
->call('submit') | |
->assertRedirect('/intended'); | |
} | |
/** @test */ | |
public function is_redirected_to_root_after_login() | |
{ | |
$user = factory(User::class)->create(); | |
Livewire::test('login') | |
->set('email', $user->email) | |
->set('password', 'secret') | |
->call('submit') | |
->assertRedirect('/'); | |
} | |
/** @test */ | |
public function email_is_required() | |
{ | |
factory(User::class)->create(); | |
Livewire::test('login') | |
->set('password', 'secret') | |
->call('submit') | |
->assertHasErrors(['email' => 'required']); | |
} | |
/** @test */ | |
public function email_must_be_valid_email() | |
{ | |
factory(User::class)->create(); | |
Livewire::test('login') | |
->set('email', 'invalid-email') | |
->set('password', 'secret') | |
->call('submit') | |
->assertHasErrors(['email' => 'email']); | |
} | |
/** @test */ | |
public function password_is_required() | |
{ | |
$user = factory(User::class)->create(); | |
Livewire::test('login') | |
->set('email', $user->email) | |
->call('submit') | |
->assertHasErrors(['password' => 'required']); | |
} | |
/** @test */ | |
public function bad_login_attempt_shows_message() | |
{ | |
$user = factory(User::class)->create(); | |
Livewire::test('login') | |
->set('email', $user->email) | |
->set('password', 'bad-password') | |
->call('submit') | |
->assertHasErrors('email'); | |
$this->assertNull(auth()->user()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment