create()); $toDo = ToDo::factory()->create(['user_id' => $user->id, 'checked' => false]); $this->postJson('/api/time-trackers', ['todo_id' => $toDo->id]) ->assertCreated() ->assertJson([ 'id' => $toDo->timeTrackers()->value('id'), 'start_at' => now()->format('Y-m-d H:i:s'), 'end_at' => null, 'to_do' => [ 'id' => $toDo->id, 'user_id' => $user->id, 'name' => $toDo->name, 'checked' => false, ], ]); }); test('user can retrieve his current timer', function () { Sanctum::actingAs($user = User::factory()->create()); $toDo = ToDo::factory()->create(['user_id' => $user->id, 'checked' => false]); $this->postJson('/api/time-trackers', ['todo_id' => $toDo->id]) ->assertCreated(); $this->get('/api/time-trackers/user') ->assertOk() ->assertJson([ 'id' => $toDo->timeTrackers()->value('id'), 'start_at' => now()->format('Y-m-d H:i:s'), 'end_at' => null, 'to_do' => [ 'id' => $toDo->id, 'user_id' => $user->id, 'name' => $toDo->name, 'checked' => false, ], ]); }); test('user has no content response if not current time tracker', function () { Sanctum::actingAs($user = User::factory()->create()); $this->get('/api/time-trackers/user') ->assertNoContent(); }); test('user can stop current time tracker', function () { Sanctum::actingAs($user = User::factory()->create()); $toDo = ToDo::factory()->create(['user_id' => $user->id, 'checked' => false]); $this->postJson('/api/time-trackers', ['todo_id' => $toDo->id]) ->assertCreated(); $this->delete('/api/time-trackers/user') ->assertNoContent(); expect($toDo->timeTrackers->first()) ->end_at->format('Y-m-d H:i:s')->toBe(now()->format('Y-m-d H:i:s')); });