public function it_should_not_add_article_to_list(ArticleEvent $event, Article $article, ContentListRepositoryInterface $listRepository, ContentListInterface $list, FactoryInterface $ruleFactory, RuleInterface $rule, RuleEvaluatorInterface $ruleEvaluator, FactoryInterface $listItemFactory, ContentListItemInterface $listItem) { $event->getArticle()->willReturn($article); $list->getExpression()->willReturn('article.getLocale() == "en"'); $listRepository->findByType(ContentListInterface::TYPE_AUTOMATIC)->willReturn([$list]); $ruleFactory->create()->willReturn($rule); $rule->setExpression('article.getLocale() == "en"')->shouldBeCalled(); $ruleEvaluator->evaluate($rule, $article)->willReturn(false); $listItemFactory->create()->shouldNotBeCalled(); $listItem->setContent($article)->shouldNotBeCalled(); $list->addItem($listItem)->shouldNotBeCalled(); $this->addArticleToList($event); }
/** * @param ArticleEvent $event */ public function addArticleToList(ArticleEvent $event) { $article = $event->getArticle(); /** @var ContentListInterface[] $contentLists */ $contentLists = $this->listRepository->findByType(ContentListInterface::TYPE_AUTOMATIC); /** @var RuleInterface $rule */ $rule = $this->ruleFactory->create(); foreach ($contentLists as $contentList) { $rule->setExpression($contentList->getExpression()); if ($this->ruleEvaluator->evaluate($rule, $article)) { /** @var ContentListItemInterface $contentListItem */ $contentListItem = $this->listItemFactory->create(); $contentListItem->setContent($article); $contentList->addItem($contentListItem); } } }
/** * @param ArticleEvent $event */ public function onArticleCreate(ArticleEvent $event) { $package = $event->getPackage(); $article = $event->getArticle(); $this->objectManager->persist($article); if (null !== $package && 0 === count($package->getItems())) { return; } foreach ($package->getItems() as $key => $packageItem) { if (ItemInterface::TYPE_PICTURE === $packageItem->getType() || ItemInterface::TYPE_FILE === $packageItem->getType()) { $articleMedia = $this->handleMedia($article, $key, $packageItem); $this->objectManager->persist($articleMedia); } if (null !== $packageItem->getItems() && 0 !== $packageItem->getItems()->count()) { foreach ($packageItem->getItems() as $key => $item) { if (ItemInterface::TYPE_PICTURE === $item->getType() || ItemInterface::TYPE_FILE === $item->getType()) { $articleMedia = $this->handleMedia($article, $key, $item); $this->objectManager->persist($articleMedia); } } } } }
public function it_processes_rules(ArticleEvent $event, ArticleInterface $article, RuleProcessorInterface $ruleProcessor) { $event->getArticle()->willReturn($article); $ruleProcessor->process($article)->shouldBeCalled(); $this->processRules($event); }
/** * @param ArticleEvent $event */ public function processRules(ArticleEvent $event) { $this->ruleProcessor->process($event->getArticle()); }