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), ] ]); } }