adrema/tests/Feature/Permission/UserUpdateTest.php

57 lines
2.3 KiB
PHP

<?php
namespace Tests\Feature\Permission;
use App\User;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\Mail;
use Tests\RequestFactories\UserRequestFactory;
use Tests\TestCase;
class UserUpdateTest extends TestCase
{
use DatabaseTransactions;
public function testItUpdatesAUser(): void
{
$this->login()->loginNami();
$user = User::factory()->create();
$this->patchJson(route('user.update', ['user' => $user]), UserRequestFactory::new()->name('Max Muster')->email('max@muster.de')->create())
->assertOk();
$this->assertDatabaseHas('users', [
'email' => 'max@muster.de',
'firstname' => 'Max',
'lastname' => 'Muster',
]);
$this->assertDatabaseCount('users', 2);
}
public function testItCannotUseAGivenMailAddress(): void
{
$this->login()->loginNami();
$jane = User::factory()->email('jane@muster.de')->create();
$user = User::factory()->create();
$this->patchJson(route('user.update', ['user' => $user]), UserRequestFactory::new()->email('jane@muster.de')->create())
->assertJsonValidationErrors('email');
$this->patchJson(route('user.update', ['user' => $jane]), UserRequestFactory::new()->email('jane@muster.de')->create())
->assertJsonMissingValidationErrors('email');
}
public function testItNeedsNameAndEmail(): void
{
Mail::fake();
$this->login()->loginNami();
$user = User::factory()->create();
User::factory()->email('jane@doe.de')->create();
$this->patchJson(route('user.update', ['user' => $user]), UserRequestFactory::new()->name('')->email('max@muster.de')->create())->assertJsonValidationErrors('firstname');
$this->patchJson(route('user.update', ['user' => $user]), UserRequestFactory::new()->name('Max Muster')->email('maxusterde')->create())->assertJsonValidationErrors('email');
$this->patchJson(route('user.update', ['user' => $user]), UserRequestFactory::new()->name('Max Muster')->email('')->create())->assertJsonValidationErrors('email');
$this->patchJson(route('user.update', ['user' => $user]), UserRequestFactory::new()->email('jane@doe.de')->create())->assertJsonValidationErrors('email');
}
}