From a7e2218e253138ed53e18b4775dce291c78246c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 15 Apr 2016 13:42:13 +0200 Subject: [PATCH] Add test and fix migration --- .../Version20160410190541.php | 35 ++++++++++++++++--- src/Wallabag/CoreBundle/Entity/Entry.php | 3 +- .../Controller/EntryControllerTest.php | 18 ++++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/app/DoctrineMigrations/Version20160410190541.php b/app/DoctrineMigrations/Version20160410190541.php index b30a898c4..775dd6804 100644 --- a/app/DoctrineMigrations/Version20160410190541.php +++ b/app/DoctrineMigrations/Version20160410190541.php @@ -4,16 +4,43 @@ namespace Application\Migrations; use Doctrine\DBAL\Migrations\AbstractMigration; use Doctrine\DBAL\Schema\Schema; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Wallabag\CoreBundle\Entity\Entry; -class Version20160410190541 extends AbstractMigration +class Version20160410190541 extends AbstractMigration implements ContainerAwareInterface { + /** + * @var ContainerInterface + */ + private $container; + + public function setContainer(ContainerInterface $container = null) + { + $this->container = $container; + } + /** * @param Schema $schema */ public function up(Schema $schema) { - $this->addSql('ALTER TABLE wallabag_entry ADD uuid LONGTEXT DEFAULT NULL'); - $this->addSql('UPDATE wallabag_entry SET uuid = uuid()'); + $this->addSql('ALTER TABLE `wallabag_entry` ADD `uuid` LONGTEXT DEFAULT NULL'); + + $em = $this->container->get('doctrine.orm.entity_manager'); + $queryBuilder = $this->connection->createQueryBuilder(); + $queryBuilder + ->select('e.uuid') + ->andWhere('e.uuid IS NULL'); + $entries = $queryBuilder->execute(); + + /** @var Entry $entry */ + foreach ($entries as $entry) { + $entry->generateUuid(); + $em->persist($entry); + $em->clear(); + } + $em->flush(); } /** @@ -21,6 +48,6 @@ class Version20160410190541 extends AbstractMigration */ public function down(Schema $schema) { - $this->addSql('ALTER TABLE `wallabag_entry` DROP uuid'); + $this->addSql('ALTER TABLE `wallabag_entry` DROP `uuid`'); } } diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 3c7428285..a629efc76 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -630,7 +630,8 @@ class Entry public function generateUuid() { if (empty($this->uuid) || is_null($this->uuid)) { - $this->uuid = uniqid(); + // @see http://blog.kevingomez.fr/til/2015/07/26/why-is-uniqid-slow/ for true parameter + $this->uuid = uniqid('', true); } } } diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index 5c739c78a..3b54f0577 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php @@ -698,4 +698,22 @@ class EntryControllerTest extends WallabagCoreTestCase $crawler = $client->submit($form, $data); $this->assertCount(2, $crawler->filter('div[class=entry]')); } + + public function testCache() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $content = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneByUser($this->getLoggedInUserId()); + + $client->request('GET', '/share/'.$content->getUuid()); + $this->assertContains('max-age=25200, public', $client->getResponse()->headers->get('cache-control')); + $this->assertNotContains('no-cache', $client->getResponse()->headers->get('cache-control')); + + $client->request('GET', '/view/'.$content->getId()); + $this->assertContains('no-cache', $client->getResponse()->headers->get('cache-control')); + } }