public function OrderItemQuantityTest::testEvaluate in Commerce Core 8.2
::covers evaluate.
@dataProvider quantityProvider
File
- modules/
promotion/ tests/ src/ Unit/ Plugin/ Commerce/ Condition/ OrderItemQuantityTest.php, line 24
Class
- OrderItemQuantityTest
- @coversDefaultClass \Drupal\commerce_promotion\Plugin\Commerce\Condition\OrderItemQuantity @group commerce
Namespace
Drupal\Tests\commerce_promotion\Unit\Plugin\Commerce\ConditionCode
public function testEvaluate($operator, $quantity, $given_quantity, $result) {
$first_order_item = $this
->prophesize(OrderItemInterface::class);
$first_order_item
->getEntityTypeId()
->willReturn('commerce_order_item');
$first_order_item
->getQuantity()
->willReturn($given_quantity);
$first_order_item = $first_order_item
->reveal();
// The second order item's quantity should not be counted.
$second_order_item = $this
->prophesize(OrderItemInterface::class);
$second_order_item
->getEntityTypeId()
->willReturn('commerce_order_item');
$second_order_item
->getQuantity()
->willReturn('1000');
$second_order_item = $second_order_item
->reveal();
$condition = $this
->prophesize(ConditionInterface::class);
$condition
->evaluate($first_order_item)
->willReturn(TRUE);
$condition
->evaluate($second_order_item)
->willReturn(FALSE);
$offer = $this
->prophesize(OrderItemPromotionOfferInterface::class);
$offer
->getConditions()
->willReturn([
$condition,
]);
$offer
->getConditionOperator()
->willReturn('OR');
$offer = $offer
->reveal();
$parent_entity = $this
->prophesize(PromotionInterface::class);
$parent_entity
->getOffer()
->willReturn($offer);
$parent_entity = $parent_entity
->reveal();
$condition = new OrderItemQuantity([
'operator' => $operator,
'quantity' => $quantity,
], 'order_item_quantity', [
'entity_type' => 'commerce_order',
]);
$condition
->setParentEntity($parent_entity);
$order = $this
->prophesize(OrderInterface::class);
$order
->getEntityTypeId()
->willReturn('commerce_order');
$order
->getItems()
->willReturn([
$first_order_item,
$second_order_item,
]);
$order = $order
->reveal();
$this
->assertEquals($result, $condition
->evaluate($order));
}