/** * 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'); }