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());
 }