60 lines
1.8 KiB
PHP
60 lines
1.8 KiB
PHP
|
|
<?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']);
|
||
|
|
}
|
||
|
|
}
|