Views
Show your views some love
Feature tests check the response. But what about the form itself?
The View
<!-- resources/views/users/create.blade.php -->
<form method="post" action="/users">
@csrf
<input type="text" name="name" />
<input type="email" name="email" />
<input type="submit" value="Create" />
</form>
<div id="user-list">
<div id="user-card"></div>
</div>
The Test
// tests/Feature/Http/Controllers/UserController/CreateTest.php
class CreateTest extends TestCase
{
use TestableFormRequest;
#[Test]
public function create_view_has_form(): void
{
$response = $this->get('/users/create');
$response->assertViewIs('users.create')
->assertViewHas('team', function (Team $team) {
return $team->name === 'Ac Milan';
})
->assertOK()
->assertViewHasForm()
->assertFormHasCSRF()
->assertFormHasField('text', 'name')
->assertFormHasField('email', 'email')
->assertFormHasSubmitButton()
->assertElementHasChild('div#user-list', 'div#user-card');
}
}
Powered by @jcergolj laravel-view-test-assertions