3 namespace Tests\Wallabag\CoreBundle\Helper
;
5 use Psr\Log\NullLogger
;
6 use Wallabag\CoreBundle\Helper\ContentProxy
;
7 use Wallabag\CoreBundle\Entity\Entry
;
8 use Wallabag\CoreBundle\Entity\Tag
;
9 use Wallabag\CoreBundle\Helper\TagsAssigner
;
10 use Wallabag\UserBundle\Entity\User
;
11 use Wallabag\CoreBundle\Repository\TagRepository
;
12 use Wallabag\CoreBundle\Helper\RuleBasedTagger
;
14 class TagsAssignerTest
extends \PHPUnit_Framework_TestCase
17 public function testAssignTagsWithArrayAndExtraSpaces()
20 $tagRepo = $this->getTagRepositoryMock();
21 $tagsAssigner = new TagsAssigner($tagRepo);
23 $entry = new Entry(new User());
25 $tagsAssigner->assignTagsToEntry($entry, [' tag1', 'tag2 ']);
27 $this->assertCount(2, $entry->getTags());
28 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
29 $this->assertEquals('tag2', $entry->getTags()[1]->getLabel());
32 public function testAssignTagsWithString()
34 $tagRepo = $this->getTagRepositoryMock();
35 $tagsAssigner = new TagsAssigner($tagRepo);
37 $entry = new Entry(new User());
39 $tagsAssigner->assignTagsToEntry($entry, 'tag1, tag2');
41 $this->assertCount(2, $entry->getTags());
42 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
43 $this->assertEquals('tag2', $entry->getTags()[1]->getLabel());
46 public function testAssignTagsWithEmptyArray()
48 $tagRepo = $this->getTagRepositoryMock();
49 $tagsAssigner = new TagsAssigner($tagRepo);
51 $entry = new Entry(new User());
53 $tagsAssigner->assignTagsToEntry($entry, []);
55 $this->assertCount(0, $entry->getTags());
58 public function testAssignTagsWithEmptyString()
60 $tagRepo = $this->getTagRepositoryMock();
61 $tagsAssigner = new TagsAssigner($tagRepo);
63 $entry = new Entry(new User());
65 $tagsAssigner->assignTagsToEntry($entry, '');
67 $this->assertCount(0, $entry->getTags());
70 public function testAssignTagsAlreadyAssigned()
72 $tagRepo = $this->getTagRepositoryMock();
73 $tagsAssigner = new TagsAssigner($tagRepo);
75 $tagEntity = new Tag();
76 $tagEntity->setLabel('tag1');
78 $entry = new Entry(new User());
79 $entry->addTag($tagEntity);
81 $tagsAssigner->assignTagsToEntry($entry, 'tag1, tag2');
83 $this->assertCount(2, $entry->getTags());
84 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
85 $this->assertEquals('tag2', $entry->getTags()[1]->getLabel());
88 public function testAssignTagsNotFlushed()
91 $tagRepo = $this->getTagRepositoryMock();
92 $tagRepo->expects($this->never())
95 $tagsAssigner = new TagsAssigner($tagRepo);
97 $tagEntity = new Tag();
98 $tagEntity->setLabel('tag1');
100 $entry = new Entry(new User());
102 $tagsAssigner->assignTagsToEntry($entry, 'tag1', [$tagEntity]);
104 $this->assertCount(1, $entry->getTags());
105 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
108 private function getTagRepositoryMock()
110 return $this->getMockBuilder(TagRepository
::class)
111 ->disableOriginalConstructor()