From 925fbe92633a0484f04d06ec7cdaf7ca88f0c354 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Sat, 20 Jun 2020 06:50:28 +0000 Subject: [PATCH] Ordering wiki pages should not be case sensitive (#31287). Patch by Yuichi HARADA. git-svn-id: http://svn.redmine.org/redmine/trunk@19831 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/wiki_controller.rb | 2 -- app/models/wiki.rb | 2 +- test/functional/wiki_controller_test.rb | 11 ++++++++--- test/unit/wiki_test.rb | 10 ++++++++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index fdb523cb6..b3d6e8efd 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -306,7 +306,6 @@ class WikiController < ApplicationController # Export wiki to a single pdf or html file def export @pages = @wiki.pages. - order('title'). includes([:content, {:attachments => :author}]). to_a respond_to do |format| @@ -391,7 +390,6 @@ class WikiController < ApplicationController def load_pages_for_index @pages = @wiki.pages.with_updated_on. - reorder("#{WikiPage.table_name}.title"). includes(:wiki => :project). includes(:parent). to_a diff --git a/app/models/wiki.rb b/app/models/wiki.rb index 1d98c2afd..8173fb212 100644 --- a/app/models/wiki.rb +++ b/app/models/wiki.rb @@ -20,7 +20,7 @@ class Wiki < ActiveRecord::Base include Redmine::SafeAttributes belongs_to :project - has_many :pages, lambda {order('title')}, :class_name => 'WikiPage', :dependent => :destroy + has_many :pages, lambda {order(Arel.sql('LOWER(title)').asc)}, :class_name => 'WikiPage', :dependent => :destroy has_many :redirects, :class_name => 'WikiRedirect' acts_as_watchable diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index b75bdaae8..d299c357f 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -995,11 +995,11 @@ class WikiControllerTest < Redmine::ControllerTest end assert_select 'ul.pages-hierarchy' do - assert_select 'li' do - assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation', :text => 'CookBook documentation' + assert_select 'li:nth-child(1) > a[href=?]', '/projects/ecookbook/wiki/Another_page', :text => 'Another page' + assert_select 'li:nth-child(2)' do + assert_select '> a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation', :text => 'CookBook documentation' assert_select 'ul li a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image', :text => 'Page with an inline image' end - assert_select 'li a[href=?]', '/projects/ecookbook/wiki/Another_page', :text => 'Another page' end end @@ -1015,6 +1015,11 @@ class WikiControllerTest < Redmine::ControllerTest assert_response :success assert_equal "text/html", @response.media_type + assert_select 'ul.pages-hierarchy' do + assert_select 'li:nth-child(1) > a[href=?]', '#Another_page', :text => 'Another page' + assert_select 'li:nth-child(2) > a[href=?]', '#CookBook_documentation', :text => 'CookBook documentation' + assert_select 'li:nth-child(3) > a[href=?]', '#Page_with_sections', :text => 'Page with sections' + end assert_select "a[name=?]", "CookBook_documentation" assert_select "a[name=?]", "Another_page" assert_select "a[name=?]", "Page_with_an_inline_image" diff --git a/test/unit/wiki_test.rb b/test/unit/wiki_test.rb index cc7ba95aa..0f3e5a27d 100644 --- a/test/unit/wiki_test.rb +++ b/test/unit/wiki_test.rb @@ -52,6 +52,16 @@ class WikiTest < ActiveSupport::TestCase assert_equal page, wiki.find_page('ANOTHER page') end + def test_ordering_pages_should_not_be_case_sensitive + wiki = Wiki.find(1) + wiki.pages.destroy_all + %w(ABc ACd Aac Acc).each do |title| + wiki.pages.create(:title => title) + end + wiki.reload + assert_equal %w(Aac ABc Acc ACd), wiki.pages.pluck(:title) + end + def test_find_page_with_cyrillic_characters wiki = Wiki.find(1) page = WikiPage.find(10) -- 2.39.5