/** * Add Product to Shopping List (product view form) * * @Route( * "/add-product-from-view/{productId}", * name="orob2b_shopping_list_frontend_add_product", * requirements={"productId"="\d+"} * ) * @AclAncestor("orob2b_shopping_list_line_item_frontend_add") * @ParamConverter("product", class="OroB2BProductBundle:Product", options={"id" = "productId"}) * * @param Request $request * @param Product $product * * @return JsonResponse */ public function addProductFromViewAction(Request $request, Product $product) { $shoppingListManager = $this->get('orob2b_shopping_list.shopping_list.manager'); $shoppingList = $shoppingListManager->getForCurrentUser($request->get('shoppingListId')); $lineItem = (new LineItem())->setProduct($product)->setShoppingList($shoppingList)->setAccountUser($shoppingList->getAccountUser())->setOrganization($shoppingList->getOrganization()); $form = $this->createForm(FrontendLineItemType::NAME, $lineItem); $handler = new LineItemHandler($form, $request, $this->getDoctrine(), $shoppingListManager); $isFormHandled = $handler->process($lineItem); if (!$isFormHandled) { return new JsonResponse(['successful' => false, 'message' => (string) $form->getErrors(true, false)]); } $link = $this->get('router')->generate('orob2b_shopping_list_frontend_view', ['id' => $shoppingList->getId()]); $translator = $this->get('translator'); $message = $translator->trans('orob2b.shoppinglist.product.added.label'); $linkTitle = $translator->trans('orob2b.shoppinglist.actions.view'); $message = sprintf("%s (<a href='%s'>%s</a>).", $message, $link, $linkTitle); return new JsonResponse(['successful' => true, 'message' => $message]); }
public function testProcessNotExistingLineItem() { $this->request = Request::create('/', 'PUT'); $this->form->expects($this->once())->method('submit')->with($this->request); $this->form->expects($this->once())->method('isValid')->will($this->returnValue(true)); /** @var \PHPUnit_Framework_MockObject_MockObject|LineItemRepository $repository */ $repository = $this->getMockBuilder('OroB2B\\Bundle\\ShoppingListBundle\\Entity\\Repository\\LineItemRepository')->disableOriginalConstructor()->getMock(); $repository->expects($this->once())->method('findDuplicate')->with($this->lineItem)->will($this->returnValue(null)); /** @var \PHPUnit_Framework_MockObject_MockObject|EntityManagerInterface $manager */ $manager = $this->getMock('Doctrine\\ORM\\EntityManagerInterface'); $manager->expects($this->once())->method('beginTransaction'); $manager->expects($this->once())->method('commit'); $manager->expects($this->never())->method('rollback'); $manager->expects($this->once())->method('persist')->with($this->lineItem); $manager->expects($this->once())->method('flush'); $manager->expects($this->once())->method('getRepository')->with(self::LINE_ITEM_SHORTCUT)->will($this->returnValue($repository)); $this->registry->expects($this->once())->method('getManagerForClass')->with(self::LINE_ITEM_SHORTCUT)->will($this->returnValue($manager)); $handler = new LineItemHandler($this->form, $this->request, $this->registry, $this->shoppingListManager); $this->assertTrue($handler->process($this->lineItem)); $this->assertEquals([], $handler->updateSavedId([])); }
public function testProcessNotExistingLineItem() { $this->request->expects($this->once())->method('getMethod')->will($this->returnValue('PUT')); $this->form->expects($this->once())->method('submit')->with($this->request); $this->form->expects($this->once())->method('isValid')->will($this->returnValue(true)); $repository = $this->getMockBuilder('OroB2B\\Bundle\\ShoppingListBundle\\Entity\\Repository\\LineItemRepository')->disableOriginalConstructor()->getMock(); $repository->expects($this->once())->method('findDuplicate')->with($this->lineItem)->will($this->returnValue(null)); $manager = $this->getMock('Doctrine\\Common\\Persistence\\ObjectManager'); $manager->expects($this->once())->method('getRepository')->with(self::LINE_ITEM_SHORTCUT)->will($this->returnValue($repository)); $manager->expects($this->once())->method('persist')->with($this->lineItem); $manager->expects($this->once())->method('flush'); $this->registry->expects($this->once())->method('getManagerForClass')->with(self::LINE_ITEM_SHORTCUT)->will($this->returnValue($manager)); $handler = new LineItemHandler($this->form, $this->request, $this->registry); $this->assertTrue($handler->process($this->lineItem)); $this->assertEquals([], $handler->updateSavedId([])); }