3 namespace Tests\Wallabag\CoreBundle\Helper
;
5 use Wallabag\CoreBundle\Entity\Entry
;
6 use Wallabag\CoreBundle\Entity\Tag
;
7 use Wallabag\CoreBundle\Helper\TagsAssigner
;
8 use Wallabag\UserBundle\Entity\User
;
9 use Wallabag\CoreBundle\Repository\TagRepository
;
11 class TagsAssignerTest
extends \PHPUnit_Framework_TestCase
13 public function testAssignTagsWithArrayAndExtraSpaces()
15 $tagRepo = $this->getTagRepositoryMock();
16 $tagsAssigner = new TagsAssigner($tagRepo);
18 $entry = new Entry(new User());
20 $tagsAssigner->assignTagsToEntry($entry, [' tag1', 'tag2 ']);
22 $this->assertCount(2, $entry->getTags());
23 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
24 $this->assertEquals('tag2', $entry->getTags()[1]->getLabel());
27 public function testAssignTagsWithString()
29 $tagRepo = $this->getTagRepositoryMock();
30 $tagsAssigner = new TagsAssigner($tagRepo);
32 $entry = new Entry(new User());
34 $tagsAssigner->assignTagsToEntry($entry, 'tag1, tag2');
36 $this->assertCount(2, $entry->getTags());
37 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
38 $this->assertEquals('tag2', $entry->getTags()[1]->getLabel());
41 public function testAssignTagsWithEmptyArray()
43 $tagRepo = $this->getTagRepositoryMock();
44 $tagsAssigner = new TagsAssigner($tagRepo);
46 $entry = new Entry(new User());
48 $tagsAssigner->assignTagsToEntry($entry, []);
50 $this->assertCount(0, $entry->getTags());
53 public function testAssignTagsWithEmptyString()
55 $tagRepo = $this->getTagRepositoryMock();
56 $tagsAssigner = new TagsAssigner($tagRepo);
58 $entry = new Entry(new User());
60 $tagsAssigner->assignTagsToEntry($entry, '');
62 $this->assertCount(0, $entry->getTags());
65 public function testAssignTagsAlreadyAssigned()
67 $tagRepo = $this->getTagRepositoryMock();
68 $tagsAssigner = new TagsAssigner($tagRepo);
70 $tagEntity = new Tag();
71 $tagEntity->setLabel('tag1');
73 $entry = new Entry(new User());
74 $entry->addTag($tagEntity);
76 $tagsAssigner->assignTagsToEntry($entry, 'tag1, tag2');
78 $this->assertCount(2, $entry->getTags());
79 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
80 $this->assertEquals('tag2', $entry->getTags()[1]->getLabel());
83 public function testAssignTagsNotFlushed()
85 $tagRepo = $this->getTagRepositoryMock();
86 $tagRepo->expects($this->never())
89 $tagsAssigner = new TagsAssigner($tagRepo);
91 $tagEntity = new Tag();
92 $tagEntity->setLabel('tag1');
94 $entry = new Entry(new User());
96 $tagsAssigner->assignTagsToEntry($entry, 'tag1', [$tagEntity]);
98 $this->assertCount(1, $entry->getTags());
99 $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
102 private function getTagRepositoryMock()
104 return $this->getMockBuilder(TagRepository
::class)
105 ->disableOriginalConstructor()