View source
<?php
namespace Drupal\Tests\payment\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Drupal\payment\DatabaseQueue;
use Drupal\payment\Tests\Generate;
class DatabaseQueueWebTest extends KernelTestBase {
protected $database;
protected $paymentMethodManager;
protected $paymentStatusManager;
protected $queue;
public static $modules = array(
'payment',
'payment_test',
'currency',
'user',
'plugin',
);
function setUp() : void {
parent::setUp();
$this
->installEntitySchema('payment');
$this
->installSchema('payment', [
'payment_queue',
]);
$this->database = \Drupal::database();
$this->paymentMethodManager = \Drupal::service('plugin.manager.payment.method');
$this->paymentStatusManager = \Drupal::service('plugin.manager.payment.status');
$queue_id = $this
->randomMachineName();
$this->queue = new DatabaseQueue($queue_id, $this->database, \Drupal::service('payment.event_dispatcher'), $this->paymentStatusManager);
}
function testQueue() {
$category_id_prefix = $this
->randomMachineName();
$category_id = $category_id_prefix . $this
->randomMachineName();
$payment = Generate::createPayment(2);
$payment
->setPaymentStatus($this->paymentStatusManager
->createInstance('payment_success'));
$payment
->save();
$this->queue
->save($category_id, $payment
->id());
$payment_ids = $this->queue
->loadPaymentIds($category_id, $payment
->getOwnerId());
$this
->assertTrue(in_array($payment
->id(), $payment_ids));
$this
->assertTrue(is_string($this->queue
->claimPayment($payment
->id())));
$this
->assertFalse($this->queue
->claimPayment($payment
->id()));
$acquisition_code = $this->queue
->claimPayment($payment
->id());
$this
->assertTrue(is_string($acquisition_code));
$released = $this->queue
->releaseClaim($payment
->id(), $acquisition_code);
$this
->assertTrue($released);
$acquisition_code = $this->queue
->claimPayment($payment
->id());
$this
->assertTrue(is_string($acquisition_code));
$acquired = $this->queue
->acquirePayment($payment
->id(), $acquisition_code);
$this
->assertTrue($acquired);
$acquisition_code = $this->queue
->claimPayment($payment
->id());
$this
->assertFalse($acquisition_code);
$payment = Generate::createPayment(2);
$payment
->setPaymentStatus($this->paymentStatusManager
->createInstance('payment_success'));
$payment
->save();
$this->queue
->save($category_id, $payment
->id());
$loaded_payment_ids = $this->queue
->loadPaymentIds($category_id, $payment
->getOwnerId());
$this
->assertEqual($loaded_payment_ids, array(
$payment
->id(),
));
$this->queue
->deleteByPaymentId($payment
->id());
$payment_ids = $this->queue
->loadPaymentIds($category_id, $payment
->getOwnerId());
$this
->assertFalse(in_array($payment
->id(), $payment_ids));
$this->queue
->save($category_id, $payment
->id());
$this->queue
->deleteByCategoryIdPrefix($category_id_prefix);
$payment_ids = $this->queue
->loadPaymentIds($category_id, $payment
->getOwnerId());
$this
->assertFalse(in_array($payment
->id(), $payment_ids));
$this->queue
->save($category_id, $payment
->id());
$this->queue
->deleteByCategoryId($category_id);
$payment_ids = $this->queue
->loadPaymentIds($category_id, $payment
->getOwnerId());
$this
->assertFalse(in_array($payment
->id(), $payment_ids));
}
}