first work on To Do Lists
This commit is contained in:
@@ -122,7 +122,7 @@ class MemosTest extends TestCase
|
||||
|
||||
$response = $this->patch('/api/memos/' . $memo->id, array_merge($this->data(), ['api_token' => $anotherUser->api_token]));
|
||||
|
||||
$response->assertStatus(Response::HTTP_FORBIDDEN);
|
||||
$response->assertStatus(403);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
@@ -138,7 +138,7 @@ class MemosTest extends TestCase
|
||||
|
||||
$this->assertCount(0, Memo::all());
|
||||
|
||||
$response->assertStatus(Response::HTTP_NO_CONTENT);
|
||||
$response->assertStatus(204);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
||||
124
tests/Feature/ToDoItemsTest.php
Normal file
124
tests/Feature/ToDoItemsTest.php
Normal file
@@ -0,0 +1,124 @@
|
||||
<?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),
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
163
tests/Feature/ToDoListsTest.php
Normal file
163
tests/Feature/ToDoListsTest.php
Normal file
@@ -0,0 +1,163 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\ToDoList;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Tests\TestCase;
|
||||
|
||||
class ToDoListsTest 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');
|
||||
|
||||
$response = $this->post('/api/to-do-lists/', [
|
||||
'name' => 'Test name to do list'
|
||||
])->assertStatus(201);
|
||||
|
||||
$toDoList = ToDoList::first();
|
||||
|
||||
$this->assertEquals('Test name to do list', $toDoList->name);
|
||||
$response->assertJson([
|
||||
'data' => [
|
||||
'type' => 'to-do-lists',
|
||||
'to_do_list_id' => $toDoList->id,
|
||||
'attributes' => [
|
||||
'data' => [
|
||||
'name' => $toDoList->name,
|
||||
]
|
||||
],
|
||||
],
|
||||
'links' => [
|
||||
'self' => $toDoList->path(),
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function to_do_list_name_are_required()
|
||||
{
|
||||
$this->actingAs($user = factory(\App\User::class)->create(), 'api');
|
||||
$response = $this->post('/api/to-do-lists/', ['name' => '']);
|
||||
|
||||
$response->assertSessionHasErrors('name');
|
||||
$this->assertCount(0, ToDoList::all());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_to_do_list_can_be_retrieved()
|
||||
{
|
||||
$this->actingAs($user = factory(User::class)->create(), 'api');
|
||||
$toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]);
|
||||
|
||||
$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(),
|
||||
]
|
||||
],
|
||||
],
|
||||
'links' => [
|
||||
'self' => $toDoList->path(),
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function only_owner_to_do_list_can_retrieved_it()
|
||||
{
|
||||
$user = factory(User::class)->create();
|
||||
$toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]);
|
||||
|
||||
$this->actingAs($userAnother = factory(User::class)->create(), 'api');
|
||||
|
||||
$response = $this->get('/api/to-do-lists/' . $toDoList->id );
|
||||
|
||||
$response->assertStatus(403);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_to_do_list_can_be_patch()
|
||||
{
|
||||
$this->actingAs($user = factory(User::class)->create(), 'api');
|
||||
|
||||
$toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]);
|
||||
|
||||
$response = $this->patch('/api/to-do-lists/' . $toDoList->id, [
|
||||
'name' => 'To Do List Update'
|
||||
]);
|
||||
|
||||
$toDoList = $toDoList->fresh();
|
||||
|
||||
$this->assertEquals('To Do List Update', $toDoList->name);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$response->assertJson([
|
||||
'data' => [
|
||||
'to_do_list_id' => $toDoList->id,
|
||||
'attributes' => [
|
||||
'data' => [
|
||||
'name' => 'To Do List Update'
|
||||
]
|
||||
]
|
||||
],
|
||||
'links' => [
|
||||
'self' => $toDoList->path(),
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function only_the_owner_can_patch_the_to_do_list()
|
||||
{
|
||||
$this->actingAs($user = factory(User::class)->create(), 'api');
|
||||
$toDoList = factory(ToDoList::class)->create();
|
||||
|
||||
$anotherUser = factory(User::class)->create();
|
||||
|
||||
$response = $this->patch('/api/to-do-lists/' . $toDoList->id, ['name' => 'Name changed'], ['api_token' => $anotherUser->api_token]);
|
||||
|
||||
$response->assertStatus(403);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_to_do_list_can_be_delete()
|
||||
{
|
||||
$this->actingAs($user = factory(User::class)->create(), 'api');
|
||||
|
||||
$toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]);
|
||||
|
||||
$response = $this->delete('/api/to-do-lists/' . $toDoList->id);
|
||||
|
||||
$toDoList = $toDoList->fresh();
|
||||
|
||||
$this->assertCount(0, ToDoList::all());
|
||||
|
||||
$response->assertStatus(204);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function only_the_owner_can_delete_the_to_do_list()
|
||||
{
|
||||
$user = factory(User::class)->create();
|
||||
$toDoList = factory(ToDoList::class)->create();
|
||||
|
||||
$this->actingAs($anotherUser = factory(User::class)->create(), 'api');
|
||||
|
||||
$response = $this->delete('/api/to-do-lists/' . $toDoList->id);
|
||||
|
||||
$response->assertStatus(403);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user