From 1c826471e7d964f0fdb2dc2b89dcd5a19c017538 Mon Sep 17 00:00:00 2001
From: Jeong Arm <kjwonmail@gmail.com>
Date: Sat, 27 Nov 2021 06:12:27 +0900
Subject: [PATCH] Fix admin statuses order(#16937) (#16969)

* Fix #16937

* Add test for statuses order
---
 app/controllers/admin/statuses_controller.rb       | 2 +-
 spec/controllers/admin/statuses_controller_spec.rb | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb
index 58a0eb84c..b3fd4c424 100644
--- a/app/controllers/admin/statuses_controller.rb
+++ b/app/controllers/admin/statuses_controller.rb
@@ -14,7 +14,7 @@ module Admin
       @statuses = @account.statuses.where(visibility: [:public, :unlisted])
 
       if params[:media]
-        @statuses.merge!(Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id)).reorder('statuses.id desc')
+        @statuses = @statuses.merge(Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id)).reorder('statuses.id desc')
       end
 
       @statuses = @statuses.preload(:media_attachments, :mentions).page(params[:page]).per(PER_PAGE)
diff --git a/spec/controllers/admin/statuses_controller_spec.rb b/spec/controllers/admin/statuses_controller_spec.rb
index d9690d83f..e388caae2 100644
--- a/spec/controllers/admin/statuses_controller_spec.rb
+++ b/spec/controllers/admin/statuses_controller_spec.rb
@@ -8,6 +8,9 @@ describe Admin::StatusesController do
   let!(:status) { Fabricate(:status, account: account) }
   let(:media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) }
   let!(:media_attachment) { Fabricate(:media_attachment, account: account, status: media_attached_status) }
+  let(:last_media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) }
+  let!(:last_media_attachment) { Fabricate(:media_attachment, account: account, status: last_media_attached_status) }
+  let!(:last_status) { Fabricate(:status, account: account) }
   let(:sensitive) { true }
 
   before do
@@ -19,7 +22,8 @@ describe Admin::StatusesController do
       get :index, params: { account_id: account.id }
 
       statuses = assigns(:statuses).to_a
-      expect(statuses.size).to eq 2
+      expect(statuses.size).to eq 4
+      expect(statuses.first.id).to eq last_status.id
       expect(response).to have_http_status(200)
     end
 
@@ -27,7 +31,8 @@ describe Admin::StatusesController do
       get :index, params: { account_id: account.id, media: true }
 
       statuses = assigns(:statuses).to_a
-      expect(statuses.size).to eq 1
+      expect(statuses.size).to eq 2
+      expect(statuses.first.id).to eq last_media_attached_status.id
       expect(response).to have_http_status(200)
     end
   end