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'); }); test('the gateway response is visible to a user with process_refunds', function () { $admin = User::factory()->create()->givePermissionTo(['view_payments', 'process_refunds']); $this->actingAs($admin); $payment = Payment::factory()->create(['gateway_payload' => ['prepay_id' => 'PREPAY-SECRET-123']]); Livewire::test(ViewPayment::class, ['record' => $payment->getRouteKey()]) ->assertOk() ->assertSee('PREPAY-SECRET-123'); }); test('the gateway response is hidden from a user without process_refunds', function () { $support = User::factory()->create()->givePermissionTo('view_payments'); $this->actingAs($support); $payment = Payment::factory()->create(['gateway_payload' => ['prepay_id' => 'PREPAY-SECRET-123']]); Livewire::test(ViewPayment::class, ['record' => $payment->getRouteKey()]) ->assertOk() ->assertDontSee('PREPAY-SECRET-123'); });