incr/tests/Feature/MilestoneTest.php

60 lines
1.8 KiB
PHP
Raw Permalink Normal View History

2025-07-13 00:18:45 +02:00
<?php
namespace Tests\Feature;
use App\Models\Milestone;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class MilestoneTest extends TestCase
{
use RefreshDatabase;
public function test_can_create_milestone(): void
{
$milestone = Milestone::create([
'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
{
// Create test milestones
Milestone::create(['target' => 1500, 'description' => 'First milestone']);
Milestone::create(['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
{
// Create milestones in reverse order
Milestone::create(['target' => 3000, 'description' => 'Third']);
Milestone::create(['target' => 1000, 'description' => 'First']);
Milestone::create(['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']);
}
}