Files
Nyan Lin Paing 8d74ac74cd
PHP Tests / php-tests (push) Failing after 9m1s
fix dashboard and apis
2026-08-16 23:50:39 +07:00

70 lines
2.5 KiB
PHP

<?php
use App\Models\User;
use Modules\Catalog\Models\Destination;
use Modules\Catalog\Models\EvCompany;
beforeEach(function () {
$this->token = User::factory()->create()->createToken('test-token')->plainTextToken;
});
test('lists active ev companies', function () {
$active = EvCompany::factory()->create(['is_active' => true]);
EvCompany::factory()->create(['is_active' => false]);
$this->withHeader('Authorization', "Bearer {$this->token}")
->getJson('/api/v1/companies')
->assertSuccessful()
->assertJsonCount(1, 'data')
->assertJsonFragment(['id' => $active->id]);
});
test('lists active destinations', function () {
$active = Destination::factory()->create(['is_active' => true]);
Destination::factory()->create(['is_active' => false]);
$this->withHeader('Authorization', "Bearer {$this->token}")
->getJson('/api/v1/destinations')
->assertSuccessful()
->assertJsonCount(1, 'data')
->assertJsonFragment(['id' => $active->id]);
});
test('paginates companies and destinations', function () {
EvCompany::factory()->count(20)->create(['is_active' => true]);
Destination::factory()->count(20)->create(['is_active' => true]);
$this->withHeader('Authorization', "Bearer {$this->token}")
->getJson('/api/v1/companies')
->assertSuccessful()
->assertJsonCount(15, 'data')
->assertJsonPath('meta.total', 20);
$this->withHeader('Authorization', "Bearer {$this->token}")
->getJson('/api/v1/destinations')
->assertSuccessful()
->assertJsonCount(15, 'data')
->assertJsonPath('meta.total', 20);
});
test('searches destinations by comma-separated terms', function () {
$yangon = Destination::factory()->create(['is_active' => true, 'name' => 'Yangon']);
$mandalay = Destination::factory()->create(['is_active' => true, 'name' => 'Mandalay']);
Destination::factory()->create(['is_active' => true, 'name' => 'Bagan']);
$this->withHeader('Authorization', "Bearer {$this->token}")
->getJson('/api/v1/destinations?search=yangon,mandalay')
->assertSuccessful()
->assertJsonCount(2, 'data')
->assertJsonFragment(['id' => $yangon->id])
->assertJsonFragment(['id' => $mandalay->id]);
});
test('companies endpoint rejects unauthenticated requests', function () {
$this->getJson('/api/v1/companies')->assertUnauthorized();
});
test('destinations endpoint rejects unauthenticated requests', function () {
$this->getJson('/api/v1/destinations')->assertUnauthorized();
});