--- /dev/null
+<?php
+
+namespace Wallabag\CoreBundle\DataFixtures\ORM;
+
+use Doctrine\Common\DataFixtures\AbstractFixture;
+use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
+use Doctrine\Common\Persistence\ObjectManager;
+use Wallabag\CoreBundle\Entity\TaggingRule;
+
+class LoadTaggingRuleData extends AbstractFixture implements OrderedFixtureInterface
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function load(ObjectManager $manager)
+ {
+ $tr1 = new TaggingRule();
+ $tr1->setRule('content matches "spurs"');
+ $tr1->setTags(array('sport'));
+ $tr1->setConfig($this->getReference('admin-config'));
+
+ $manager->persist($tr1);
+
+ $tr2 = new TaggingRule();
+ $tr2->setRule('content matches "basket"');
+ $tr2->setTags(array('sport'));
+ $tr2->setConfig($this->getReference('admin-config'));
+
+ $manager->persist($tr2);
+
+ $manager->flush();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getOrder()
+ {
+ return 40;
+ }
+}
return;
}
+ // check if tag already exist but has not yet be persisted
+ // it seems that the previous condition with `contains()` doesn't check that case
+ foreach ($this->tags as $existingTag) {
+ if ($existingTag->getUser() !== $tag->getUser() || $existingTag->getLabel() === $tag->getLabel()) {
+ return;
+ }
+ }
+
$this->tags[] = $tag;
$tag->addEntry($this);
}
$this->assertSame($tag, $tags[0]);
}
+ public function testSameTagWithDifferentfMatchingRules()
+ {
+ $taggingRule = $this->getTaggingRule('bla bla', array('hey'));
+ $otherTaggingRule = $this->getTaggingRule('rule as string', array('hey'));
+
+ $user = $this->getUser([$taggingRule, $otherTaggingRule]);
+ $entry = new Entry($user);
+
+ $this->rulerz
+ ->method('satisfies')
+ ->willReturn(true);
+
+ $this->tagger->tag($entry);
+
+ $this->assertFalse($entry->getTags()->isEmpty());
+
+ $tags = $entry->getTags();
+ $this->assertCount(1, $tags);
+ }
+
private function getUser(array $taggingRules = [])
{
$user = new User();