1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-08-01 17:38:38 +00:00

Allow to remove all archived entries

Since we still support fucking SQLite, we need to retrieve all tags & annotations for archived entries before deleting them.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2017-03-30 16:24:59 +02:00 committed by Nicolas Lœuillet
parent fa884b30ba
commit 6da1aebc94
18 changed files with 205 additions and 1 deletions

View file

@ -803,6 +803,82 @@ class ConfigControllerTest extends WallabagCoreTestCase
$this->assertEquals(0, $entryReset, 'Entries were reset');
}
public function testResetArchivedEntries()
{
$this->logInAs('empty');
$client = $this->getClient();
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
$user = static::$kernel->getContainer()->get('security.token_storage')->getToken()->getUser();
$tag = new Tag();
$tag->setLabel('super');
$em->persist($tag);
$entry = new Entry($user);
$entry->setUrl('http://www.lemonde.fr/europe/article/2016/10/01/pour-le-psoe-chaque-election-s-est-transformee-en-une-agonie_5006476_3214.html');
$entry->setContent('Youhou');
$entry->setTitle('Youhou');
$entry->addTag($tag);
$em->persist($entry);
$annotation = new Annotation($user);
$annotation->setText('annotated');
$annotation->setQuote('annotated');
$annotation->setRanges([]);
$annotation->setEntry($entry);
$em->persist($annotation);
$tagArchived = new Tag();
$tagArchived->setLabel('super');
$em->persist($tagArchived);
$entryArchived = new Entry($user);
$entryArchived->setUrl('http://www.lemonde.fr/europe/article/2016/10/01/pour-le-psoe-chaque-election-s-est-transformee-en-une-agonie_5006476_3214.html');
$entryArchived->setContent('Youhou');
$entryArchived->setTitle('Youhou');
$entryArchived->addTag($tagArchived);
$entryArchived->setArchived(true);
$em->persist($entryArchived);
$annotationArchived = new Annotation($user);
$annotationArchived->setText('annotated');
$annotationArchived->setQuote('annotated');
$annotationArchived->setRanges([]);
$annotationArchived->setEntry($entryArchived);
$em->persist($annotationArchived);
$em->flush();
$crawler = $client->request('GET', '/config#set3');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
$crawler = $client->click($crawler->selectLink('config.reset.archived')->link());
$this->assertEquals(302, $client->getResponse()->getStatusCode());
$this->assertContains('flashes.config.notice.archived_reset', $client->getContainer()->get('session')->getFlashBag()->get('notice')[0]);
$entryReset = $em
->getRepository('WallabagCoreBundle:Entry')
->countAllEntriesByUsername($user->getId());
$this->assertEquals(1, $entryReset, 'Entries were reset');
$tagReset = $em
->getRepository('WallabagCoreBundle:Tag')
->countAllTags($user->getId());
$this->assertEquals(1, $tagReset, 'Tags were reset');
$annotationsReset = $em
->getRepository('WallabagAnnotationBundle:Annotation')
->findAnnotationsByPageId($annotationArchived->getId(), $user->getId());
$this->assertEmpty($annotationsReset, 'Annotations were reset');
}
public function testResetEntriesCascade()
{
$this->logInAs('empty');