测试
This commit is contained in:
parent
1a81f8baee
commit
9f23419049
115
tests/Feature/TopicApiTest.php
Normal file
115
tests/Feature/TopicApiTest.php
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Feature;
|
||||||
|
|
||||||
|
use App\Models\Topic;
|
||||||
|
use App\Models\User;
|
||||||
|
use Tests\TestCase;
|
||||||
|
use Tests\Traits\ActingJWTUser;
|
||||||
|
|
||||||
|
class TopicApiTest extends TestCase
|
||||||
|
{
|
||||||
|
use ActingJWTUser;
|
||||||
|
|
||||||
|
protected $user;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->user = factory(User::class)->create();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testStoreTopic()
|
||||||
|
{
|
||||||
|
$data = ['category_id' => 1, 'body' => 'test body', 'title' => 'test title'];
|
||||||
|
|
||||||
|
$token = \Auth::guard('api')->fromUser($this->user);
|
||||||
|
$request = $this->withHeaders(['Authorization' => 'Bearer ' . $token])
|
||||||
|
->json('POST', '/api/topics', $data);
|
||||||
|
|
||||||
|
$assertData = [
|
||||||
|
'category_id' => 1,
|
||||||
|
'user_id' => $this->user->id,
|
||||||
|
'title' => 'test title',
|
||||||
|
'body' => clean('test body', 'user_topic_body'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$request->assertStatus(201)
|
||||||
|
->assertJsonFragment($assertData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A basic test example.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testExample()
|
||||||
|
{
|
||||||
|
$this->assertTrue(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateTopic()
|
||||||
|
{
|
||||||
|
$topic = $this->makeTopic();
|
||||||
|
|
||||||
|
$editData = ['category_id' => 2, 'body' => 'edit body', 'title' => 'edit title'];
|
||||||
|
|
||||||
|
$response = $this->JWTActingAs($this->user)
|
||||||
|
->json('PATCH', '/api/topics/' . $topic->id, $editData);
|
||||||
|
|
||||||
|
$assertData = [
|
||||||
|
'category_id' => 2,
|
||||||
|
'user_id' => $this->user->id,
|
||||||
|
'title' => 'edit title',
|
||||||
|
'body' => clean('edit body', 'user_topic_body'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$response->assertStatus(200)
|
||||||
|
->assertJsonFragment($assertData);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function makeTopic()
|
||||||
|
{
|
||||||
|
return factory(Topic::class)->create([
|
||||||
|
'user_id' => $this->user->id,
|
||||||
|
'category_id' => 1,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testShowTopic()
|
||||||
|
{
|
||||||
|
$topic = $this->makeTopic();
|
||||||
|
$response = $this->json('GET', '/api/topics/' . $topic->id);
|
||||||
|
|
||||||
|
$assertData = [
|
||||||
|
'category_id' => $topic->category_id,
|
||||||
|
'user_id' => $topic->user_id,
|
||||||
|
'title' => $topic->title,
|
||||||
|
'body' => $topic->body,
|
||||||
|
];
|
||||||
|
|
||||||
|
$response->assertStatus(200)
|
||||||
|
->assertJsonFragment($assertData);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testIndexTopic()
|
||||||
|
{
|
||||||
|
$response = $this->json('GET', '/api/topics');
|
||||||
|
|
||||||
|
$response->assertStatus(200)
|
||||||
|
->assertJsonStructure(['data', 'meta']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDeleteTopic()
|
||||||
|
{
|
||||||
|
$topic = $this->makeTopic();
|
||||||
|
$response = $this->JWTActingAs($this->user)
|
||||||
|
->json('DELETE', '/api/topics/' . $topic->id);
|
||||||
|
$response->assertStatus(204);
|
||||||
|
|
||||||
|
$response = $this->json('GET', '/api/topics/' . $topic->id);
|
||||||
|
$response->assertStatus(404);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
16
tests/Traits/ActingJWTUser.php
Normal file
16
tests/Traits/ActingJWTUser.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Traits;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
|
||||||
|
trait ActingJWTUser
|
||||||
|
{
|
||||||
|
public function JWTActingAs(User $user)
|
||||||
|
{
|
||||||
|
$token = \Auth::guard('api')->fromUser($user);
|
||||||
|
$this->withHeaders(['Authorization' => 'Bearer ' . $token]);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user