Fix /api/v1/conversations sometimes returning empty accounts (#25499)
This commit is contained in:
		
							parent
							
								
									ba5c12974a
								
							
						
					
					
						commit
						5e5af7a0fe
					
				
					 2 changed files with 6 additions and 10 deletions
				
			
		| 
						 | 
					@ -32,14 +32,8 @@ class AccountConversation < ApplicationRecord
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def participant_accounts
 | 
					  def participant_accounts
 | 
				
			||||||
    @participant_accounts ||= begin
 | 
					    @participant_accounts ||= Account.where(id: participant_account_ids).to_a
 | 
				
			||||||
      if participant_account_ids.empty?
 | 
					    @participant_accounts.presence || [account]
 | 
				
			||||||
        [account]
 | 
					 | 
				
			||||||
      else
 | 
					 | 
				
			||||||
        participants = Account.where(id: participant_account_ids).to_a
 | 
					 | 
				
			||||||
        participants.empty? ? [account] : participants
 | 
					 | 
				
			||||||
      end
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  class << self
 | 
					  class << self
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,7 @@ RSpec.describe Api::V1::ConversationsController do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    before do
 | 
					    before do
 | 
				
			||||||
      PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct')
 | 
					      PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct')
 | 
				
			||||||
 | 
					      PostStatusService.new.call(user.account, text: 'Hey, nobody here', visibility: 'direct')
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it 'returns http success' do
 | 
					    it 'returns http success' do
 | 
				
			||||||
| 
						 | 
					@ -33,7 +34,8 @@ RSpec.describe Api::V1::ConversationsController do
 | 
				
			||||||
    it 'returns conversations' do
 | 
					    it 'returns conversations' do
 | 
				
			||||||
      get :index
 | 
					      get :index
 | 
				
			||||||
      json = body_as_json
 | 
					      json = body_as_json
 | 
				
			||||||
      expect(json.size).to eq 1
 | 
					      expect(json.size).to eq 2
 | 
				
			||||||
 | 
					      expect(json[0][:accounts].size).to eq 1
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    context 'with since_id' do
 | 
					    context 'with since_id' do
 | 
				
			||||||
| 
						 | 
					@ -41,7 +43,7 @@ RSpec.describe Api::V1::ConversationsController do
 | 
				
			||||||
        it 'returns conversations' do
 | 
					        it 'returns conversations' do
 | 
				
			||||||
          get :index, params: { since_id: Mastodon::Snowflake.id_at(1.hour.ago, with_random: false) }
 | 
					          get :index, params: { since_id: Mastodon::Snowflake.id_at(1.hour.ago, with_random: false) }
 | 
				
			||||||
          json = body_as_json
 | 
					          json = body_as_json
 | 
				
			||||||
          expect(json.size).to eq 1
 | 
					          expect(json.size).to eq 2
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue