public function testBulkAddLineItems()
 {
     $shoppingList = new ShoppingList();
     $lineItems = [];
     for ($i = 0; $i < 10; $i++) {
         $lineItems[] = new LineItem();
     }
     $this->manager->bulkAddLineItems($lineItems, $shoppingList, 10);
     $this->assertEquals(10, $shoppingList->getLineItems()->count());
 }
 /**
  * @param ShoppingList $shoppingList
  * @param array $productIds
  * @param array $productQuantities
  * @return int Added entities count
  */
 public function createForShoppingList(ShoppingList $shoppingList, array $productIds = [], array $productQuantities = [])
 {
     if (!$this->isAllowed($shoppingList)) {
         throw new AccessDeniedException();
     }
     /** @var ProductRepository $productsRepo */
     $productsRepo = $this->managerRegistry->getManagerForClass($this->productClass)->getRepository($this->productClass);
     $iterableResult = $productsRepo->getProductsQueryBuilder($productIds)->getQuery()->iterate();
     $lineItems = [];
     foreach ($iterableResult as $entityArray) {
         /** @var Product $product */
         $product = reset($entityArray);
         /** @var ProductUnitPrecision $unitPrecision */
         $unitPrecision = $product->getUnitPrecisions()->first();
         $lineItem = (new LineItem())->setAccountUser($shoppingList->getAccountUser())->setOrganization($shoppingList->getOrganization())->setProduct($product)->setUnit($unitPrecision->getUnit());
         $productId = $product->getId();
         if (array_key_exists($productId, $productQuantities)) {
             $lineItem->setQuantity($productQuantities[$productId]);
         }
         $lineItems[] = $lineItem;
     }
     return $this->shoppingListManager->bulkAddLineItems($lineItems, $shoppingList, self::FLUSH_BATCH_SIZE);
 }