Add support for private pinned posts (#16954)
* Add support for private pinned toots * Allow local user to pin private toots * Change wording to avoid "direct message"
This commit is contained in:
		
					parent
					
						
							
								081e4426f8
							
						
					
				
			
			
				commit
				
					
						d5c9feb7b7
					
				
			
		
					 18 changed files with 164 additions and 28 deletions
				
			
		|  | @ -39,7 +39,7 @@ describe Api::V1::Accounts::StatusesController do | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with only pinned' do | ||||
|     context 'with only own pinned' do | ||||
|       before do | ||||
|         Fabricate(:status_pin, account: user.account, status: Fabricate(:status, account: user.account)) | ||||
|       end | ||||
|  | @ -50,5 +50,38 @@ describe Api::V1::Accounts::StatusesController do | |||
|         expect(response).to have_http_status(200) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context "with someone else's pinned statuses" do | ||||
|       let(:account)        { Fabricate(:account, username: 'bob', domain: 'example.com') } | ||||
|       let(:status)         { Fabricate(:status, account: account) } | ||||
|       let(:private_status) { Fabricate(:status, account: account, visibility: :private) } | ||||
|       let!(:pin)           { Fabricate(:status_pin, account: account, status: status) } | ||||
|       let!(:private_pin)   { Fabricate(:status_pin, account: account, status: private_status) } | ||||
| 
 | ||||
|       it 'returns http success' do | ||||
|         get :index, params: { account_id: account.id, pinned: true } | ||||
|         expect(response).to have_http_status(200) | ||||
|       end | ||||
| 
 | ||||
|       context 'when user does not follow account' do | ||||
|         it 'lists the public status only' do | ||||
|           get :index, params: { account_id: account.id, pinned: true } | ||||
|           json = body_as_json | ||||
|           expect(json.map { |item| item[:id].to_i }).to eq [status.id] | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when user follows account' do | ||||
|         before do | ||||
|           user.account.follow!(account) | ||||
|         end | ||||
| 
 | ||||
|         it 'lists both the public and the private statuses' do | ||||
|           get :index, params: { account_id: account.id, pinned: true } | ||||
|           json = body_as_json | ||||
|           expect(json.map { |item| item[:id].to_i }.sort).to eq [status.id, private_status.id].sort | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue