Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/Model/Objects/NotificationBody/BasicPayment.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,4 +151,10 @@ public function getNotificationAssociative()

return $notification;
}

/** @return bool */
public function isTestNotification()
{
return 1 === preg_match('/^TR-[A-Z0-9]+-TST[0-9]+X$/', $this->tr_id->getValue());
}
}
61 changes: 61 additions & 0 deletions tests/Model/Objects/NotificationBody/BasicPaymentTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

namespace Tpay\Tests\OpenApi\Model\Objects\NotificationBody;

use PHPUnit\Framework\TestCase;
use Tpay\OpenApi\Model\Objects\NotificationBody\BasicPayment;

class BasicPaymentTest extends TestCase
{
/**
* @dataProvider validTestNotificationProvider
*
* @param mixed $transactionId
*/
public function testIsTestNotificationReturnsTrue($transactionId)
{
$payment = new BasicPayment();
$payment->setObjectValues($payment, [
'tr_id' => $transactionId,
]);

$this->assertTrue($payment->isTestNotification());
}

/**
* @dataProvider invalidTestNotificationProvider
*
* @param mixed $transactionId
*/
public function testIsTestNotificationReturnsFalse($transactionId)
{
$payment = new BasicPayment();
$payment->setObjectValues($payment, [
'tr_id' => $transactionId,
]);

$this->assertFalse($payment->isTestNotification());
}

public static function validTestNotificationProvider()
{
return [
['TR-123-TST456X'],
['TR-ABC-TST999X'],
['TR-123ABC-TST456X'],
];
}

public static function invalidTestNotificationProvider()
{
return [
'empty first part' => ['TR--TST456X'],
'empty second part' => ['TR-123-TSTX'],
'missing final X' => ['TR-123-TST456'],
'wrong prefix' => ['XX-123-TST456X'],
'missing TST' => ['TR-123-ABC456X'],
'extra chars after X' => ['TR-123-TST45X6'],
'first part contains dash' => ['TR-12-3-TST456X'],
];
}
}
Loading