X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FTests%2FHelper%2FRuleBasedTaggerTest.php;h=c43c62c3bf86800d80787f3d2ece61739867ec1b;hb=619cc45359ead519b64129181a07e14160fbbfcb;hp=5180f7ddb387b680279bf5267aa43a95bbf3718a;hpb=625acf335298186b4ff983f9321900d1238e854b;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Tests/Helper/RuleBasedTaggerTest.php b/src/Wallabag/CoreBundle/Tests/Helper/RuleBasedTaggerTest.php index 5180f7dd..c43c62c3 100644 --- a/src/Wallabag/CoreBundle/Tests/Helper/RuleBasedTaggerTest.php +++ b/src/Wallabag/CoreBundle/Tests/Helper/RuleBasedTaggerTest.php @@ -6,8 +6,8 @@ use Wallabag\CoreBundle\Entity\Config; use Wallabag\CoreBundle\Entity\Entry; use Wallabag\CoreBundle\Entity\Tag; use Wallabag\CoreBundle\Entity\TaggingRule; -use Wallabag\UserBundle\Entity\User; use Wallabag\CoreBundle\Helper\RuleBasedTagger; +use Wallabag\UserBundle\Entity\User; class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase { @@ -18,8 +18,8 @@ class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase public function setUp() { - $this->rulerz = $this->getRulerZMock(); - $this->tagRepository = $this->getTagRepositoryMock(); + $this->rulerz = $this->getRulerZMock(); + $this->tagRepository = $this->getTagRepositoryMock(); $this->entryRepository = $this->getEntryRepositoryMock(); $this->tagger = new RuleBasedTagger($this->rulerz, $this->tagRepository, $this->entryRepository); @@ -37,8 +37,8 @@ class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase public function testTagWithNoMatchingRule() { $taggingRule = $this->getTaggingRule('rule as string', array('foo', 'bar')); - $user = $this->getUser([$taggingRule]); - $entry = new Entry($user); + $user = $this->getUser([$taggingRule]); + $entry = new Entry($user); $this->rulerz ->expects($this->once()) @@ -54,8 +54,8 @@ class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase public function testTagWithAMatchingRule() { $taggingRule = $this->getTaggingRule('rule as string', array('foo', 'bar')); - $user = $this->getUser([$taggingRule]); - $entry = new Entry($user); + $user = $this->getUser([$taggingRule]); + $entry = new Entry($user); $this->rulerz ->expects($this->once()) @@ -69,17 +69,15 @@ class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase $tags = $entry->getTags(); $this->assertSame('foo', $tags[0]->getLabel()); - $this->assertSame($user, $tags[0]->getUser()); $this->assertSame('bar', $tags[1]->getLabel()); - $this->assertSame($user, $tags[1]->getUser()); } public function testTagWithAMixOfMatchingRules() { - $taggingRule = $this->getTaggingRule('bla bla', array('hey')); + $taggingRule = $this->getTaggingRule('bla bla', array('hey')); $otherTaggingRule = $this->getTaggingRule('rule as string', array('foo')); - $user = $this->getUser([$taggingRule, $otherTaggingRule]); + $user = $this->getUser([$taggingRule, $otherTaggingRule]); $entry = new Entry($user); $this->rulerz @@ -92,15 +90,14 @@ class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase $tags = $entry->getTags(); $this->assertSame('foo', $tags[0]->getLabel()); - $this->assertSame($user, $tags[0]->getUser()); } public function testWhenTheTagExists() { $taggingRule = $this->getTaggingRule('rule as string', array('foo')); - $user = $this->getUser([$taggingRule]); - $entry = new Entry($user); - $tag = new Tag($user); + $user = $this->getUser([$taggingRule]); + $entry = new Entry($user); + $tag = new Tag(); $this->rulerz ->expects($this->once()) @@ -110,7 +107,9 @@ class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase $this->tagRepository ->expects($this->once()) - ->method('findOneByLabelAndUserId') + // the method `findOneByLabel` doesn't exist, EntityRepository will then call `_call` method + // to magically call the `findOneBy` with ['label' => 'foo'] + ->method('__call') ->willReturn($tag); $this->tagger->tag($entry); @@ -121,9 +120,55 @@ class RuleBasedTaggerTest extends \PHPUnit_Framework_TestCase $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); + } + + public function testTagAllEntriesForAUser() + { + $taggingRule = $this->getTaggingRule('bla bla', array('hey')); + + $user = $this->getUser([$taggingRule]); + + $this->rulerz + ->method('satisfies') + ->willReturn(true); + + $this->rulerz + ->method('filter') + ->willReturn(array(new Entry($user), new Entry($user))); + + $entries = $this->tagger->tagAllForUser($user); + + $this->assertCount(2, $entries); + + foreach ($entries as $entry) { + $tags = $entry->getTags(); + + $this->assertCount(1, $tags); + $this->assertEquals('hey', $tags[0]->getLabel()); + } + } + private function getUser(array $taggingRules = []) { - $user = new User(); + $user = new User(); $config = new Config($user); $user->setConfig($config);