diff src/Generator/Test/stubs/test.stub @ 45:c7fd31303024 default tip

merging down to default
author Luka Sitas <sitas.luka.97@gmail.com>
date Thu, 12 Nov 2026 21:19:53 -0500
parents 2cf26b593f4a
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Generator/Test/stubs/test.stub	Thu Nov 12 21:19:53 2026 -0500
@@ -0,0 +1,128 @@
+<?php
+
+namespace Tests\CRUD;
+
+use {{ namespacedModel }};
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+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('{{ tableName }}', array_intersect_key($item->toArray(), array_flip($item->getFillable())));
+   }
+
+   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,
+       ]);
+   }
+
+}