<?php
namespace Tests\Unit;
use App\Models\User;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Laravel\Sanctum\Sanctum;
use Tests\TestCase;
class ExampleTest extends TestCase {
use DatabaseTransactions;
//Pruebas unitarias
/*
* Las pruebas unitarias son pruebas que prueban una unidad de código, como un método o una clase.
* es decir una funcionalidad específica del sistema
* Por ejemplo:
* CRUD
* La prueba probaria las funciones de crear, leer, actualizar y eliminar
* */
public function testBasicTest() {
$array = [
'name' => 'Producto duro'
//...
];
$response = $this->post('url', $array, [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
]);
$this->assertTrue(true);
}
public function testListCategories() {
$url = config('app.url') . "/api/v2/workshop/categories";
// Si el usuario no es workshop, no puede ver las categorias
$seller = User::factory()->create(['name' => 'seller']);
$token = $seller->createToken('seller')->plainTextToken;
Sanctum::actingAs($seller,['*']);
$firstResponse = $this->get($url,[
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => "Bearer $token"
]);
// id3entificamos un error que al admin no lo deja pasar
//test para validar situacion
$firstResponse->assertStatus(403); // si recibe 500 dira que no paso
// Si el usuario es workshop puede ver las categorias
$workshop = User::factory()->create();
$token = $workshop->createToken('workshop')->plainTextToken;
Sanctum::actingAs($workshop,['*']);
$secondResponse = $this->get($url,[
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => "Bearer $token"
]);
$secondResponse->assertStatus(200);
}
}
|