Skip to content

Instantly share code, notes, and snippets.

@zhabinskiy
Last active July 14, 2021 21:41
Show Gist options
  • Save zhabinskiy/e0a7f768a34c32cb5e345efefe8bf87b to your computer and use it in GitHub Desktop.
Save zhabinskiy/e0a7f768a34c32cb5e345efefe8bf87b to your computer and use it in GitHub Desktop.
Laravel Livewire test example
<?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