/** * @dataProvider getSuccessMessageDataProvider * * @param string $expectedMessage * @param int $entitiesCount * @param null $shoppingListId */ public function testGetSuccessMessage($expectedMessage, $entitiesCount = 0, $shoppingListId = null) { $withUrl = $entitiesCount && $shoppingListId; $url = '/test/url'; $transChoice = 'transchoice'; $transMessage = 'action'; $this->router->expects($withUrl ? $this->once() : $this->never())->method('generate')->with('orob2b_shopping_list_frontend_view', ['id' => $shoppingListId])->willReturn($url); $this->translator->expects($this->once())->method('transChoice')->with('orob2b.shoppinglist.actions.add_success_message', $entitiesCount, ['%count%' => $entitiesCount])->willReturn($transChoice); $this->translator->expects($withUrl ? $this->once() : $this->never())->method('trans')->with('orob2b.shoppinglist.actions.view')->willReturn($transMessage); $this->assertEquals($expectedMessage, $this->generator->getSuccessMessage($shoppingListId, $entitiesCount)); }
/** {@inheritdoc} */ public function process(array $data, Request $request) { if (empty($data[ProductDataStorage::ENTITY_ITEMS_DATA_KEY]) || !is_array($data[ProductDataStorage::ENTITY_ITEMS_DATA_KEY])) { return; } $data = $data[ProductDataStorage::ENTITY_ITEMS_DATA_KEY]; $shoppingListId = (int) $request->get(sprintf('%s[%s]', QuickAddType::NAME, QuickAddType::ADDITIONAL_FIELD_NAME), null, true); $shoppingList = $this->shoppingListLineItemHandler->getShoppingList($shoppingListId); $productSkus = ArrayUtils::arrayColumn($data, 'productSku'); $productIds = $this->getProductRepository()->getProductsIdsBySku($productSkus); $productSkuQuantities = array_combine($productSkus, ArrayUtils::arrayColumn($data, 'productQuantity')); $productIdsQuantities = array_combine($productIds, $productSkuQuantities); /** @var Session $session */ $session = $request->getSession(); $flashBag = $session->getFlashBag(); try { $entitiesCount = $this->shoppingListLineItemHandler->createForShoppingList($shoppingList, array_values($productIds), $productIdsQuantities); $flashBag->add('success', $this->messageGenerator->getSuccessMessage($shoppingListId, $entitiesCount)); } catch (AccessDeniedException $e) { $flashBag->add('error', $this->messageGenerator->getFailedMessage()); } }
/** * @param MassActionHandlerArgs $args * @param int $entitiesCount * @param int|null $shoppingListId * * @return MassActionResponse */ protected function generateResponse(MassActionHandlerArgs $args, $entitiesCount = 0, $shoppingListId = null) { $transChoiceKey = $args->getMassAction()->getOptions()->offsetGetByPath('[messages][success]', 'orob2b.shoppinglist.actions.add_success_message'); return new MassActionResponse($entitiesCount > 0, $this->messageGenerator->getSuccessMessage($shoppingListId, $entitiesCount, $transChoiceKey), ['count' => $entitiesCount]); }