1
0
Fork 0

Character: add ability to edit a character.

This commit is contained in:
Henrik Hautakoski 2021-07-03 13:45:48 +02:00
parent d8895901bf
commit b6f1f8b887
8 changed files with 217 additions and 70 deletions

View file

@ -37,11 +37,11 @@ class CharacterCreateTest extends TestCase
$this->actingAs(User::factory()->create());
\Livewire::test(CreateCharacterForm::class)
->set('name', 'Elise')
->set('level', '70')
->set('class', 'warrior')
->set('race', 'human')
->set('gender', 'F')
->set('character.name', 'Elise')
->set('character.level', '70')
->set('character.class', 'warrior')
->set('character.race', 'human')
->set('character.gender', 'F')
->call('save')
->assertRedirect(route('user.index'));
@ -67,11 +67,11 @@ class CharacterCreateTest extends TestCase
// Try create one more via livewire form.
\Livewire::test(CreateCharacterForm::class)
->set('name', 'Notonemore')
->set('level', '10')
->set('class', 'mage')
->set('race', 'troll')
->set('gender', 'M')
->set('character.name', 'Notonemore')
->set('character.level', '10')
->set('character.class', 'mage')
->set('character.race', 'troll')
->set('character.gender', 'M')
->call('save')
->assertForbidden();
}
@ -79,11 +79,11 @@ class CharacterCreateTest extends TestCase
public function test_guest_can_not_create_characters()
{
\Livewire::test(CreateCharacterForm::class)
->set('name', 'Guestchar')
->set('level', '61')
->set('class', 'priest')
->set('race', 'dwarf')
->set('gender', 'M')
->set('character.name', 'Guestchar')
->set('character.level', '61')
->set('character.class', 'priest')
->set('character.race', 'dwarf')
->set('character.gender', 'M')
->call('save')
->assertForbidden();

View file

@ -0,0 +1,123 @@
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Models\User;
use App\Models\Character;
use App\Http\Livewire\Form\CreateCharacterForm;
class CharacterUpdateTest extends TestCase
{
use RefreshDatabase;
public function test_user_can_render_character_edit_page()
{
$user = User::factory()->create();
$character = Character::factory()->for($user)->create();
$response = $this->actingAs($user)
->get(route('character.edit', ['character' => $character]));
$response->assertStatus(200); // OK
}
public function test_guest_can_not_render_character_edit_page_for_someone_elses_character()
{
$user = User::factory()->create();
$character = Character::factory()->create();
$response = $this->actingAs($user)
->get(route('character.edit', ['character' => $character]));
$response->assertStatus(403); // Forbidden
}
public function test_user_can_update_character()
{
$user = User::factory()->create();
$character = Character::factory()->for($user)->create([
'name' => 'Mychar',
'level' => '60',
'class' => 'warrior',
'race' => 'human',
'gender' => 'M'
]);
$this->actingAs($user);
\Livewire::test(CreateCharacterForm::class, ['character' => $character])
->set('character.name', 'Updated')
->set('character.level', '70')
->set('character.class', 'priest')
->set('character.race', 'dwarf')
->set('character.gender', 'F')
->call('save')
->assertRedirect(route('user.index'));
// Check database that character was updated.
$this->assertDatabaseHas('characters', [
'name' => 'Updated',
'level' => '70',
'race' => 'dwarf',
'class' => 'priest',
'gender' => 'F'
]);
}
public function test_user_can_not_update_someone_elses_character()
{
$user = User::factory()->create();
$character = Character::factory()->create([
'race' => 'undead',
'class' => 'rogue'
]);;
$this->actingAs($user);
// Try update via livewire form.
\Livewire::test(CreateCharacterForm::class, ['character' => $character])
->set('character.name', 'Mynewname')
->call('save')
->assertForbidden();
// Check database that character has old data
$this->assertDatabaseHas('characters', [
'name' => $character->name,
'level' => $character->level,
'race' => $character->race,
'class' => $character->class,
'gender' => $character->gender
]);
}
public function test_guest_can_not_update_characters()
{
$character = Character::factory()->create([
'race' => 'troll',
'class' => 'mage'
]);
\Livewire::test(CreateCharacterForm::class, ['character' => $character])
->set('character.name', 'Guestchar')
->set('character.level', '61')
->set('character.class', 'priest')
->set('character.race', 'dwarf')
->set('character.gender', 'M')
->call('save')
->assertForbidden();
// Check database that character has old data
$this->assertDatabaseHas('characters', [
'name' => $character->name,
'level' => $character->level,
'race' => $character->race,
'class' => $character->class,
'gender' => $character->gender
]);
}
}