You are here

public function WishlistItemDeleteTest::testDelete in Commerce Wishlist 8.3

Tests deleting wishlist items.

@covers ::processItem

File

tests/src/Kernel/QueueWorker/WishlistItemDeleteTest.php, line 45

Class

WishlistItemDeleteTest
Tests deleting wishlist items via cron.

Namespace

Drupal\Tests\commerce_wishlist\Kernel\QueueWorker

Code

public function testDelete() {

  /** @var \Drupal\commerce_product\Entity\ProductVariationInterface $variation */
  $first_variation = ProductVariation::create([
    'type' => 'default',
    'sku' => $this
      ->randomMachineName(),
    'title' => $this
      ->randomString(),
    'status' => 1,
  ]);
  $first_variation
    ->save();

  /** @var \Drupal\commerce_product\Entity\ProductVariationInterface $variation */
  $second_variation = ProductVariation::create([
    'type' => 'default',
    'sku' => $this
      ->randomMachineName(),
    'title' => $this
      ->randomString(),
    'status' => 1,
  ]);
  $second_variation
    ->save();

  /** @var \Drupal\commerce_wishlist\Entity\WishlistItemInterface $wishlist_item */
  $first_wishlist_item = WishlistItem::create([
    'type' => 'commerce_product_variation',
    'purchasable_entity' => $first_variation,
  ]);
  $first_wishlist_item
    ->save();

  /** @var \Drupal\commerce_wishlist\Entity\WishlistItemInterface $wishlist_item */
  $second_wishlist_item = WishlistItem::create([
    'type' => 'commerce_product_variation',
    'purchasable_entity' => $second_variation,
  ]);
  $second_wishlist_item
    ->save();
  $wishlist = Wishlist::create([
    'type' => 'default',
    'name' => 'My wishlist',
    'wishlist_items' => [
      $first_wishlist_item,
      $second_wishlist_item,
    ],
  ]);
  $wishlist
    ->save();
  $first_variation
    ->delete();
  $this->container
    ->get('cron')
    ->run();

  // Confirm that the first wishlist item has been deleted.
  $first_wishlist_item = $this
    ->reloadEntity($first_wishlist_item);
  $second_wishlist_item = $this
    ->reloadEntity($second_wishlist_item);
  $this
    ->assertEmpty($first_wishlist_item);
  $this
    ->assertNotEmpty($second_wishlist_item);

  /** @var \Drupal\commerce_wishlist\Entity\WishlistInterface $wishlist */
  $wishlist = $this
    ->reloadEntity($wishlist);
  $wishlist_items = $wishlist
    ->getItems();
  $wishlist_item = reset($wishlist_items);
  $this
    ->assertCount(1, $wishlist_items);
  $this
    ->assertEquals($second_wishlist_item
    ->id(), $wishlist_item
    ->id());
}