]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #1976 from wallabag/fix-filter-readingTime
authorJeremy Benoist <j0k3r@users.noreply.github.com>
Tue, 3 May 2016 07:05:31 +0000 (09:05 +0200)
committerJeremy Benoist <j0k3r@users.noreply.github.com>
Tue, 3 May 2016 07:05:31 +0000 (09:05 +0200)
Fix filter reading time

src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php

index dcdb3ab72965b3bbcea8920e4384c8d39d342988..cd4d349021e5be8aec4f0ca32b73be1aafc9b379 100644 (file)
@@ -35,6 +35,20 @@ class EntryFilterType extends AbstractType
     {
         $builder
             ->add('readingTime', NumberRangeFilterType::class, [
+                'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
+                    $value = $values['value'];
+
+                    if (null === $value['left_number'][0] || null === $value['right_number'][0]) {
+                        return;
+                    }
+
+                    $min = (int) ($value['left_number'][0] * $this->user->getConfig()->getReadingSpeed());
+                    $max = (int) ($value['right_number'][0] * $this->user->getConfig()->getReadingSpeed());
+
+                    $expression = $filterQuery->getExpr()->between($field, $min, $max);
+
+                    return $filterQuery->createCondition($expression);
+                },
                 'label' => 'entry.filters.reading_time.label',
             ])
             ->add('createdAt', DateRangeFilterType::class, [
index 1f9cfe534572fa993ca229677b38c1dcf1a84707..8cdedfda38bdf66bf6c47cb8f76a78de55830afb 100644 (file)
@@ -60,6 +60,43 @@ class ConfigControllerTest extends WallabagCoreTestCase
         $this->assertContains('flashes.config.notice.config_saved', $alert[0]);
     }
 
+    public function testChangeReadingSpeed()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $crawler = $client->request('GET', '/unread/list');
+        $form = $crawler->filter('button[id=submit-filter]')->form();
+        $dataFilters = [
+            'entry_filter[readingTime][right_number]' => 22,
+            'entry_filter[readingTime][left_number]' => 22,
+        ];
+        $crawler = $client->submit($form, $dataFilters);
+        $this->assertCount(1, $crawler->filter('div[class=entry]'));
+
+        // Change reading speed
+        $crawler = $client->request('GET', '/config');
+        $form = $crawler->filter('button[id=config_save]')->form();
+        $data = [
+            'config[reading_speed]' => '2',
+        ];
+        $client->submit($form, $data);
+
+        // Is the entry still available via filters?
+        $crawler = $client->request('GET', '/unread/list');
+        $form = $crawler->filter('button[id=submit-filter]')->form();
+        $crawler = $client->submit($form, $dataFilters);
+        $this->assertCount(0, $crawler->filter('div[class=entry]'));
+
+        // Restore old configuration
+        $crawler = $client->request('GET', '/config');
+        $form = $crawler->filter('button[id=config_save]')->form();
+        $data = [
+            'config[reading_speed]' => '0.5',
+        ];
+        $client->submit($form, $data);
+    }
+
     public function dataForUpdateFailed()
     {
         return [
index 64ebd6318be8d3d17ee1c39a25741e553be1e20f..df4c34cd8340481de88657d43ef6426d51635abe 100644 (file)
@@ -462,8 +462,8 @@ class EntryControllerTest extends WallabagCoreTestCase
         $form = $crawler->filter('button[id=submit-filter]')->form();
 
         $data = [
-            'entry_filter[readingTime][right_number]' => 11,
-            'entry_filter[readingTime][left_number]' => 11,
+            'entry_filter[readingTime][right_number]' => 22,
+            'entry_filter[readingTime][left_number]' => 22,
         ];
 
         $crawler = $client->submit($form, $data);