summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2019-03-15 10:51:22 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2019-03-15 10:51:22 +0000
commite26ab0d4a251cc8fcd476a6140bccfcd24a9c446 (patch)
treeff241ea8d3fa68a09572ce776484d23274c002e8
parentc5c335924b8e8b3f5f8a631f918d07416536c9fd (diff)
downloadredmine-e26ab0d4a251cc8fcd476a6140bccfcd24a9c446.tar.gz
redmine-e26ab0d4a251cc8fcd476a6140bccfcd24a9c446.zip
Show recent documents first (#29725).
Patch by Yuichi HARADA. git-svn-id: http://svn.redmine.org/redmine/trunk@17972 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/documents_controller.rb3
-rw-r--r--app/views/documents/index.html.erb2
-rw-r--r--test/fixtures/attachments.yml13
-rw-r--r--test/fixtures/documents.yml7
-rw-r--r--test/functional/documents_controller_test.rb37
-rw-r--r--test/unit/project_copy_test.rb2
6 files changed, 57 insertions, 7 deletions
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
index e458d838a..fbd2b4136 100644
--- a/app/controllers/documents_controller.rb
+++ b/app/controllers/documents_controller.rb
@@ -33,7 +33,8 @@ class DocumentsController < ApplicationController
documents = @project.documents.includes(:attachments, :category).to_a
case @sort_by
when 'date'
- @grouped = documents.group_by {|d| d.updated_on.to_date }
+ documents.sort!{|a,b| b.updated_on <=> a.updated_on}
+ @grouped = documents.group_by {|d| d.updated_on.to_date}
when 'title'
@grouped = documents.group_by {|d| d.title.first.upcase}
when 'author'
diff --git a/app/views/documents/index.html.erb b/app/views/documents/index.html.erb
index fc4090f55..c0458f8bf 100644
--- a/app/views/documents/index.html.erb
+++ b/app/views/documents/index.html.erb
@@ -18,7 +18,7 @@
<% if @grouped.empty? %><p class="nodata"><%= l(:label_no_data) %></p><% end %>
-<% @grouped.keys.sort.each do |group| %>
+<% @grouped.keys.sort.__send__(@sort_by == 'date' ? :reverse_each : :each) do |group| %>
<h3><%= group %></h3>
<%= render :partial => 'documents/document', :collection => @grouped[group] %>
<% end %>
diff --git a/test/fixtures/attachments.yml b/test/fixtures/attachments.yml
index 1b8740f49..15556c6c6 100644
--- a/test/fixtures/attachments.yml
+++ b/test/fixtures/attachments.yml
@@ -268,3 +268,16 @@ attachments_020:
filename: root_attachment.txt
filesize: 54
author_id: 2
+attachments_021:
+ created_on: 2007-03-05 15:08:27 +01:00
+ container_type: Document
+ container_id: 3
+ downloads: 0
+ disk_filename: 060719210727_archive.zip
+ disk_directory: "2006/07"
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 21
+ filesize: 157
+ filename: archive.zip
+ author_id: 1
+ content_type: application/zip
diff --git a/test/fixtures/documents.yml b/test/fixtures/documents.yml
index eda9a1046..b96fab6cf 100644
--- a/test/fixtures/documents.yml
+++ b/test/fixtures/documents.yml
@@ -12,3 +12,10 @@ documents_002:
id: 2
description: ""
category_id: 1
+documents_003:
+ created_on: 2007-03-05 15:08:27 +01:00
+ project_id: 1
+ title: "An other document 2"
+ id: 3
+ description: ""
+ category_id: 3
diff --git a/test/functional/documents_controller_test.rb b/test/functional/documents_controller_test.rb
index ce43b5097..81cfec4c7 100644
--- a/test/functional/documents_controller_test.rb
+++ b/test/functional/documents_controller_test.rb
@@ -47,13 +47,32 @@ class DocumentsControllerTest < Redmine::ControllerTest
end
end
+ def test_index_grouped_by_category
+ get :index, :params => {
+ :project_id => 'ecookbook',
+ :sort_by => 'category'
+ }
+ assert_response :success
+ assert_select '#content' do
+ # ascending order of DocumentCategory#id.
+ ['Uncategorized', 'Technical documentation'].each_with_index do |text,idx|
+ assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+ end
+ end
+ end
+
def test_index_grouped_by_date
get :index, :params => {
:project_id => 'ecookbook',
:sort_by => 'date'
}
assert_response :success
- assert_select 'h3', :text => '2007-02-12'
+ assert_select '#content' do
+ # descending order of date.
+ ['2007-03-05', '2007-02-12'].each_with_index do |text,idx|
+ assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+ end
+ end
end
def test_index_grouped_by_title
@@ -62,7 +81,12 @@ class DocumentsControllerTest < Redmine::ControllerTest
:sort_by => 'title'
}
assert_response :success
- assert_select 'h3', :text => 'T'
+ assert_select '#content' do
+ # ascending order of title.
+ ['A', 'T'].each_with_index do |text,idx|
+ assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+ end
+ end
end
def test_index_grouped_by_author
@@ -71,8 +95,13 @@ class DocumentsControllerTest < Redmine::ControllerTest
:sort_by => 'author'
}
assert_response :success
- assert_select 'h3', :text => 'John Smith'
- end
+ assert_select '#content' do
+ # ascending order of author.
+ ['John Smith', 'Redmine Admin'].each_with_index do |text,idx|
+ assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+ end
+ end
+ end
def test_index_with_long_description
# adds a long description to the first document
diff --git a/test/unit/project_copy_test.rb b/test/unit/project_copy_test.rb
index 371de906c..318251c39 100644
--- a/test/unit/project_copy_test.rb
+++ b/test/unit/project_copy_test.rb
@@ -371,7 +371,7 @@ class ProjectCopyTest < ActiveSupport::TestCase
source_project = Project.find(1)
assert @project.copy(source_project)
- assert_equal 2, @project.documents.size
+ assert_equal 3, @project.documents.size
@project.documents.each do |document|
assert !source_project.documents.include?(document)
end