Adding tests for tagging rules reset

Fix test: associate tagging rule with user config

Update src/Repository/TaggingRuleRepository.php

Co-authored-by: Jérémy Benoist <j0k3r@users.noreply.github.com>

Update src/Controller/ConfigController.php

Co-authored-by: Jérémy Benoist <j0k3r@users.noreply.github.com>

Update src/Repository/TaggingRuleRepository.php

Co-authored-by: Jérémy Benoist <j0k3r@users.noreply.github.com>
This commit is contained in:
Kevin Jiang 2024-07-07 01:06:22 +12:00 committed by Sicong Jiang
parent c65850050d
commit 897aa1d309
3 changed files with 26 additions and 3 deletions

View file

@ -576,7 +576,7 @@ class ConfigController extends AbstractController
$annotationRepository->removeAllByUserId($this->getUser()->getId()); $annotationRepository->removeAllByUserId($this->getUser()->getId());
break; break;
case 'tagging_rules': case 'tagging_rules':
$taggingRuleRepository->removeAllTaggingRules($this->getConfig()->getId()); $taggingRuleRepository->removeAllByConfigId($this->getConfig()->getId());
break; break;
case 'tags': case 'tags':
$this->removeAllTagsByUserId($this->getUser()->getId()); $this->removeAllTagsByUserId($this->getUser()->getId());

View file

@ -14,12 +14,12 @@ class TaggingRuleRepository extends ServiceEntityRepository
} }
/** /**
* Remove all tagging rule for a config. * Remove all tagging rules for a config.
* Used when a user wants to reset. * Used when a user wants to reset.
* *
* @param int $configId * @param int $configId
*/ */
public function removeAllTaggingRules($configId) public function removeAllByConfigId($configId)
{ {
$this->getEntityManager() $this->getEntityManager()
->createQuery('DELETE FROM Wallabag\Entity\TaggingRule tr WHERE tr.config = :configId') ->createQuery('DELETE FROM Wallabag\Entity\TaggingRule tr WHERE tr.config = :configId')

View file

@ -870,6 +870,12 @@ class ConfigControllerTest extends WallabagTestCase
$tag->setLabel('super'); $tag->setLabel('super');
$em->persist($tag); $em->persist($tag);
$taggingRule = new TaggingRule();
$taggingRule->setConfig($user->getConfig());
$taggingRule->setRule('readingTime <= 30');
$taggingRule->setTags(['aTestTag']);
$em->persist($taggingRule);
$entry = new Entry($user); $entry = new Entry($user);
$entry->setUrl('https://www.lemonde.fr/europe/article/2016/10/01/pour-le-psoe-chaque-election-s-est-transformee-en-une-agonie_5006476_3214.html'); $entry->setUrl('https://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->setContent('Youhou');
@ -910,6 +916,23 @@ class ConfigControllerTest extends WallabagTestCase
$this->assertEmpty($annotationsReset, 'Annotations were reset'); $this->assertEmpty($annotationsReset, 'Annotations were reset');
// reset taggingRules
$crawler = $client->request('GET', '/config#set3');
$this->assertSame(200, $client->getResponse()->getStatusCode());
$form = $crawler->filter('form[name=reset-tagging-rules]')->form();
$client->submit($form);
$this->assertSame(302, $client->getResponse()->getStatusCode());
$this->assertStringContainsString('flashes.config.notice.tagging_rules_reset', $client->getContainer()->get(SessionInterface::class)->getFlashBag()->get('notice')[0]);
$taggingRuleReset = $em
->getRepository(TaggingRule::class)
->count(['config' => $user->getConfig()]);
$this->assertSame(0, $taggingRuleReset, 'Tagging rules were reset');
// reset tags // reset tags
$crawler = $client->request('GET', '/config#set3'); $crawler = $client->request('GET', '/config#set3');