User::default()->id, 'label' => 'Test', 'unit' => 'units', ]); } public function test_can_create_milestone(): void { $tracker = $this->tracker(); $milestone = Milestone::create([ 'tracker_id' => $tracker->id, 'target' => 1500, 'description' => 'First milestone', ]); $this->assertDatabaseHas('milestones', [ 'target' => 1500, 'description' => 'First milestone', ]); $this->assertEquals(1500, $milestone->target); $this->assertEquals('First milestone', $milestone->description); } public function test_can_fetch_milestones_via_api(): void { $tracker = $this->tracker(); Milestone::create(['tracker_id' => $tracker->id, 'target' => 1500, 'description' => 'First milestone']); Milestone::create(['tracker_id' => $tracker->id, 'target' => 3000, 'description' => 'Second milestone']); $response = $this->get('/milestones'); $response->assertStatus(200); $response->assertJsonCount(2); $response->assertJson([ ['target' => 1500, 'description' => 'First milestone'], ['target' => 3000, 'description' => 'Second milestone'], ]); } public function test_milestones_ordered_by_target(): void { $tracker = $this->tracker(); Milestone::create(['tracker_id' => $tracker->id, 'target' => 3000, 'description' => 'Third']); Milestone::create(['tracker_id' => $tracker->id, 'target' => 1000, 'description' => 'First']); Milestone::create(['tracker_id' => $tracker->id, 'target' => 2000, 'description' => 'Second']); $response = $this->get('/milestones'); $milestones = $response->json(); $this->assertEquals(1000, $milestones[0]['target']); $this->assertEquals(2000, $milestones[1]['target']); $this->assertEquals(3000, $milestones[2]['target']); } }