sort_init 'updated_on', 'desc'
sort_update 'created_on' => "#{Message.table_name}.created_on",
'replies' => "#{Message.table_name}.replies_count",
- 'updated_on' => "#{Message.table_name}.updated_on"
+ 'updated_on' => "COALESCE(last_replies_messages.created_on, #{Message.table_name}.created_on)"
@topic_count = @board.topics.count
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page']
- @topics = @board.topics.reorder("#{Message.table_name}.sticky DESC").order(sort_clause).all(
- :include => [:author, {:last_reply => :author}],
- :limit => @topic_pages.items_per_page,
- :offset => @topic_pages.current.offset)
+ @topics = @board.topics.
+ reorder("#{Message.table_name}.sticky DESC").
+ includes(:last_reply).
+ limit(@topic_pages.items_per_page).
+ offset(@topic_pages.current.offset).
+ order(sort_clause).
+ preload(:author, {:last_reply => :author}).
+ all
@message = Message.new(:board => @board)
render :action => 'show', :layout => !request.xhr?
}
assert topics.first.updated_on < topics.second.updated_on
end
+ def test_show_should_display_message_with_last_reply_first
+ Message.update_all(:sticky => 0)
+
+ # Reply to an old topic
+ old_topic = Message.where(:board_id => 1, :parent_id => nil).order('created_on ASC').first
+ reply = Message.new(:board_id => 1, :subject => 'New reply', :content => 'New reply', :author_id => 2)
+ old_topic.children << reply
+
+ get :show, :project_id => 1, :id => 1
+ assert_response :success
+ topics = assigns(:topics)
+ assert_not_nil topics
+ assert_equal old_topic, topics.first
+ end
+
def test_show_with_permission_should_display_the_new_message_form
@request.session[:user_id] = 2
get :show, :project_id => 1, :id => 1