Commit b2960e35 authored by Pedro Cambra's avatar Pedro Cambra
Browse files

Issue #3281312: Wrong service definition for queue worker

parent 60eccba2
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -38,11 +38,21 @@ class CommerceTicketingSendTicketReceiptWorker extends QueueWorkerBase implement
  protected $logger;

  /**
   * {@inheritdoc}
   * Constructs a new CommerceTicketingSendTicketReceiptWorker.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\commerce_ticketing\Mail\TicketReceiptMail $ticket_receipt_mail
   *   The receipt mail service.
   * @param \Psr\Log\LoggerInterface $logger
   *   A logger instance.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, TicketReceiptMail $ticket_receipt_mail, LoggerInterface $logger) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);

    $this->ticketReceiptMail = $ticket_receipt_mail;
    $this->logger = $logger;
  }
@@ -55,7 +65,6 @@ class CommerceTicketingSendTicketReceiptWorker extends QueueWorkerBase implement
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('entity_type.manager'),
      $container->get('commerce_ticketing.ticket_receipt_mail'),
      $container->get('logger.factory')->get('commerce_ticketing')
    );
+18 −13
Original line number Diff line number Diff line
@@ -13,21 +13,11 @@ use Drupal\commerce_payment\Entity\Payment;
 */
class MailQueueTest extends TicketKernelTestBase {

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    // Adds the ticket's field to the commerce order default type.
    $field_definition = commerce_ticketing_build_ticketing_field_definition('default_without_email');
    $this->container->get('commerce.configurable_field_manager')->createField($field_definition);
  }

  /**
   * Tests queue generation for orders with email.
   */
  public function testOrderWithEmail() {
    $queue_name = 'commerce_ticketing_send_ticket_receipt_worker';
    $this->assertEquals(0, \Drupal::queue('commerce_ticketing_send_ticket_receipt_worker')->numberOfItems());
    $payment = Payment::create([
      'type' => 'payment_default',
@@ -38,13 +28,28 @@ class MailQueueTest extends TicketKernelTestBase {
    ]);
    $payment->save();
    $this->order->save();
    $this->assertEquals(1, \Drupal::queue('commerce_ticketing_send_ticket_receipt_worker')->numberOfItems());

    // Run the queue.
    $queue_worker = \Drupal::service('plugin.manager.queue_worker')->createInstance($queue_name);
    /** @var \Drupal\Core\Queue\QueueInterface $queue */
    $queue = \Drupal::service('queue')->get($queue_name);
    $this->assertEquals(1, $queue->numberOfItems());

    $item = $queue->claimItem();
    $queue_worker->processItem($item->data);
    $queue->deleteItem($item);

    $this->assertEquals(0, $queue->numberOfItems());
  }

  /**
   * Tests orders with no mail.
   */
  public function testNoMailWithOrderSendTicketsOff() {
  public function aatestNoMailWithOrderSendTicketsOff() {
    // Adds the ticket's field to the commerce order default type.
    $field_definition = commerce_ticketing_build_ticketing_field_definition('default_without_email');
    $this->container->get('commerce.configurable_field_manager')->createField($field_definition);

    $this->assertEquals(0, \Drupal::queue('commerce_ticketing_send_ticket_receipt_worker')->numberOfItems());

    $customer = $this->createUser([], ['view own commerce_ticket', 'view own commerce_order', 'view commerce_product']);
+20 −3
Original line number Diff line number Diff line
@@ -30,8 +30,10 @@ abstract class TicketKernelTestBase extends CartKernelTestBase {
    'commerce_ticketing',
    'commerce_ticketing_test',
    'entity_print',
    'entity_print_test',
    'image',
    'file'
    'file',
    'system',
  ];

  /**
@@ -78,7 +80,16 @@ abstract class TicketKernelTestBase extends CartKernelTestBase {
    $this->installEntitySchema('file');
    $this->installEntitySchema('commerce_payment');
    $this->installEntitySchema('commerce_ticket');
    $this->installConfig(['commerce_ticketing', 'commerce_ticketing_test', 'commerce_payment']);
    $this->installConfig([
      'commerce_ticketing',
      'commerce_ticketing_test',
      'commerce_payment',
      'system',
      'entity_print',
      'entity_print_test',
    ]);

    $this->container->get('theme_installer')->install(['stark']);

    // Enables the default commerce order for tickets.
    $order_type = OrderType::load('default');
@@ -149,6 +160,12 @@ abstract class TicketKernelTestBase extends CartKernelTestBase {

    assert($this->order instanceof OrderInterface);
    $this->assertCount(1, $this->order->getItems());

    // Set the default print engine.
    $config = $this->container->get('config.factory')->getEditable('entity_print.settings');
    $config
      ->set('print_engines.pdf_engine', 'testprintengine')
      ->save();
  }

  /**
@@ -160,7 +177,7 @@ abstract class TicketKernelTestBase extends CartKernelTestBase {
   * @return void
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  protected function addPayment($order = NULL) {
  protected function addPayment(OrderInterface $order = NULL) {
    if (empty($order)) {
      $payment = Payment::create([
        'type' => 'payment_default',