/** * @param PromotionInterface $promotion * @param string $header * * @return NodeElement */ private function getPromotionFieldsWithHeader(PromotionInterface $promotion, $header) { $tableAccessor = $this->getTableAccessor(); $table = $this->getElement('table'); $fields = $tableAccessor->getFieldFromRow($table, $tableAccessor->getRowWithFields($table, ['code' => $promotion->getCode()]), $header); return $fields; }
/** * @param OrderItemUnitInterface $unit * @param PromotionInterface $promotion */ private function removeUnitOrderPromotionAdjustmentsByOrigin(OrderItemUnitInterface $unit, PromotionInterface $promotion) { foreach ($unit->getAdjustments(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT) as $adjustment) { if ($promotion->getCode() === $adjustment->getOriginCode()) { $unit->removeAdjustment($adjustment); } } }
/** * @param PromotionInterface $promotion * @param string $type * * @return AdjustmentInterface */ protected function createAdjustment(PromotionInterface $promotion, $type = AdjustmentInterface::ORDER_SHIPPING_PROMOTION_ADJUSTMENT) { /** @var AdjustmentInterface $adjustment */ $adjustment = $this->adjustmentFactory->createNew(); $adjustment->setType($type); $adjustment->setLabel($promotion->getName()); $adjustment->setOriginCode($promotion->getCode()); return $adjustment; }
function it_reverts_order_units_order_promotion_adjustments(AdjustmentInterface $firstAdjustment, AdjustmentInterface $secondAdjustment, OrderInterface $order, OrderItemInterface $item, OrderItemUnitInterface $unit, PromotionInterface $promotion) { $order->countItems()->willReturn(1); $order->getItems()->willReturn([$item]); $item->getUnits()->willReturn([$unit]); $unit->getAdjustments(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT)->willReturn([$firstAdjustment, $secondAdjustment]); $promotion->getCode()->willReturn('PROMOTION'); $firstAdjustment->getOriginCode()->willReturn('PROMOTION'); $secondAdjustment->getOriginCode()->willReturn('OTHER_PROMOTION'); $unit->removeAdjustment($firstAdjustment)->shouldBeCalled(); $unit->removeAdjustment($secondAdjustment)->shouldNotBeCalled(); $this->revert($order, [], $promotion); }
/** * @param PromotionInterface $promotion * @param OrderItemUnitInterface $unit * @param int $amount */ private function addAdjustment(PromotionInterface $promotion, OrderItemUnitInterface $unit, $amount) { $adjustment = $this->adjustmentFactory->createWithData(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT, $promotion->getName(), $amount); $adjustment->setOriginCode($promotion->getCode()); $unit->addAdjustment($adjustment); }
function it_throws_exception_when_a_promotion_is_found_but_it_should_not_exist(PromotionInterface $promotion, PromotionRepositoryInterface $promotionRepository) { $promotion->getCode()->willReturn('christmas_promotion'); $promotionRepository->findOneBy(['code' => 'christmas_promotion'])->willReturn($promotion); $this->shouldThrow(NotEqualException::class)->during('promotionShouldNotExistInTheRegistry', [$promotion]); }
function it_does_not_distribute_0_amount_to_unit_even_if_its_middle_element(AdjustmentFactoryInterface $adjustmentFactory, AdjustmentInterface $adjustment, IntegerDistributorInterface $distributor, OrderInterface $order, OrderItemInterface $coltItem, OrderItemUnitInterface $firstColtUnit, OrderItemUnitInterface $secondColtUnit, PromotionInterface $promotion) { $order->countItems()->willReturn(1); $order->getItems()->willReturn(new ArrayCollection([$coltItem->getWrappedObject()])); $coltItem->getQuantity()->willReturn(2); $distributor->distribute(1, 2)->willReturn([1, 0]); $coltItem->getUnits()->willReturn(new ArrayCollection([$firstColtUnit->getWrappedObject(), $secondColtUnit->getWrappedObject()])); $promotion->getName()->willReturn('Winter guns promotion!'); $promotion->getCode()->willReturn('WINTER_GUNS_PROMOTION'); $adjustmentFactory->createWithData(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT, 'Winter guns promotion!', 1)->willReturn($adjustment); $adjustment->setOriginCode('WINTER_GUNS_PROMOTION')->shouldBeCalled(); $firstColtUnit->addAdjustment($adjustment)->shouldBeCalled(); $secondColtUnit->addAdjustment(Argument::any())->shouldNotBeCalled(); $this->apply($order, $promotion, [1]); }
/** * @Then /^(this promotion) should no longer exist in the promotion registry$/ */ public function promotionShouldNotExistInTheRegistry(PromotionInterface $promotion) { Assert::null($this->promotionRepository->findOneBy(['code' => $promotion->getCode()])); }
/** * @Then /^(this promotion) should no longer exist in the promotion registry$/ */ public function promotionShouldNotExistInTheRegistry(PromotionInterface $promotion) { expect($this->promotionRepository->findOneBy(['code' => $promotion->getCode()]))->toBe(null); }