]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
First draft for tests
authorNicolas Lœuillet <nicolas@loeuillet.org>
Fri, 24 Apr 2020 14:06:06 +0000 (16:06 +0200)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Tue, 28 Apr 2020 08:14:46 +0000 (10:14 +0200)
src/Wallabag/CoreBundle/Controller/EntryController.php
src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php

index 6e56c2373313dde73d3bf3cd52f6937ce672a6d8..56759adba0625ad5b71b74680bde2dbb1ad980d6 100644 (file)
@@ -532,13 +532,17 @@ class EntryController extends Controller
         $repository = $this->get('wallabag_core.entry_repository');
         $searchTerm = (isset($request->get('search_entry')['term']) ? $request->get('search_entry')['term'] : '');
         $currentRoute = (null !== $request->query->get('currentRoute') ? $request->query->get('currentRoute') : '');
-        $direction = (null !== $request->query->get('entry_sort')['sortOrder'] ? $request->query->get('entry_sort')['sortOrder'] : 'asc');
-
-        // defined as null by default because each repository method have the right field as default value too
-        // like `getBuilderForStarredByUser` will have `starredAt` sort by default
+        $direction = 'asc';
         $sortBy = null;
-        if (\in_array($request->get('entry_sort')['sortType'], ['id', 'title', 'createdAt', 'updatedAt', 'starredAt', 'archivedAt'], true)) {
-            $sortBy = $request->get('entry_sort')['sortType'];
+
+        if (null !== ($request->query->get('entry_sort'))) {
+            $direction = (null !== $request->query->get('entry_sort')['sortOrder'] ? $request->query->get('entry_sort')['sortOrder'] : 'asc');
+
+            // defined as null by default because each repository method have the right field as default value too
+            // like `getBuilderForStarredByUser` will have `starredAt` sort by default
+            if (\in_array($request->get('entry_sort')['sortType'], ['id', 'title', 'createdAt', 'updatedAt', 'starredAt', 'archivedAt'], true)) {
+                $sortBy = $request->get('entry_sort')['sortType'];
+            }
         }
 
         switch ($type) {
index 99425d5a750761f96fc855fc91e1735732bcb4b3..c7699ef04c6d8730e77b3857f55ca60e65d37f0a 100644 (file)
@@ -267,6 +267,7 @@ entry:
             last_updated: 'Last updated'
         ascending: 'Ascending'
         descending: 'Descending'
+        sort: 'Sort'
     view:
         left_menu:
             back_to_top: 'Back to top'
index 505a739b2e84c61cc612316621aa2a5fe0fcf487..2c8224bbcbe35ed6e141163e4a013dce68f5a76c 100644 (file)
     <!-- Sort -->
     {% if sortForm is not null %}
     <div id="sort" class="side-nav right-aligned">
-        <form action="{{ previousRoute }}">
+        <form>
         <h4 class="center">{{ 'entry.sort.title'|trans }}</h4>
 
             <div class="row">
                 </div>
 
                 <div class="col s12">
-                    <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
+                    <button class="btn waves-effect waves-light" type="submit" id="submit-sort" value="sort">{{ 'entry.sort.action.sort'|trans }}</button>
                 </div>
             </div>
         </form>
index 0aa562d80787e772ee1910391ca9b68fc6a26245..15f05d489e80dc4d582f7a4db18ee5b8b946970c 100644 (file)
@@ -1015,6 +1015,52 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertCount(2, $crawler->filter('li.entry'));
     }
 
+    public function testSortOnTitle()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $crawler = $client->request('GET', '/unread/list');
+        $form = $crawler->filter('button[id=submit-sort]')->form();
+        $data = [
+            'entry_sort[sortType]' => 'title',
+            'entry_sort[sortOrder]' => 'asc',
+        ];
+        $crawler = $client->submit($form, $data);
+
+        $this->assertCount(4, $crawler->filter('li.entry'));
+
+        $matches = [];
+        preg_match_all('/test title entry([0-9])/', $client->getResponse()->getContent(), $matches);
+
+        $results = array_values(array_unique($matches[0]));
+
+        $ids = [1, 2, 4, 5];
+
+        foreach ($results as $key => $result) {
+            $this->assertSame('test title entry' . $ids[$key], $result);
+        }
+
+        rsort($ids);
+
+        $crawler = $client->request('GET', '/unread/list');
+        $form = $crawler->filter('button[id=submit-sort]')->form();
+        $data = [
+            'entry_sort[sortType]' => 'title',
+            'entry_sort[sortOrder]' => 'desc',
+        ];
+        $crawler = $client->submit($form, $data);
+
+        $matches = [];
+        preg_match_all('/test title entry([0-9])/', $client->getResponse()->getContent(), $matches);
+
+        $results = array_values(array_unique($matches[0]));
+
+        foreach ($results as $key => $result) {
+            $this->assertSame('test title entry' . $ids[$key], $result);
+        }
+    }
+
     public function testShareEntryPublicly()
     {
         $this->logInAs('admin');