File: /home/xedaptot/be.naniguide.com/tests/Unit/Cashier/DTO/SubscriptionResultTest.php
<?php
namespace Tests\Unit\Cashier\DTO;
use Tests\TestCase;
use App\Cashier\DTO\SubscriptionResult;
class SubscriptionResultTest extends TestCase
{
public function test_active_factory_sets_all_required_fields()
{
$pmData = ['card_type' => 'Visa', 'last_4' => '4242'];
$result = SubscriptionResult::active('sub_1Oxabc', 'cus_xyz', 1735689600, $pmData);
$this->assertSame(SubscriptionResult::STATUS_ACTIVE, $result->status);
$this->assertSame('sub_1Oxabc', $result->remoteSubscriptionId);
$this->assertSame('cus_xyz', $result->remoteCustomerId);
$this->assertSame(1735689600, $result->currentPeriodEnd);
$this->assertSame($pmData, $result->paymentMethodData);
$this->assertNull($result->clientSecret);
$this->assertNull($result->error);
}
public function test_requires_auth_factory_carries_client_secret_and_sub_id()
{
$result = SubscriptionResult::requiresAuth('sub_pending', 'pi_xxx_secret_yyy', ['card_type' => 'Visa']);
$this->assertSame(SubscriptionResult::STATUS_REQUIRES_ACTION, $result->status);
$this->assertSame('sub_pending', $result->remoteSubscriptionId);
$this->assertSame('pi_xxx_secret_yyy', $result->clientSecret);
$this->assertSame(['card_type' => 'Visa'], $result->paymentMethodData);
$this->assertNull($result->currentPeriodEnd);
}
public function test_failed_factory_sets_error_and_nulls()
{
$result = SubscriptionResult::failed('Card declined');
$this->assertSame(SubscriptionResult::STATUS_FAILED, $result->status);
$this->assertSame('Card declined', $result->error);
$this->assertNull($result->remoteSubscriptionId);
$this->assertNull($result->remoteCustomerId);
$this->assertNull($result->currentPeriodEnd);
$this->assertNull($result->clientSecret);
$this->assertSame([], $result->paymentMethodData);
}
}