initial commit
This commit is contained in:
commit
1e1aa7d461
215 changed files with 35140 additions and 0 deletions
92
tests/Feature/CharacterCreateTest.php
Normal file
92
tests/Feature/CharacterCreateTest.php
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
<?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 CharacterCreateTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
public function test_user_can_render_character_creation_page()
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
|
||||
$response = $this->actingAs($user)
|
||||
->get(route('character.create'));
|
||||
|
||||
$response->assertStatus(200); // OK
|
||||
}
|
||||
|
||||
public function test_guest_can_not_render_character_creation_page()
|
||||
{
|
||||
$response = $this->get(route('character.create'));
|
||||
|
||||
$response->assertStatus(403); // Forbidden
|
||||
}
|
||||
|
||||
public function test_user_can_create_characters()
|
||||
{
|
||||
$this->actingAs(User::factory()->create());
|
||||
|
||||
\Livewire::test(CreateCharacterForm::class)
|
||||
->set('name', 'Elise')
|
||||
->set('level', '70')
|
||||
->set('class', 'warrior')
|
||||
->set('race', 'human')
|
||||
->set('gender', 'F')
|
||||
->call('save')
|
||||
->assertRedirect(route('user.index'));
|
||||
|
||||
// Find character and check the data.
|
||||
$character = Character::where('name', 'Elise')->first();
|
||||
|
||||
$this->assertEquals(70, $character->level);
|
||||
$this->assertEquals('warrior', $character->class);
|
||||
$this->assertEquals('human', $character->race);
|
||||
$this->assertEquals('F', $character->gender);
|
||||
}
|
||||
|
||||
public function test_user_can_not_create_alot_of_characters()
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
|
||||
// Create "alot" of characters (8 or so is the limit in the front-end).
|
||||
Character::factory()
|
||||
->for($user)
|
||||
->count(20)->create();
|
||||
|
||||
$this->actingAs($user);
|
||||
|
||||
// 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')
|
||||
->call('save')
|
||||
->assertForbidden();
|
||||
}
|
||||
|
||||
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')
|
||||
->call('save')
|
||||
->assertForbidden();
|
||||
|
||||
$this->assertDatabaseMissing('characters', [ 'name' => 'Guestchar' ]);
|
||||
}
|
||||
}
|
||||
Reference in a new issue