You are here

public function WishlistAssignmentTest::testAssignMultipleWishlist in Commerce Wishlist 8.3

Tests multiple wishlist assignment.

@covers ::assignMultiple

File

tests/src/Kernel/WishlistAssignmentTest.php, line 151

Class

WishlistAssignmentTest
Tests the wishlist assignment.

Namespace

Drupal\Tests\commerce_wishlist\Kernel

Code

public function testAssignMultipleWishlist() {
  $default_wishlist = $this->entityTypeManager
    ->getStorage('commerce_wishlist')
    ->loadDefaultByUser($this->authenticatedUser, 'test_1');
  $this
    ->assertEmpty($default_wishlist);
  $wishlist_item_1 = WishlistItem::create([
    'type' => 'commerce_product_variation',
    'purchasable_entity' => $this->productVariationFirst,
  ]);
  $wishlist_item_1
    ->save();
  $this
    ->assertInstanceOf(WishlistItemInterface::class, $wishlist_item_1);
  $wishlist_item_2 = WishlistItem::create([
    'type' => 'commerce_product_variation',
    'purchasable_entity' => $this->productVariationSecond,
  ]);
  $wishlist_item_2
    ->save();
  $this
    ->assertInstanceOf(WishlistItemInterface::class, $wishlist_item_1);
  $wishlist_1 = Wishlist::create([
    'type' => 'test_1',
    'name' => 'First wishlist',
    'wishlist_items' => [
      $wishlist_item_1,
    ],
    'uid' => 0,
  ]);
  $wishlist_1
    ->save();
  $this
    ->assertInstanceOf(WishlistInterface::class, $wishlist_1);
  $wishlist_2 = Wishlist::create([
    'type' => 'test_1',
    'name' => 'First wishlist',
    'wishlist_items' => [
      $wishlist_item_2,
      $wishlist_item_1,
    ],
    'uid' => 0,
  ]);
  $wishlist_2
    ->save();
  $this
    ->assertInstanceOf(WishlistInterface::class, $wishlist_2);
  $wishlists = [
    $wishlist_1,
    $wishlist_2,
  ];
  $this->wishlistAssignment
    ->assignMultiple($wishlists, $this->authenticatedUser);
  $this
    ->reloadEntity($wishlist_1);
  $this
    ->reloadEntity($wishlist_2);
  $this
    ->assertEqual($wishlist_1
    ->getOwnerId(), $this->authenticatedUser
    ->id());
  $this
    ->assertEqual($wishlist_2
    ->getOwnerId(), $this->authenticatedUser
    ->id());
  $this
    ->config('commerce_wishlist.settings')
    ->set('allow_multiple', 0)
    ->save();
  $another_user = $this
    ->createUser();
  $default_wishlist = $this->entityTypeManager
    ->getStorage('commerce_wishlist')
    ->loadDefaultByUser($another_user, 'test_1');
  $this
    ->assertEmpty($default_wishlist);
  $wishlist = Wishlist::create([
    'type' => 'test_1',
    'name' => 'First wishlist',
    'wishlist_items' => [
      $wishlist_item_1,
    ],
    'uid' => $another_user
      ->id(),
    'is_default' => TRUE,
  ]);
  $wishlist
    ->save();
  $default_wishlist = $this->entityTypeManager
    ->getStorage('commerce_wishlist')
    ->loadDefaultByUser($another_user, 'test_1');
  $this
    ->assertNotEmpty($default_wishlist);
  $anonymous_wishlist = Wishlist::create([
    'type' => 'test_1',
    'name' => 'Anonymous wishlist',
    'wishlist_items' => [
      $wishlist_item_2,
    ],
    'uid' => 0,
  ]);
  $anonymous_wishlist
    ->save();
  $this->wishlistAssignment
    ->assignMultiple([
    $anonymous_wishlist,
  ], $another_user);
  $wishlist = $this
    ->reloadEntity($wishlist);
  $this
    ->assertCount(2, $wishlist
    ->getItems());
  $anonymous_wishlist = $this
    ->reloadEntity($anonymous_wishlist);
  $this
    ->assertNull($anonymous_wishlist);
  $default_wishlist = $this->entityTypeManager
    ->getStorage('commerce_wishlist')
    ->loadDefaultByUser($another_user, 'test_2');
  $this
    ->assertEmpty($default_wishlist);
  $anonymous_wishlist = Wishlist::create([
    'type' => 'test_2',
    'name' => 'Anonymous wishlist',
    'wishlist_items' => [
      $wishlist_item_2,
    ],
    'uid' => 0,
  ]);
  $anonymous_wishlist
    ->save();
  $this->wishlistAssignment
    ->assignMultiple([
    $anonymous_wishlist,
  ], $another_user);
  $anonymous_wishlist = $this
    ->reloadEntity($anonymous_wishlist);
  $this
    ->assertEqual($anonymous_wishlist
    ->getOwnerId(), $another_user
    ->id());
}