40 lines
1.3 KiB
PHP
40 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Api\V1\LiveTracking;
|
|
|
|
use App\Events\TruckLocationBroadcast;
|
|
use App\Models\CollectionTeam;
|
|
use App\Models\Truck;
|
|
use App\Models\User;
|
|
use Database\Seeders\RoleSeeder;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Event;
|
|
use Laravel\Sanctum\Sanctum;
|
|
use Tests\TestCase;
|
|
|
|
class BroadcastTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
public function test_truck_location_broadcasts_event(): void
|
|
{
|
|
$this->seed(RoleSeeder::class);
|
|
Event::fake([TruckLocationBroadcast::class]);
|
|
|
|
$driver = User::factory()->create(['role' => User::ROLE_DRIVER, 'status' => 'active']);
|
|
$truck = Truck::create(['plate_number' => 'NCR-BC', 'status' => 'active']);
|
|
$team = CollectionTeam::create([
|
|
'name' => 'TBC', 'driver_id' => $driver->id, 'truck_id' => $truck->id, 'status' => 'active',
|
|
]);
|
|
$truck->forceFill(['assigned_team_id' => $team->id])->save();
|
|
Sanctum::actingAs($driver);
|
|
|
|
$this->postJson("/api/v1/driver/trucks/{$truck->uuid}/location", [
|
|
'lat' => 14.65, 'lng' => 121.07,
|
|
])->assertOk();
|
|
|
|
Event::assertDispatched(TruckLocationBroadcast::class, fn ($e) => $e->truck->id === $truck->id && $e->lat === 14.65,
|
|
);
|
|
}
|
|
}
|