You are here

public function PurchasableEntityTypeRepositoryTest::testGetPurchasableEntityTypes in Commerce Core 8.2

@covers ::getPurchasableEntityTypes

File

tests/src/Unit/PurchasableEntityTypeRepositoryTest.php, line 20

Class

PurchasableEntityTypeRepositoryTest
@coversDefaultClass \Drupal\commerce\PurchasableEntityTypeRepository @group commerce

Namespace

Drupal\Tests\commerce\Unit

Code

public function testGetPurchasableEntityTypes() {
  $node_entity_type = $this
    ->prophesize(EntityTypeInterface::class);
  $node_entity_type
    ->entityClassImplements(PurchasableEntityInterface::class)
    ->willReturn(FALSE);
  $product_entity_type = $this
    ->prophesize(EntityTypeInterface::class);
  $product_entity_type
    ->entityClassImplements(PurchasableEntityInterface::class)
    ->willReturn(FALSE);
  $product_variation_entity_type = $this
    ->prophesize(EntityTypeInterface::class);
  $product_variation_entity_type
    ->entityClassImplements(PurchasableEntityInterface::class)
    ->willReturn(TRUE);
  $etm = $this
    ->prophesize(EntityTypeManagerInterface::class);
  $etm
    ->getDefinitions()
    ->willReturn($this
    ->createMockedDefinitions([
    'node' => [
      'is_purchasable' => FALSE,
      'label' => 'Node',
    ],
    'commerce_product' => [
      'is_purchasable' => FALSE,
      'label' => 'Product',
    ],
    'commerce_product_variation' => [
      'is_purchasable' => TRUE,
      'label' => 'Product variation',
    ],
  ]));
  $sut = new PurchasableEntityTypeRepository($etm
    ->reveal());
  $purchasable_entity_types = $sut
    ->getPurchasableEntityTypes();
  $this
    ->assertCount(1, $purchasable_entity_types);
  $this
    ->assertEquals([
    'commerce_product_variation',
  ], array_keys($purchasable_entity_types));
  $widget_entity_type = $this
    ->prophesize(EntityTypeInterface::class);
  $widget_entity_type
    ->entityClassImplements(PurchasableEntityInterface::class)
    ->willReturn(TRUE);
  $etm
    ->getDefinitions()
    ->willReturn($this
    ->createMockedDefinitions([
    'node' => [
      'is_purchasable' => FALSE,
      'label' => 'Node',
    ],
    'commerce_product' => [
      'is_purchasable' => FALSE,
      'label' => 'Product',
    ],
    'commerce_product_variation' => [
      'is_purchasable' => TRUE,
      'label' => 'Product variation',
    ],
    'widget' => [
      'is_purchasable' => TRUE,
      'label' => 'Widget',
    ],
  ]));
  $purchasable_entity_types = $sut
    ->getPurchasableEntityTypes();
  $this
    ->assertCount(2, $purchasable_entity_types);
  $this
    ->assertEquals([
    'commerce_product_variation',
    'widget',
  ], array_keys($purchasable_entity_types));
}