aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php11
-rw-r--r--tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php20
2 files changed, 30 insertions, 1 deletions
diff --git a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
index ee66c728..556578d1 100644
--- a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
@@ -3,6 +3,7 @@
3namespace Wallabag\CoreBundle\Form\Type; 3namespace Wallabag\CoreBundle\Form\Type;
4 4
5use Doctrine\ORM\EntityRepository; 5use Doctrine\ORM\EntityRepository;
6use Lexik\Bundle\FormFilterBundle\Filter\FilterOperands;
6use Lexik\Bundle\FormFilterBundle\Filter\Query\QueryInterface; 7use Lexik\Bundle\FormFilterBundle\Filter\Query\QueryInterface;
7use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\NumberRangeFilterType; 8use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\NumberRangeFilterType;
8use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\DateRangeFilterType; 9use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\DateRangeFilterType;
@@ -33,7 +34,7 @@ class EntryFilterType extends AbstractType
33 $this->user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null; 34 $this->user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
34 35
35 if (null === $this->user || !is_object($this->user)) { 36 if (null === $this->user || !is_object($this->user)) {
36 return null; 37 return;
37 } 38 }
38 } 39 }
39 40
@@ -41,6 +42,14 @@ class EntryFilterType extends AbstractType
41 { 42 {
42 $builder 43 $builder
43 ->add('readingTime', NumberRangeFilterType::class, [ 44 ->add('readingTime', NumberRangeFilterType::class, [
45 'left_number_options' => [
46 'condition_operator' => FilterOperands::OPERATOR_GREATER_THAN_EQUAL,
47 'attr' => ['min' => 0],
48 ],
49 'right_number_options' => [
50 'condition_operator' => FilterOperands::OPERATOR_LOWER_THAN_EQUAL,
51 'attr' => ['min' => 0],
52 ],
44 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { 53 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
45 $lower = $values['value']['left_number'][0]; 54 $lower = $values['value']['left_number'][0];
46 $upper = $values['value']['right_number'][0]; 55 $upper = $values['value']['right_number'][0];
diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
index 3eb6d47f..7db4cf1f 100644
--- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
@@ -591,6 +591,26 @@ class EntryControllerTest extends WallabagCoreTestCase
591 $this->assertCount(1, $crawler->filter('div[class=entry]')); 591 $this->assertCount(1, $crawler->filter('div[class=entry]'));
592 } 592 }
593 593
594 public function testFilterOnReadingTimeWithNegativeValue()
595 {
596 $this->logInAs('admin');
597 $client = $this->getClient();
598
599 $crawler = $client->request('GET', '/unread/list');
600
601 $form = $crawler->filter('button[id=submit-filter]')->form();
602
603 $data = [
604 'entry_filter[readingTime][right_number]' => -22,
605 'entry_filter[readingTime][left_number]' => -22,
606 ];
607
608 $crawler = $client->submit($form, $data);
609
610 // forcing negative value results in no entry displayed
611 $this->assertCount(0, $crawler->filter('div[class=entry]'));
612 }
613
594 public function testFilterOnReadingTimeOnlyUpper() 614 public function testFilterOnReadingTimeOnlyUpper()
595 { 615 {
596 $this->logInAs('admin'); 616 $this->logInAs('admin');