]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Check if status code is OK 2601/head
authorNicolas Lœuillet <nicolas@loeuillet.org>
Fri, 18 Nov 2016 22:05:02 +0000 (23:05 +0100)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Fri, 18 Nov 2016 22:05:02 +0000 (23:05 +0100)
src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php

index 38321d17b05855ea596b02aa5c784370da24031a..8e2883f766a5614ffe5a0ed449e33c9e20dd2c17 100644 (file)
@@ -11,6 +11,7 @@ use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\CheckboxFilterType;
 use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\ChoiceFilterType;
 use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\FormBuilderInterface;
+use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\OptionsResolver\OptionsResolver;
 use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
 
@@ -91,6 +92,18 @@ class EntryFilterType extends AbstractType
                 'label' => 'entry.filters.domain_label',
             ])
             ->add('httpStatus', TextFilterType::class, [
+                'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
+                    $value = $values['value'];
+                    if (false === array_key_exists($value, Response::$statusTexts)) {
+                        return;
+                    }
+
+                    $paramName = sprintf('%s', str_replace('.', '_', $field));
+                    $expression = $filterQuery->getExpr()->eq($field, ':'.$paramName);
+                    $parameters = array($paramName => $value);
+
+                    return $filterQuery->createCondition($expression, $parameters);
+                },
                 'label' => 'entry.filters.http_status_label',
             ])
             ->add('isArchived', CheckboxFilterType::class, [
index 771903fe0dd810e8bd4454089312d5b822fcfef3..09cf01b8c51e8e90882fa72112db9ef8bb93ebb0 100644 (file)
@@ -1006,5 +1006,16 @@ class EntryControllerTest extends WallabagCoreTestCase
         $crawler = $client->submit($form, $data);
 
         $this->assertCount(1, $crawler->filter('div[class=entry]'));
+
+        $crawler = $client->request('GET', '/all/list');
+        $form = $crawler->filter('button[id=submit-filter]')->form();
+
+        $data = [
+            'entry_filter[httpStatus]' => 1024,
+        ];
+
+        $crawler = $client->submit($form, $data);
+
+        $this->assertCount(7, $crawler->filter('div[class=entry]'));
     }
 }