aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag')
-rw-r--r--src/Wallabag/CoreBundle/Controller/ConfigController.php1
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php14
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php42
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php4
4 files changed, 59 insertions, 2 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php
index ccc3e8a1..4f75511b 100644
--- a/src/Wallabag/CoreBundle/Controller/ConfigController.php
+++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php
@@ -140,6 +140,7 @@ class ConfigController extends Controller
140 $config->setItemsPerPage($this->getParameter('wallabag_core.items_on_page')); 140 $config->setItemsPerPage($this->getParameter('wallabag_core.items_on_page'));
141 $config->setRssLimit($this->getParameter('wallabag_core.rss_limit')); 141 $config->setRssLimit($this->getParameter('wallabag_core.rss_limit'));
142 $config->setLanguage($this->getParameter('wallabag_core.language')); 142 $config->setLanguage($this->getParameter('wallabag_core.language'));
143 $config->setReadingSpeed($this->getParameter('wallabag_core.reading_speed'));
143 144
144 $em->persist($config); 145 $em->persist($config);
145 146
diff --git a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
index dcdb3ab7..cd4d3490 100644
--- a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
@@ -35,6 +35,20 @@ class EntryFilterType extends AbstractType
35 { 35 {
36 $builder 36 $builder
37 ->add('readingTime', NumberRangeFilterType::class, [ 37 ->add('readingTime', NumberRangeFilterType::class, [
38 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
39 $value = $values['value'];
40
41 if (null === $value['left_number'][0] || null === $value['right_number'][0]) {
42 return;
43 }
44
45 $min = (int) ($value['left_number'][0] * $this->user->getConfig()->getReadingSpeed());
46 $max = (int) ($value['right_number'][0] * $this->user->getConfig()->getReadingSpeed());
47
48 $expression = $filterQuery->getExpr()->between($field, $min, $max);
49
50 return $filterQuery->createCondition($expression);
51 },
38 'label' => 'entry.filters.reading_time.label', 52 'label' => 'entry.filters.reading_time.label',
39 ]) 53 ])
40 ->add('createdAt', DateRangeFilterType::class, [ 54 ->add('createdAt', DateRangeFilterType::class, [
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
index 1aa1a7ed..8cdedfda 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
@@ -60,6 +60,43 @@ class ConfigControllerTest extends WallabagCoreTestCase
60 $this->assertContains('flashes.config.notice.config_saved', $alert[0]); 60 $this->assertContains('flashes.config.notice.config_saved', $alert[0]);
61 } 61 }
62 62
63 public function testChangeReadingSpeed()
64 {
65 $this->logInAs('admin');
66 $client = $this->getClient();
67
68 $crawler = $client->request('GET', '/unread/list');
69 $form = $crawler->filter('button[id=submit-filter]')->form();
70 $dataFilters = [
71 'entry_filter[readingTime][right_number]' => 22,
72 'entry_filter[readingTime][left_number]' => 22,
73 ];
74 $crawler = $client->submit($form, $dataFilters);
75 $this->assertCount(1, $crawler->filter('div[class=entry]'));
76
77 // Change reading speed
78 $crawler = $client->request('GET', '/config');
79 $form = $crawler->filter('button[id=config_save]')->form();
80 $data = [
81 'config[reading_speed]' => '2',
82 ];
83 $client->submit($form, $data);
84
85 // Is the entry still available via filters?
86 $crawler = $client->request('GET', '/unread/list');
87 $form = $crawler->filter('button[id=submit-filter]')->form();
88 $crawler = $client->submit($form, $dataFilters);
89 $this->assertCount(0, $crawler->filter('div[class=entry]'));
90
91 // Restore old configuration
92 $crawler = $client->request('GET', '/config');
93 $form = $crawler->filter('button[id=config_save]')->form();
94 $data = [
95 'config[reading_speed]' => '0.5',
96 ];
97 $client->submit($form, $data);
98 }
99
63 public function dataForUpdateFailed() 100 public function dataForUpdateFailed()
64 { 101 {
65 return [ 102 return [
@@ -355,6 +392,11 @@ class ConfigControllerTest extends WallabagCoreTestCase
355 392
356 $this->assertTrue(false !== $user); 393 $this->assertTrue(false !== $user);
357 $this->assertTrue($user->isEnabled()); 394 $this->assertTrue($user->isEnabled());
395 $this->assertEquals('material', $user->getConfig()->getTheme());
396 $this->assertEquals(12, $user->getConfig()->getItemsPerPage());
397 $this->assertEquals(50, $user->getConfig()->getRssLimit());
398 $this->assertEquals('en', $user->getConfig()->getLanguage());
399 $this->assertEquals(1, $user->getConfig()->getReadingSpeed());
358 } 400 }
359 401
360 public function testRssUpdateResetToken() 402 public function testRssUpdateResetToken()
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
index 64ebd631..df4c34cd 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
@@ -462,8 +462,8 @@ class EntryControllerTest extends WallabagCoreTestCase
462 $form = $crawler->filter('button[id=submit-filter]')->form(); 462 $form = $crawler->filter('button[id=submit-filter]')->form();
463 463
464 $data = [ 464 $data = [
465 'entry_filter[readingTime][right_number]' => 11, 465 'entry_filter[readingTime][right_number]' => 22,
466 'entry_filter[readingTime][left_number]' => 11, 466 'entry_filter[readingTime][left_number]' => 22,
467 ]; 467 ];
468 468
469 $crawler = $client->submit($form, $data); 469 $crawler = $client->submit($form, $data);