diff --git a/src/Model/Objects/NotificationBody/BasicPayment.php b/src/Model/Objects/NotificationBody/BasicPayment.php index 2e2e022..e99ed40 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 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 new file mode 100644 index 0000000..aa3944c --- /dev/null +++ b/tests/Model/Objects/NotificationBody/BasicPaymentTest.php @@ -0,0 +1,61 @@ +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'], + ]; + } +}