You are here

public function OrderItemProductTypeTest::testEvaluate in Commerce Core 8.2

::covers evaluate.

File

modules/product/tests/src/Unit/Plugin/Commerce/Condition/OrderItemProductTypeTest.php, line 20

Class

OrderItemProductTypeTest
@coversDefaultClass \Drupal\commerce_product\Plugin\Commerce\Condition\OrderItemProductType @group commerce

Namespace

Drupal\Tests\commerce_product\Unit\Plugin\Commerce\Condition

Code

public function testEvaluate() {
  $configuration = [];
  $configuration['product_types'] = [
    'bag',
  ];
  $condition = new OrderItemProductType($configuration, 'order_item_product_type', [
    'entity_type' => 'commerce_order_item',
  ]);

  // Order item with no purchasable entity.
  $order_item = $this
    ->prophesize(OrderItemInterface::class);
  $order_item
    ->getEntityTypeId()
    ->willReturn('commerce_order_item');
  $order_item
    ->getPurchasedEntity()
    ->willReturn(NULL);
  $order_item = $order_item
    ->reveal();
  $this
    ->assertFalse($condition
    ->evaluate($order_item));

  // Order item with a variation belonging to glass product.
  $product = $this
    ->prophesize(ProductInterface::class);
  $product
    ->bundle()
    ->willReturn('glass');
  $product = $product
    ->reveal();
  $product_variation = $this
    ->prophesize(ProductVariationInterface::class);
  $product_variation
    ->getEntityTypeId()
    ->willReturn('commerce_product_variation');
  $product_variation
    ->getProduct()
    ->willReturn($product);
  $product_variation = $product_variation
    ->reveal();
  $order_item = $this
    ->prophesize(OrderItemInterface::class);
  $order_item
    ->getEntityTypeId()
    ->willReturn('commerce_order_item');
  $order_item
    ->getPurchasedEntity()
    ->willReturn($product_variation);
  $order_item = $order_item
    ->reveal();
  $this
    ->assertFalse($condition
    ->evaluate($order_item));
  $configuration['product_types'] = [
    'glass',
  ];
  $condition
    ->setConfiguration($configuration);
  $this
    ->assertTrue($condition
    ->evaluate($order_item));
}