Last active
July 14, 2021 21:41
-
-
Save zhabinskiy/e0a7f768a34c32cb5e345efefe8bf87b to your computer and use it in GitHub Desktop.
Laravel Livewire test example
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 ProfileTest extends TestCase | |
{ | |
use RefreshDatabase; | |
/** @test */ | |
function profile_page_contains_profile_component() | |
{ | |
$user = factory(User::class)->create(); | |
$this->actingAs($user) | |
->get(route('profile')) | |
->assertSuccessful() | |
->assertSeeLivewire('profile'); | |
} | |
/** @test */ | |
public function is_redirected_if_already_logged_out() | |
{ | |
$this->get(route('profile')) | |
->assertRedirect('/signin'); | |
} | |
/** @test */ | |
public function is_profile_data_pre_populated() | |
{ | |
$name = 'John Doe'; | |
$email = 'john@doe.com'; | |
$user = factory(User::class)->create([ | |
'name' => $name, | |
'email' => $email, | |
]); | |
Livewire::actingAs($user) | |
->test('profile') | |
->assertSet('name', $name) | |
->assertSet('email', $email); | |
} | |
/** @test */ | |
public function message_is_shown_on_save() | |
{ | |
$name = 'John Doe'; | |
$email = 'john@doe.com'; | |
$user = factory(User::class)->create([ | |
'name' => $name, | |
'email' => $email, | |
]); | |
Livewire::actingAs($user) | |
->test('profile') | |
->assertDontSee('Successfuly saved!') | |
->call('save') | |
->assertSee('Successfuly saved!'); | |
} | |
/** @test */ | |
public function name_is_maximum_of_24_characters() | |
{ | |
$user = factory(User::class)->create(); | |
$name = 'This name contains more than 24 characters'; | |
Livewire::actingAs($user) | |
->test('profile') | |
->set('name', $name) | |
->assertHasErrors(['name' => 'max']); | |
} | |
/** @test */ | |
public function data_has_changed() | |
{ | |
$user = factory(User::class)->create(); | |
$name = 'John Doe'; | |
$email = 'john@doe.com'; | |
Livewire::actingAs($user) | |
->test('profile') | |
->set('name', $name) | |
->set('email', $email) | |
->call('save') | |
->assertHasNoErrors(); | |
$nameFromDb = auth()->user()->name; | |
$emailFromDb = auth()->user()->email; | |
$this->assertEquals($name, $nameFromDb); | |
$this->assertEquals($email, $emailFromDb); | |
} | |
/** @test */ | |
public function is_redirected_if_user_has_logged_out() | |
{ | |
$user = factory(User::class)->create(); | |
Livewire::actingAs($user) | |
->test('profile') | |
->call('logout') | |
->assertRedirect('/'); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment