HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/tests/Unit/Cashier/DTO/PaymentResultTest.php
<?php

namespace Tests\Unit\Cashier\DTO;

use Tests\TestCase;
use App\Cashier\DTO\PaymentResult;

class PaymentResultTest extends TestCase
{
    public function test_success_factory_sets_status_and_remote_ref()
    {
        $result = PaymentResult::success('pi_3Oxabc');

        $this->assertSame(PaymentResult::STATUS_SUCCESS, $result->status);
        $this->assertSame('pi_3Oxabc', $result->remoteReferenceId);
        $this->assertNull($result->clientSecret);
        $this->assertNull($result->error);
        $this->assertSame([], $result->metadata);
    }

    public function test_success_factory_carries_metadata()
    {
        $result = PaymentResult::success('pi_xxx', ['receipt_url' => 'https://stripe.com/r/xxx']);

        $this->assertSame(['receipt_url' => 'https://stripe.com/r/xxx'], $result->metadata);
    }

    public function test_failed_factory_sets_status_and_error()
    {
        $result = PaymentResult::failed('Your card was declined.');

        $this->assertSame(PaymentResult::STATUS_FAILED, $result->status);
        $this->assertSame('Your card was declined.', $result->error);
        $this->assertNull($result->remoteReferenceId);
        $this->assertNull($result->clientSecret);
    }

    public function test_failed_factory_can_carry_remote_ref()
    {
        $result = PaymentResult::failed('Insufficient funds', 'pi_failed123');

        $this->assertSame('pi_failed123', $result->remoteReferenceId);
        $this->assertSame('Insufficient funds', $result->error);
    }

    public function test_requires_auth_factory_carries_client_secret_and_remote_ref()
    {
        $result = PaymentResult::requiresAuth('pi_xxx_secret_yyy', 'pi_xxx');

        $this->assertSame(PaymentResult::STATUS_REQUIRES_ACTION, $result->status);
        $this->assertSame('pi_xxx_secret_yyy', $result->clientSecret);
        $this->assertSame('pi_xxx', $result->remoteReferenceId);
        $this->assertNull($result->error);
    }
}