PHP Classes

File: tests/Unit/Data/PayoutTransactionTest.php

Recommend this page to a friend!
  Packages of Daryl Legion   PayRex Laravel   tests/Unit/Data/PayoutTransactionTest.php   Download  
File: tests/Unit/Data/PayoutTransactionTest.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PayRex Laravel
Request payments using the PayRex service
Author: By
Last change:
Date: 13 days ago
Size: 1,994 bytes
 

Contents

Class file image Download
<?php

declare(strict_types=1);

use
LegionHQ\LaravelPayrex\Data\PayoutTransaction;
use
LegionHQ\LaravelPayrex\Enums\PayoutTransactionType;

it('hydrates all properties from fixture data', function () {
   
$data = loadFixture('payout_transaction/list.json')['data'][0];
   
$txn = PayoutTransaction::from($data);

   
expect($txn->id)->toBe('po_txn_xxxxx')
        ->
and($txn->resource)->toBe('payout_transaction')
        ->
and($txn->amount)->toBe(4569600)
        ->
and($txn->netAmount)->toBe(2664200)
        ->
and($txn->transactionId)->toBe('pay_xxxxx')
        ->
and($txn->transactionType)->toBe(PayoutTransactionType::Payment);
});

it('handles refund transactions with negative amounts', function () {
   
$data = loadFixture('payout_transaction/list.json')['data'][1];
   
$txn = PayoutTransaction::from($data);

   
expect($txn->amount)->toBe(-500000)
        ->
and($txn->netAmount)->toBe(-500000)
        ->
and($txn->transactionType)->toBe(PayoutTransactionType::Refund);
});

it('handles adjustment transactions', function () {
   
$data = loadFixture('payout_transaction/list.json')['data'][2];
   
$txn = PayoutTransaction::from($data);

   
expect($txn->amount)->toBe(-25000)
        ->
and($txn->netAmount)->toBe(-25000)
        ->
and($txn->transactionId)->toBeNull()
        ->
and($txn->transactionType)->toBe(PayoutTransactionType::Adjustment);
});

it('handles missing optional properties gracefully', function () {
   
$txn = PayoutTransaction::from(['id' => 'po_txn_1', 'resource' => 'payout_transaction']);

   
expect($txn->amount)->toBeNull()
        ->
and($txn->netAmount)->toBeNull()
        ->
and($txn->transactionId)->toBeNull()
        ->
and($txn->transactionType)->toBeNull();
});

it('returns null for unknown transaction type values', function () {
   
$txn = PayoutTransaction::from([
       
'id' => 'po_txn_1',
       
'resource' => 'payout_transaction',
       
'transaction_type' => 'nonexistent',
    ]);

   
expect($txn->transactionType)->toBeNull();
});