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);
}
}