Пример #1
0
 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']);
 }
Пример #3
0
 /**
  * @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;
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 public function createForProduct(ProductInterface $product)
 {
     $cartItem = $this->createNew();
     $cartItem->setVariant($this->variantResolver->getVariant($product));
     return $cartItem;
 }
Пример #5
0
 /**
  * @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();
 }
Пример #6
0
 /**
  * @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, []);
 }
Пример #7
0
 /**
  * @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;
 }
Пример #8
0
 /**
  * @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;
 }
Пример #9
0
 /**
  * @param ProductInterface $product
  *
  * @return ProductVariantInterface
  */
 public function resolveVariant(ProductInterface $product)
 {
     return $this->productVariantResolver->getVariant($product);
 }