Mercurial > packages > magicforger
diff src/Generator/Test/stubs/test.stub @ 37:116b36f5e73b ls_dev_2025_09
Adding support for tests. It's pretty basic but we can improve later.
| author | Luka Sitas <sitas.luka.97@gmail.com> |
|---|---|
| date | Thu, 25 Sep 2025 19:58:01 -0400 |
| parents | |
| children | b5c6ebd33547 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Generator/Test/stubs/test.stub Thu Sep 25 19:58:01 2025 -0400 @@ -0,0 +1,127 @@ +<?php + +namespace Tests\CRUD\{{ model }}; + +use {{ namespacedModel }}; +use App\Models\User; +use Wizard\Framework\Tests\TestCase; + +class {{ class }} extends TestCase +{ + /* use RefreshDatabase; */ + + public function test_{{ modelVariable }}_crud_index_access(): void + { + $response = $this + ->get(route('{{ tableName }}.index')); + + $response->assertStatus(200); + } + + public function test_{{ modelVariable }}_crud_get_data_access(): void + { + $response = $this + ->post(route('{{ tableName }}.get_data')); + + $response->assertStatus(200); + } + + public function test_{{ modelVariable }}_crud_create_access(): void + { + $response = $this + ->get(route('{{ tableName }}.create')); + + $response->assertStatus(200); + } + + public function test_{{ modelVariable }}_crud_edit_access(): void + { + $item = {{ model }}::factory()->create(); + + $response = $this + ->get(route('{{ tableName }}.edit', $item)); + + $response->assertStatus(200); + } + + public function test_{{ modelVariable }}_crud_create_usage(): void + { + $item = {{ model }}::factory()->make(); + + $response = $this + ->from(route('{{ tableName }}.create')) + ->post(route('{{ tableName }}.store'), + $item->toArray() + ); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect(route('{{ tableName }}.index')); + + $this->assertDatabaseHas('{{ tableName }}', $item->toArray()); + } + + public function test_{{ modelVariable }}_crud_create_invalid_data(): void + { + $response = $this + ->from(route('{{ tableName }}.create')) + ->post(route('{{ tableName }}.store'), []); + + $response + ->assertSessionHasErrors() + ->assertRedirect(route('{{ tableName }}.create')); + + // Make sure no entry was added + $this->assertDatabaseCount('{{ tableName }}', 0); + } + + public function test_{{ modelVariable }}_crud_update_usage(): void + { + $item = {{ model }}::factory()->create(); + + $updateData = {{ model }}::factory()->make()->toArray(); + + $response = $this + ->from(route('{{ tableName }}.edit', $item)) + ->put(route('{{ tableName }}.update', $item), $updateData); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect(route('{{ tableName }}.index')); + + $this->assertDatabaseHas('{{ tableName }}', $updateData); + } + + public function test_{{ modelVariable }}_crud_edit_invalid_data(): void + { + $item = {{ model }}::factory()->create(); + + $response = $this + ->from(route('{{ tableName }}.edit', $item)) + ->put(route('{{ tableName }}.update', $item), []); + + $response + ->assertSessionHasErrors() + ->assertRedirect(route('{{ tableName }}.edit', $item)); + + // Make sure no entry was added + $this->assertDatabaseHas('games', array_intersect(array_flip($item->getFillable()), $item->toArray())); + } + + public function test_{{ modelVariable }}_crud_delete_usage(): void + { + $item = {{ model }}::factory()->create(); + + $response = $this + ->delete(route('{{ tableName }}.destroy', $item)); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect(route('{{ tableName }}.index')); + + $this->assertSoftDeleted('{{ tableName }}', [ + 'id' => $item->id, + ]); + } + +}
