Commit 30e349db authored by Pedro Cambra's avatar Pedro Cambra Committed by Pedro Cambra
Browse files

Issue #3218870 by pcambra: Tests for tickets with product title longer than 50

parent 202ce6e0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ interface CommerceTicketInterface extends ContentEntityInterface, EntityOwnerInt
   * Sets the ticket title.
   *
   * @param string $ticket_number
   *   The ticket ticket number.
   *   The ticket number.
   *
   * @return \Drupal\commerce_ticketing\CommerceTicketInterface
   *   The called ticket entity.
+1 −10
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@ namespace Drupal\Tests\commerce_ticketing\Kernel;
use Drupal\commerce_order\Entity\Order;
use Drupal\commerce_order\Entity\OrderInterface;
use Drupal\commerce_payment\Entity\Payment;
use Drupal\user\Entity\User;

/**
 * Tests the ticket emails.
@@ -73,15 +72,7 @@ class MailQueueTest extends TicketKernelTestBase {
    assert($order instanceof OrderInterface);
    $this->assertCount(1, $order->getItems());

    $payment = Payment::create([
      'type' => 'payment_default',
      'payment_gateway' => $this->paymentGateway->id(),
      'order_id' => $order->id(),
      'amount' => $order->getTotalPrice(),
      'state' => 'completed',
    ]);
    $payment->save();
    $order->save();
    $this->addPayment($order);
    $this->assertEquals(0, \Drupal::queue('commerce_ticketing_send_ticket_receipt_worker')->numberOfItems());
  }

+64 −0
Original line number Diff line number Diff line
@@ -2,6 +2,10 @@

namespace Drupal\Tests\commerce_ticketing\Kernel;

use Drupal\commerce_order\Entity\Order;
use Drupal\commerce_order\Entity\OrderInterface;
use Drupal\commerce_product\Entity\Product;
use Drupal\commerce_product\Entity\ProductVariation;
use Drupal\commerce_ticketing\Entity\CommerceTicket;

/**
@@ -19,6 +23,66 @@ class TicketCreationTest extends TicketKernelTestBase {
    $this->addPayment();
    $tickets = CommerceTicket::loadMultiple();
    $this->assertCount(1, $tickets);
    $ticket = reset($tickets);
    $this->assertEquals($ticket->label(), 'Ticket ' . $this->variation->label());
  }

  /**
   * Tests ticket creation with a really long title.
   */
  public function testTicketCreationLongTitle() {
    $this->assertCount(0, $this->tickets);

    $customer = $this->createUser([], ['view own commerce_ticket', 'view own commerce_order', 'view commerce_product']);

    /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
    $order = Order::create([
      'type' => 'default',
      'state' => 'draft',
      'mail' => $customer->getEmail(),
      'uid' => $customer->id(),
      'ip_address' => '127.0.0.1',
      'store_id' => $this->store->id(),
      'payment_gateway' => $this->paymentGateway->id(),
    ]);

    $variation = ProductVariation::create([
      'type' => 'ticket',
      'sku' => strtolower($this->randomMachineName()),
      'title' => $this->randomString(44),
      'price' => [
        'number' => '10.00',
        'currency_code' => 'USD',
      ],
      'status' => 1,
    ]);
    $variation->save();
    $product = Product::create([
      'type' => 'ticket',
      'title' => $this->randomMachineName(),
      'stores' => [$this->store],
      'variations' => [$variation],
    ]);
    $product->save();
    $variation = $this->reloadEntity($variation);

    // Add the item to the cart.
    $order_item = $this->orderItemStorage->createFromPurchasableEntity($variation);
    $order_item->save();
    $order->addItem($order_item);

    // Save and reload to have a fresh order.
    $order->save();
    $order = $this->reloadEntity($order);

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

    $this->addPayment($order);
    $tickets = CommerceTicket::loadMultiple();
    $this->assertCount(1, $tickets);
    $ticket = reset($tickets);
    $this->assertEquals($ticket->label(), substr($this->t('Ticket') . ' ' . $variation->label(), 0, 50));
  }

}
+3 −0
Original line number Diff line number Diff line
@@ -101,6 +101,7 @@ abstract class TicketKernelTestBase extends CartKernelTestBase {
    $this->variation = ProductVariation::create([
      'type' => 'ticket',
      'sku' => strtolower($this->randomMachineName()),
      'title' => $this->randomString(),
      'price' => [
        'number' => '10.00',
        'currency_code' => 'USD',
@@ -108,6 +109,8 @@ abstract class TicketKernelTestBase extends CartKernelTestBase {
      'status' => 1,
    ]);
    $this->variation->save();
    // Product is needed to control the permissions on the variations.
    // @see \Drupal\commerce_product\ProductVariationAccessControlHandler::checkAccess()
    $this->product = Product::create([
      'type' => 'ticket',
      'title' => $this->randomMachineName(),