Tag: render tags case-insensitive by storing them in lowercase

Fixes #2502

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
This commit is contained in:
Kevin Decherf 2017-05-21 17:01:59 +02:00
parent 2490f61dca
commit 7036d91fe7
4 changed files with 7 additions and 5 deletions

View file

@ -78,7 +78,7 @@ class Tag
*/
public function setLabel($label)
{
$this->label = $label;
$this->label = mb_convert_case($label, MB_CASE_LOWER);
return $this;
}

View file

@ -45,7 +45,7 @@ class TagsAssigner
}
foreach ($tags as $label) {
$label = trim($label);
$label = trim(mb_convert_case($label, MB_CASE_LOWER));
// avoid empty tag
if (0 === strlen($label)) {

View file

@ -9,6 +9,7 @@ use Wallabag\CoreBundle\Entity\Tag;
class TagControllerTest extends WallabagCoreTestCase
{
public $tagName = 'opensource';
public $caseTagName = 'OpenSource';
public function testList()
{
@ -36,7 +37,7 @@ class TagControllerTest extends WallabagCoreTestCase
$form = $crawler->filter('form[name=tag]')->form();
$data = [
'tag[label]' => $this->tagName,
'tag[label]' => $this->caseTagName,
];
$client->submit($form, $data);
@ -45,6 +46,7 @@ class TagControllerTest extends WallabagCoreTestCase
// be sure to reload the entry
$entry = $this->getEntityManager()->getRepository(Entry::class)->find($entry->getId());
$this->assertCount(1, $entry->getTags());
$this->assertContains($this->tagName, $entry->getTags());
// tag already exists and already assigned
$client->submit($form, $data);
@ -80,7 +82,7 @@ class TagControllerTest extends WallabagCoreTestCase
$form = $crawler->filter('form[name=tag]')->form();
$data = [
'tag[label]' => 'foo2, bar2',
'tag[label]' => 'foo2, Bar2',
];
$client->submit($form, $data);

View file

@ -125,7 +125,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
$tags = $content->getTags();
$this->assertContains('foot', $tags, 'It includes the "foot" tag');
$this->assertContains('Framabag', $tags, 'It includes the "Framabag" tag');
$this->assertContains('framabag', $tags, 'It includes the "framabag" tag');
$this->assertSame(2, count($tags));
$this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());