Files
famous-ly4-ev/app-modules/payment/tests/Feature/PaymentResourceTest.php
T
Nyan Lin Paing 95b369174d Redesign the Payment view page infolist
Groups fields into Payment/Timeline sections with icons, copyable IDs, and
a money-formatted amount. Drops the permission-gated Gateway Response
section (raw gateway_payload) and its two visibility tests along with it.
2026-08-30 15:46:19 +07:00

59 lines
1.9 KiB
PHP

<?php
use App\Models\User;
use Livewire\Livewire;
use Modules\Booking\Models\Booking;
use Modules\Payment\Enums\PaymentMethod;
use Modules\Payment\Enums\PaymentStatus;
use Modules\Payment\Filament\Resources\Payments\Pages\ListPayments;
use Modules\Payment\Filament\Resources\Payments\Pages\ViewPayment;
use Modules\Payment\Models\Payment;
use Spatie\Permission\Models\Permission;
beforeEach(function () {
foreach (['view_payments', 'process_refunds'] as $permission) {
Permission::findOrCreate($permission, 'web');
}
});
test('a user with view_payments can list payments', function () {
$viewer = User::factory()->create()->givePermissionTo('view_payments');
$this->actingAs($viewer);
$payments = Payment::factory()->count(3)->create();
Livewire::test(ListPayments::class)
->assertOk()
->assertCanSeeTableRecords($payments);
});
test('can filter payments by status', function () {
$viewer = User::factory()->create()->givePermissionTo('view_payments');
$this->actingAs($viewer);
$pending = Payment::factory()->create(['status' => PaymentStatus::Pending]);
$completed = Payment::factory()->completed()->create();
Livewire::test(ListPayments::class)
->filterTable('status', PaymentStatus::Completed->value)
->assertCanSeeTableRecords([$completed])
->assertCanNotSeeTableRecords([$pending]);
});
test('can view a payment\'s detail page', function () {
$viewer = User::factory()->create()->givePermissionTo('view_payments');
$this->actingAs($viewer);
$booking = Booking::factory()->create();
$payment = Payment::factory()->create([
'booking_id' => $booking->id,
'gateway' => PaymentMethod::KbzMiniApp,
'gateway_transaction_id' => 'EVB-VIEWTEST-1',
]);
Livewire::test(ViewPayment::class, ['record' => $payment->getRouteKey()])
->assertOk()
->assertSee($booking->booking_ref)
->assertSee('EVB-VIEWTEST-1');
});