/**
  * Tests queue service.
  */
 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();
     // Tests 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));
     // Tests claimPayment().
     $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));
     // Tests releaseClaim().
     $released = $this->queue->releaseClaim($payment->id(), $acquisition_code);
     $this->assertTrue($released);
     $acquisition_code = $this->queue->claimPayment($payment->id());
     $this->assertTrue(is_string($acquisition_code));
     // Tests acquirePayment().
     $acquired = $this->queue->acquirePayment($payment->id(), $acquisition_code);
     $this->assertTrue($acquired);
     $acquisition_code = $this->queue->claimPayment($payment->id());
     $this->assertFalse($acquisition_code);
     // Save another payment to the queue, because acquiring the previous one
     // deleted it.
     $payment = Generate::createPayment(2);
     $payment->setPaymentStatus($this->paymentStatusManager->createInstance('payment_success'));
     $payment->save();
     $this->queue->save($category_id, $payment->id());
     // Tests loadPaymentIds().
     $loaded_payment_ids = $this->queue->loadPaymentIds($category_id, $payment->getOwnerId());
     $this->assertEqual($loaded_payment_ids, array($payment->id()));
     // Tests deleteByPaymentId().
     $this->queue->deleteByPaymentId($payment->id());
     $payment_ids = $this->queue->loadPaymentIds($category_id, $payment->getOwnerId());
     $this->assertFalse(in_array($payment->id(), $payment_ids));
     // Tests deleteByCategoryIdPrefix().
     $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));
     // Tests deleteByCategoryId().
     $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));
 }
 /**
  * @covers ::getAllowedPaymentStatusIds
  * @covers ::setAllowedPaymentStatusIds
  */
 public function testGetAllowedPaymentStatusIds()
 {
     $allowed_payment_status_ids = array($this->randomMachineName(), $this->randomMachineName());
     $this->assertSame($this->sut, $this->sut->setAllowedPaymentStatusIds($allowed_payment_status_ids));
     $this->assertSame($allowed_payment_status_ids, $this->sut->getAllowedPaymentStatusIds());
 }