You are here

public function StoreTest::testDefaultStore in Commerce Core 8.2

Tests default store functionality.

File

modules/store/tests/src/Kernel/Entity/StoreTest.php, line 116

Class

StoreTest
Tests the Store entity.

Namespace

Drupal\Tests\commerce_store\Kernel\Entity

Code

public function testDefaultStore() {
  $this->store
    ->delete();

  /** @var \Drupal\commerce_store\Entity\StoreInterface $store1 */
  $store1 = Store::create([
    'type' => 'online',
    'uid' => $this->user
      ->id(),
    'is_default' => TRUE,
  ]);
  $store1
    ->save();

  /** @var \Drupal\commerce_store\Entity\StoreInterface $store2 */
  $store2 = Store::create([
    'type' => 'online',
    'uid' => $this->user
      ->id(),
    'is_default' => TRUE,
  ]);
  $store2
    ->save();
  $this
    ->assertTrue($store2
    ->isDefault());

  // Confirm that setting the second store as default removed the
  // flag from the first store.
  $store2 = $this
    ->reloadEntity($store2);
  $store1 = $this
    ->reloadEntity($store1);
  $this
    ->assertTrue($store2
    ->isDefault());
  $this
    ->assertFalse($store1
    ->isDefault());

  /** @var \Drupal\commerce_store\Entity\StoreInterface $store2 */
  $store3 = Store::create([
    'type' => 'online',
    'uid' => $this->user
      ->id(),
  ]);
  $store3
    ->save();
  $this
    ->assertFalse($store3
    ->isDefault());

  // Test fallback.
  $store2
    ->setDefault(FALSE);
  $store2
    ->save();
  $this
    ->assertFalse($store2
    ->isDefault());

  /** @var \Drupal\commerce_store\StoreStorageInterface $store_storage */
  $store_storage = \Drupal::entityTypeManager()
    ->getStorage('commerce_store');
  $default_store = $store_storage
    ->loadDefault();
  $this
    ->assertNotEmpty($default_store);
  $this
    ->assertEquals($store3
    ->id(), $default_store
    ->id());
}