You are here

public function OrderVariationTypeTest::testEvaluate in Commerce Core 8.2

::covers evaluate.

File

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

Class

OrderVariationTypeTest
@coversDefaultClass \Drupal\commerce_product\Plugin\Commerce\Condition\OrderVariationType @group commerce

Namespace

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

Code

public function testEvaluate() {
  $configuration = [];
  $configuration['variation_types'] = [
    'bag',
  ];
  $condition = new OrderVariationType($configuration, 'order_variation_type', [
    'entity_type' => 'commerce_order',
  ]);

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

  // Order item with a glass variation.
  $product_variation = $this
    ->prophesize(ProductVariationInterface::class);
  $product_variation
    ->getEntityTypeId()
    ->willReturn('commerce_product_variation');
  $product_variation
    ->bundle()
    ->willReturn('glass');
  $product_variation = $product_variation
    ->reveal();
  $second_order_item = $this
    ->prophesize(OrderItemInterface::class);
  $second_order_item
    ->getEntityTypeId()
    ->willReturn('commerce_order_item');
  $second_order_item
    ->getPurchasedEntity()
    ->willReturn($product_variation);
  $second_order_item = $second_order_item
    ->reveal();
  $order = $this
    ->buildOrder([
    $first_order_item,
  ]);
  $this
    ->assertFalse($condition
    ->evaluate($order));
  $order = $this
    ->buildOrder([
    $second_order_item,
  ]);
  $this
    ->assertFalse($condition
    ->evaluate($order));
  $order = $this
    ->buildOrder([
    $first_order_item,
    $second_order_item,
  ]);
  $this
    ->assertFalse($condition
    ->evaluate($order));
  $configuration['variation_types'] = [
    'glass',
  ];
  $condition
    ->setConfiguration($configuration);
  $order = $this
    ->buildOrder([
    $first_order_item,
    $second_order_item,
  ]);
  $this
    ->assertTrue($condition
    ->evaluate($order));
}