function it_creates_a_cart_item_and_assigns_a_product_variant(FactoryInterface $decoratedFactory, ProductVariantResolverInterface $variantResolver, OrderItemInterface $cartItem, ProductInterface $product, ProductVariantInterface $productVariant) { $decoratedFactory->createNew()->willReturn($cartItem); $variantResolver->getVariant($product)->willReturn($productVariant); $cartItem->setVariant($productVariant)->shouldBeCalled(); $this->createForProduct($product)->shouldReturn($cartItem); }
/** * @param FormEvent $event */ public function preSetData(FormEvent $event) { /** @var ProductInterface $product */ $product = $event->getData(); Assert::isInstanceOf($product, ProductInterface::class); $form = $event->getForm(); /** Options should be disabled for configurable product if it has at least one defined variant */ $disableOptions = null !== $this->variantResolver->getVariant($product) && $product->hasVariants(); $form->add('options', ProductOptionChoiceType::class, ['required' => false, 'disabled' => $disableOptions, 'multiple' => true, 'label' => 'sylius.form.product.options']); }
/** * @param string $productName * @param int $price * * @return ProductInterface */ private function createProduct($productName, $price = 0) { /** @var ProductInterface $product */ $product = $this->productFactory->createWithVariant(); $product->setName($productName); $product->setCode($this->convertToCode($productName)); $variant = $this->defaultVariantResolver->getVariant($product); $variant->setPrice($price); $variant->setCode($product->getCode()); return $product; }
/** * {@inheritdoc} */ public function createForProduct(ProductInterface $product) { $cartItem = $this->createNew(); $cartItem->setVariant($this->variantResolver->getVariant($product)); return $cartItem; }
/** * @Given the customer bought a single :product using :coupon coupon */ public function theCustomerBoughtSingleUsing(ProductInterface $product, CouponInterface $coupon) { $order = $this->addProductVariantToOrder($this->variantResolver->getVariant($product), $product->getPrice()); $order->setPromotionCoupon($coupon); $this->objectManager->flush(); }
/** * @Then the order item with product :product should not exist */ public function orderItemShouldNotExistInTheRegistry(ProductInterface $product) { $orderItems = $this->orderItemRepository->findBy(['variant' => $this->variantResolver->getVariant($product)]); Assert::same($orderItems, []); }
/** * @param string $productName * @param int $price * @param string|null $date * @param ChannelInterface|null $channel * * @return ProductInterface */ private function createProduct($productName, $price = 100, $date = null, ChannelInterface $channel = null) { /** @var ProductInterface $product */ $product = $this->productFactory->createWithVariant(); $product->setName($productName); $product->setCode(StringInflector::nameToUppercaseCode($productName)); $product->setSlug($this->slugGenerator->generate($productName)); $product->setCreatedAt(new \DateTime($date)); /** @var ProductVariantInterface $productVariant */ $productVariant = $this->defaultVariantResolver->getVariant($product); if (null === $channel && $this->sharedStorage->has('channel')) { $channel = $this->sharedStorage->get('channel'); } if (null !== $channel) { $productVariant->addChannelPricing($this->createChannelPricingForChannel($price, $channel)); } $productVariant->setCode($product->getCode()); return $product; }
/** * @param string $productName * @param int $price * * @return ProductInterface */ private function createProduct($productName, $price = 0, $date = null) { /** @var ProductInterface $product */ $product = $this->productFactory->createWithVariant(); $product->setName($productName); $product->setCode(StringInflector::nameToUppercaseCode($productName)); $product->setSlug($this->slugGenerator->generate($productName)); $product->setCreatedAt(new \DateTime($date)); /** @var ProductVariantInterface $productVariant */ $productVariant = $this->defaultVariantResolver->getVariant($product); $productVariant->setPrice($price); $productVariant->setCode($product->getCode()); return $product; }
/** * @param ProductInterface $product * * @return ProductVariantInterface */ public function resolveVariant(ProductInterface $product) { return $this->productVariantResolver->getVariant($product); }