function it_creates_only_missing_inventory_units_via_the_factory($orderItemUnitFactory, OrderItemInterface $item, ProductVariantInterface $variant, OrderItemUnitInterface $unit1, OrderItemUnitInterface $unit2) { $item->getUnits()->shouldBeCalled()->willReturn(new ArrayCollection(array($unit1))); $unit1->getStockable()->willReturn($variant); $unit2->getStockable()->willReturn($variant); $item->getVariant()->willReturn($variant); $item->getQuantity()->willReturn(2); $item->getUnits()->willReturn(new ArrayCollection()); $orderItemUnitFactory->createNew()->willReturn($unit2); $unit1->setInventoryState(InventoryUnitInterface::STATE_CHECKOUT)->shouldNotBeCalled(); $unit2->setInventoryState(InventoryUnitInterface::STATE_CHECKOUT)->shouldBeCalled(); $item->addUnit($unit1)->shouldNotBeCalled(); $item->addUnit($unit2)->shouldBeCalled(); $this->processInventoryUnits($item); }
function it_does_nothing_if_target_quantity_is_below_0($orderItemUnitFactory, OrderItemInterface $orderItem) { $orderItem->getQuantity()->willReturn(3); $orderItemUnitFactory->createForItem(Argument::any())->shouldNotBeCalled(); $orderItem->addUnit(Argument::any())->shouldNotBeCalled(); $orderItem->removeUnit(Argument::any())->shouldNotBeCalled(); $this->modify($orderItem, -10); }
function let(OrderItemInterface $orderItem) { $orderItem->getUnitPrice()->willReturn(1000); $orderItem->addUnit(Argument::type(OrderItemUnitInterface::class))->shouldBeCalled(); $this->beConstructedWith($orderItem); }
/** * @param OrderItemInterface $item * @param int $quantity * @param string $state */ protected function createInventoryUnits(OrderItemInterface $item, $quantity, $state = InventoryUnitInterface::STATE_CHECKOUT) { if ($quantity < 1) { throw new \InvalidArgumentException('Quantity of units must be greater than 0.'); } for ($i = 0; $i < $quantity; $i++) { $unit = $this->orderItemUnitFactory->createNew(); $unit->setInventoryState($state); $item->addUnit($unit); } }