aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorKevin Decherf <kevin@kdecherf.com>2019-05-11 20:07:38 +0200
committerKevin Decherf <kevin@kdecherf.com>2019-05-19 23:37:49 +0200
commitfeb239ea1006685ab3862c988309a1a5a9659559 (patch)
tree034e26b367d06796a4f7888847cff76b1401ad7a /tests
parentde1162b91a205a98a3f8ed01bd80285793b18380 (diff)
downloadwallabag-feb239ea1006685ab3862c988309a1a5a9659559.tar.gz
wallabag-feb239ea1006685ab3862c988309a1a5a9659559.tar.zst
wallabag-feb239ea1006685ab3862c988309a1a5a9659559.zip
mysql: change collation of tag table
utf8mb4_unicode_ci considers that 'caché' is equal to 'cache' which can lead to attaching incorrect tags to entries. This issue is due to some unicode normalization done by MySQL. utf8mb4_bin makes no unicode normalization, letting wallabag to consider 'cache' and 'caché' as two different tags. We change the collation of the whole table as Doctrine does not support setting a collation on a column for a specific platform (it tries to apply utf8mb4_bin even for pgsql and sqlite). Fixes #3302 Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/Wallabag/CoreBundle/Controller/TagControllerTest.php46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
index be17dcf5..47c83a7b 100644
--- a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
@@ -221,4 +221,50 @@ class TagControllerTest extends WallabagCoreTestCase
221 $this->assertInstanceOf(Tag::class, $newTag, 'Tag "specific label" exists.'); 221 $this->assertInstanceOf(Tag::class, $newTag, 'Tag "specific label" exists.');
222 $this->assertTrue($newTag->hasEntry($freshEntry), 'Tag "specific label" is assigned to the entry.'); 222 $this->assertTrue($newTag->hasEntry($freshEntry), 'Tag "specific label" is assigned to the entry.');
223 } 223 }
224
225 public function testAddUnicodeTagLabel()
226 {
227 $this->logInAs('admin');
228 $client = $this->getClient();
229
230 $entry = new Entry($this->getLoggedInUser());
231 $entry->setUrl('http://0.0.0.0/tag-caché');
232 $this->getEntityManager()->persist($entry);
233 $this->getEntityManager()->flush();
234 $this->getEntityManager()->clear();
235
236 $crawler = $client->request('GET', '/view/' . $entry->getId());
237
238 $form = $crawler->filter('form[name=tag]')->form();
239
240 $data = [
241 'tag[label]' => 'cache',
242 ];
243
244 $client->submit($form, $data);
245
246 $crawler = $client->request('GET', '/view/' . $entry->getId());
247
248 $form = $crawler->filter('form[name=tag]')->form();
249
250 $data = [
251 'tag[label]' => 'caché',
252 ];
253
254 $client->submit($form, $data);
255
256 $newEntry = $client->getContainer()
257 ->get('doctrine.orm.entity_manager')
258 ->getRepository('WallabagCoreBundle:Entry')
259 ->find($entry->getId());
260
261 $tags = $newEntry->getTags()->toArray();
262 foreach ($tags as $key => $tag) {
263 $tags[$key] = $tag->getLabel();
264 }
265
266 $this->assertGreaterThanOrEqual(2, \count($tags));
267 $this->assertNotFalse(array_search('cache', $tags, true), 'Tag cache is assigned to the entry');
268 $this->assertNotFalse(array_search('caché', $tags, true), 'Tag caché is assigned to the entry');
269 }
224} 270}