/**
  * Test that fetchMessageByGatewayOrderId returns null when the message
  * isn't found.
  */
 public function testFetchMessageByGatewayOrderIdNone()
 {
     $message = $this->generateTestMessage();
     $this->db->storeMessage($message);
     $fetched = $this->db->fetchMessageByGatewayOrderId('test_gateway', $message['order_id'] + 1);
     $this->assertNull($fetched, 'Record correctly not found fetchMessageByGatewayOrderId.');
 }
 public function processMessage($message)
 {
     $logIdentifier = "message with gateway {$message['gateway']}" . " and order ID {$message['order_id']}";
     if ($this->paymentsInitialDatabase->isTransactionFailed($message)) {
         // Throw the message out if it's already failed
         Logger::info("Skipping failed {$logIdentifier}");
     } else {
         Logger::info("Storing {$logIdentifier} in database");
         $this->pendingDatabase->storeMessage($message);
     }
 }
 /**
  * We refuse to consume a message and drop it if the corresponding
  * payments_initial row is failed.
  */
 public function testPendingMessageInitialFailed()
 {
     $initRow = PaymentsInitialDatabaseTest::generateTestMessage();
     $initRow['payments_final_status'] = 'failed';
     $initRow['validation_action'] = 'reject';
     $this->paymentsInitialDb->storeMessage($initRow);
     $message = self::generatePendingMessageFromInitial($initRow);
     $consumer = new PendingQueueConsumer('pending', 1000, 1000);
     $consumer->processMessage($message);
     $fetched = $this->pendingDb->fetchMessageByGatewayOrderId($message['gateway'], $message['order_id']);
     $this->assertNull($fetched, 'Message consumed and not stored in the pending database.');
 }
 public function testDifferentDatabases()
 {
     $pendingPdo = $this->pendingDb->getDatabase();
     $initPdo = $this->paymentsInitialDb->getDatabase();
     $this->assertNotEquals(spl_object_hash($pendingPdo), spl_object_hash($initPdo), 'Pending and paymentsInit databases share the same PDO');
 }