Files

71 lines
2.5 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\Client;
use App\Models\Product;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class CrudTest extends TestCase
{
use RefreshDatabase;
public function test_client_crud_is_available(): void
{
$this->actingAs(User::factory()->admin()->create());
$this->get(route('clients.index'))->assertOk();
$this->get(route('clients.create'))->assertOk();
$this->post(route('clients.store'), [
'name' => 'Alice Martin',
'email' => 'alice@example.com',
'city' => 'Paris',
])->assertRedirect(route('clients.index'));
$client = Client::where('email', 'alice@example.com')->firstOrFail();
$this->get(route('clients.show', $client))->assertOk()->assertSee('Alice Martin');
$this->get(route('clients.edit', $client))->assertOk();
$this->put(route('clients.update', $client), [
'name' => 'Alice Martin',
'email' => 'alice@example.com',
'city' => 'Lyon',
])->assertRedirect(route('clients.index'));
$this->assertDatabaseHas('clients', ['id' => $client->id, 'city' => 'Lyon']);
$this->delete(route('clients.destroy', $client))->assertRedirect(route('clients.index'));
$this->assertDatabaseMissing('clients', ['id' => $client->id]);
}
public function test_product_crud_is_available(): void
{
$this->actingAs(User::factory()->admin()->create());
$this->get(route('products.index'))->assertOk();
$this->get(route('products.create'))->assertOk();
$this->post(route('products.store'), [
'name' => 'Casque',
'price' => 120,
'stock' => 3,
])->assertRedirect(route('products.index'));
$product = Product::where('name', 'Casque')->firstOrFail();
$this->get(route('products.show', $product))->assertOk()->assertSee('Casque');
$this->get(route('products.edit', $product))->assertOk();
$this->put(route('products.update', $product), [
'name' => 'Casque Bluetooth',
'price' => 150,
'stock' => 8,
])->assertRedirect(route('products.index'));
$this->assertDatabaseHas('products', ['id' => $product->id, 'stock' => 8]);
$this->delete(route('products.destroy', $product))->assertRedirect(route('products.index'));
$this->assertDatabaseMissing('products', ['id' => $product->id]);
}
}