From d03192a8fbd0b650921fe75b23e5d9fcd64f3b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20K=C4=85kol?= Date: Thu, 19 Mar 2026 09:19:51 +0100 Subject: [PATCH 1/5] Check is test notification --- .../Objects/NotificationBody/BasicPayment.php | 6 +++ .../NotificationBody/BasicPaymentTest.php | 52 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 tests/Model/Objects/NotificationBody/BasicPaymentTest.php diff --git a/src/Model/Objects/NotificationBody/BasicPayment.php b/src/Model/Objects/NotificationBody/BasicPayment.php index 2e2e022..7582a48 100644 --- a/src/Model/Objects/NotificationBody/BasicPayment.php +++ b/src/Model/Objects/NotificationBody/BasicPayment.php @@ -151,4 +151,10 @@ public function getNotificationAssociative() return $notification; } + + /** @return bool */ + public function isTestNotification() + { + return preg_match('/^TR-[^-]+-TST[^X]+X$/', $this->tr_id->getValue()) === 1; + } } diff --git a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php new file mode 100644 index 0000000..ab9d4f5 --- /dev/null +++ b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php @@ -0,0 +1,52 @@ +tr_id = new TransactionId($transactionId); + + $this->assertTrue($payment->isTestNotification()); + } + + /** + * @dataProvider invalidTestNotificationProvider + */ + public function testIsTestNotificationReturnsFalse($transactionId) + { + $payment = new BasicPayment(); + $payment->tr_id = new TransactionId($transactionId); + + $this->assertFalse($payment->isTestNotification()); + } + + public static function validTestNotificationProvider() + { + return [ + ['TR-123-TST456X'], + ['TR-ABC-TST999X'], + ['TR-test-TSTvalueX'], + ['TR-!@#-TST***X'], + ]; + } + + 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'], + ]; + } +} From ad32384cd4b0304e0db4ca96b6e58befd9e1caec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20K=C4=85kol?= Date: Thu, 19 Mar 2026 09:25:40 +0100 Subject: [PATCH 2/5] Check is test notification --- .../Objects/NotificationBody/BasicPaymentTest.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php index ab9d4f5..550b749 100644 --- a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php +++ b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php @@ -8,10 +8,15 @@ class BasicPaymentTest extends TestCase { + /** + * @dataProvider validTestNotificationProvider + */ public function testIsTestNotificationReturnsTrue($transactionId) { $payment = new BasicPayment(); - $payment->tr_id = new TransactionId($transactionId); + $payment->setObjectValues($payment, [ + 'tr_id' => $transactionId, + ]); $this->assertTrue($payment->isTestNotification()); } @@ -22,7 +27,9 @@ public function testIsTestNotificationReturnsTrue($transactionId) public function testIsTestNotificationReturnsFalse($transactionId) { $payment = new BasicPayment(); - $payment->tr_id = new TransactionId($transactionId); + $payment->setObjectValues($payment, [ + 'tr_id' => $transactionId, + ]); $this->assertFalse($payment->isTestNotification()); } From 91574945eb196ce94110070ddcb6f3d25840aa89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20K=C4=85kol?= Date: Thu, 19 Mar 2026 09:28:40 +0100 Subject: [PATCH 3/5] fixer --- .../Objects/NotificationBody/BasicPayment.php | 2 +- .../NotificationBody/BasicPaymentTest.php | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Model/Objects/NotificationBody/BasicPayment.php b/src/Model/Objects/NotificationBody/BasicPayment.php index 7582a48..91c24f5 100644 --- a/src/Model/Objects/NotificationBody/BasicPayment.php +++ b/src/Model/Objects/NotificationBody/BasicPayment.php @@ -155,6 +155,6 @@ public function getNotificationAssociative() /** @return bool */ public function isTestNotification() { - return preg_match('/^TR-[^-]+-TST[^X]+X$/', $this->tr_id->getValue()) === 1; + return 1 === preg_match('/^TR-[^-]+-TST[^X]+X$/', $this->tr_id->getValue()); } } diff --git a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php index 550b749..b256374 100644 --- a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php +++ b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php @@ -10,6 +10,8 @@ class BasicPaymentTest extends TestCase { /** * @dataProvider validTestNotificationProvider + * + * @param mixed $transactionId */ public function testIsTestNotificationReturnsTrue($transactionId) { @@ -23,6 +25,8 @@ public function testIsTestNotificationReturnsTrue($transactionId) /** * @dataProvider invalidTestNotificationProvider + * + * @param mixed $transactionId */ public function testIsTestNotificationReturnsFalse($transactionId) { @@ -47,13 +51,13 @@ public static function validTestNotificationProvider() 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'], + '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'], ]; } } From df39da4d542d02461c1d0a469e5d91b39139cbbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20K=C4=85kol?= Date: Thu, 19 Mar 2026 09:29:30 +0100 Subject: [PATCH 4/5] fixer --- tests/Model/Objects/NotificationBody/BasicPaymentTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php index b256374..5b28396 100644 --- a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php +++ b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php @@ -3,7 +3,6 @@ namespace Tpay\Tests\OpenApi\Model\Objects\NotificationBody; use PHPUnit\Framework\TestCase; -use Tpay\OpenApi\Model\Fields\Notification\TransactionId; use Tpay\OpenApi\Model\Objects\NotificationBody\BasicPayment; class BasicPaymentTest extends TestCase From a11e8b22a36b5d3579947cd67f027f016416947f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20K=C4=85kol?= Date: Thu, 19 Mar 2026 12:22:52 +0100 Subject: [PATCH 5/5] pattern change --- src/Model/Objects/NotificationBody/BasicPayment.php | 2 +- tests/Model/Objects/NotificationBody/BasicPaymentTest.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Model/Objects/NotificationBody/BasicPayment.php b/src/Model/Objects/NotificationBody/BasicPayment.php index 91c24f5..e99ed40 100644 --- a/src/Model/Objects/NotificationBody/BasicPayment.php +++ b/src/Model/Objects/NotificationBody/BasicPayment.php @@ -155,6 +155,6 @@ public function getNotificationAssociative() /** @return bool */ public function isTestNotification() { - return 1 === preg_match('/^TR-[^-]+-TST[^X]+X$/', $this->tr_id->getValue()); + return 1 === preg_match('/^TR-[A-Z0-9]+-TST[0-9]+X$/', $this->tr_id->getValue()); } } diff --git a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php index 5b28396..aa3944c 100644 --- a/tests/Model/Objects/NotificationBody/BasicPaymentTest.php +++ b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php @@ -42,8 +42,7 @@ public static function validTestNotificationProvider() return [ ['TR-123-TST456X'], ['TR-ABC-TST999X'], - ['TR-test-TSTvalueX'], - ['TR-!@#-TST***X'], + ['TR-123ABC-TST456X'], ]; }