function it_removes_units_if_target_quantity_is_greater_than_current(OrderItemInterface $orderItem, OrderItemUnitInterface $unit1, OrderItemUnitInterface $unit2, OrderItemUnitInterface $unit3, OrderItemUnitInterface $unit4)
 {
     $orderItem->getQuantity()->willReturn(4);
     $orderItem->getUnits()->willReturn([$unit1, $unit2, $unit3, $unit4]);
     $orderItem->removeUnit($unit1)->shouldBeCalled();
     $this->modify($orderItem, 3);
 }
 /**
  * @param OrderItemInterface $orderItem
  * @param int $decreaseBy
  */
 private function decreaseUnitsNumber(OrderItemInterface $orderItem, $decreaseBy)
 {
     foreach ($orderItem->getUnits() as $unit) {
         if (0 >= $decreaseBy--) {
             break;
         }
         $orderItem->removeUnit($unit);
     }
 }
 function it_removes_units_if_target_quantity_is_greater_than_current(Collection $orderItemUnits, \Iterator $iterator, OrderItemInterface $orderItem, OrderItemUnitInterface $unit1, OrderItemUnitInterface $unit2, OrderItemUnitInterface $unit3, OrderItemUnitInterface $unit4)
 {
     $orderItem->getQuantity()->willReturn(4);
     $orderItem->getUnits()->willReturn($orderItemUnits);
     $orderItemUnits->count()->willReturn(4);
     $orderItemUnits->getIterator()->willReturn($iterator);
     $iterator->rewind()->shouldBeCalled();
     $iterator->valid()->willReturn(true, true, true, true, false);
     $iterator->current()->willReturn($unit1, $unit2, $unit3, $unit4);
     $iterator->next()->shouldBeCalled();
     $orderItem->removeUnit($unit1)->shouldBeCalled();
     $this->modify($orderItem, 3);
 }