Character: add ability to edit a character.
This commit is contained in:
parent
d8895901bf
commit
b6f1f8b887
8 changed files with 217 additions and 70 deletions
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
123
tests/Feature/CharacterUpdateTest.php
Normal file
123
tests/Feature/CharacterUpdateTest.php
Normal 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
|
||||
]);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue