Files
portal/tests/Feature/ToDoItemsTest.php
2020-04-19 22:46:28 +02:00

125 lines
3.9 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\ToDo;
use App\Models\ToDoList;
use App\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class ToDoItemsTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function a_user_can_create_a_to_do_list()
{
$this->withoutExceptionHandling();
$this->actingAs($user = factory(User::class)->create(), 'api');
$toDoList = factory(ToDoList::class)->create(['id' => 123, 'user_id' => $user->id]);
$response = $this->post('/api/to-do-lists/'. $toDoList->id .'/to-do', [
'name' => 'Test name to do',
])->assertStatus(201);
$toDo = ToDo::first();
$this->assertEquals('Test name to do', $toDo->name);
$this->assertEquals($toDoList->todos[0], $toDo);
$response->assertJson([
'data' => [
'to_do_id' => $toDo->id,
'attributes' => [
'data' => [
'name' => $toDo->name,
'order' => 0,
]
],
],
'links' => [
'self' => url('/to-do-lists/'.$toDo->toDoList->id),
]
]);
}
/** @test */
public function to_do_name_are_required()
{
$this->actingAs($user = factory(User::class)->create(), 'api');
$toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]);
$response = $this->post('/api/to-do-lists/'. $toDoList->id .'/to-do', ['name' => '']);
$response->assertSessionHasErrors('name');
$this->assertCount(0, ToDo::all());
}
/** @test */
public function a_to_do_by_to_do_list_can_be_retrieved()
{
$this->actingAs($user = factory(User::class)->create(), 'api');
$toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]);
$toDoList->toDos()->create([
'name' => 'Test name to do',
]);
$response = $this->get('/api/to-do-lists/' . $toDoList->id );
$response->assertJson([
'data' => [
'to_do_list_id' => $toDoList->id,
'attributes' => [
'data' => [
'name' => $toDoList->name,
'last_updated' => $toDoList->updated_at->diffForHumans(),
'to_dos' => [
'data' => [
[
'data' => [
'to_do_id' => $toDoList->toDos[0]->id,
]
]
],
'to_dos_count' => 1,
]
]
],
]
]);
}
/** @test */
public function a_to_do_can_be_patch()
{
$this->withoutExceptionHandling();
$this->actingAs($user = factory(User::class)->create(), 'api');
$toDoList = factory(ToDoList::class)->create(['id' => 123, 'user_id' => $user->id]);
$toDoList->toDos()->create([
'name' => 'Test name to do',
'order' => 10,
]);
$toDoList = $toDoList->fresh();
// $toDoList = ToDoList::first();
$response = $this->patch('/api/to-do-lists/123/to-do/'. $toDoList->toDos[0]->id, [
'name' => 'To Do update'
])->assertStatus(200)
->assertJson([
'data' => [
'to_do_id' => $toDoList->toDos[0]->id,
'attributes' => [
'data' => [
'name' => 'To Do update',
'order' => 10,
]
]
],
'links' => [
'self' => url('/to-do-lists/'. $toDoList->id),
]
]);
}
}