Media controller specs (#2022)
* Add spec for media controller * Add MediaAttachment.attached scope * Simplify methods in media controller
This commit is contained in:
		
							parent
							
								
									15ec4ae07b
								
							
						
					
					
						commit
						cc1361c149
					
				| @ -1,16 +1,19 @@ | ||||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class MediaController < ApplicationController | ||||
|   before_action :set_media_attachment | ||||
|   before_action :verify_permitted_status | ||||
| 
 | ||||
|   def show | ||||
|     redirect_to @media_attachment.file.url(:original) | ||||
|     redirect_to media_attachment.file.url(:original) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def set_media_attachment | ||||
|     @media_attachment = MediaAttachment.where.not(status_id: nil).find_by!(shortcode: params[:id]) | ||||
|     raise ActiveRecord::RecordNotFound unless @media_attachment.status.permitted?(current_account) | ||||
|   def media_attachment | ||||
|     MediaAttachment.attached.find_by!(shortcode: params[:id]) | ||||
|   end | ||||
| 
 | ||||
|   def verify_permitted_status | ||||
|     raise ActiveRecord::RecordNotFound unless media_attachment.status.permitted?(current_account) | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -33,6 +33,7 @@ class MediaAttachment < ApplicationRecord | ||||
| 
 | ||||
|   validates :account, presence: true | ||||
| 
 | ||||
|   scope :attached, -> { where.not(status_id: nil) } | ||||
|   scope :local, -> { where(remote_url: '') } | ||||
|   default_scope { order('id asc') } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										37
									
								
								spec/controllers/media_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								spec/controllers/media_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
| # frozen_string_literal: true | ||||
| 
 | ||||
| require 'rails_helper' | ||||
| 
 | ||||
| describe MediaController do | ||||
|   describe '#show' do | ||||
|     it 'redirects to the file url when attached to a status' do | ||||
|       status = Fabricate(:status) | ||||
|       media_attachment = Fabricate(:media_attachment, status: status) | ||||
|       get :show, params: { id: media_attachment.to_param } | ||||
| 
 | ||||
|       expect(response).to redirect_to(media_attachment.file.url(:original)) | ||||
|     end | ||||
| 
 | ||||
|     it 'responds with missing when there is not an attached status' do | ||||
|       media_attachment = Fabricate(:media_attachment, status: nil) | ||||
|       get :show, params: { id: media_attachment.to_param } | ||||
| 
 | ||||
|       expect(response).to have_http_status(:missing) | ||||
|     end | ||||
| 
 | ||||
|     it 'raises when shortcode cant be found' do | ||||
|       get :show, params: { id: 'missing' } | ||||
| 
 | ||||
|       expect(response).to have_http_status(:missing) | ||||
|     end | ||||
| 
 | ||||
|     it 'raises when not permitted to view' do | ||||
|       status = Fabricate(:status) | ||||
|       media_attachment = Fabricate(:media_attachment, status: status) | ||||
|       allow_any_instance_of(Status).to receive(:permitted?).and_return(false) | ||||
|       get :show, params: { id: media_attachment.to_param } | ||||
| 
 | ||||
|       expect(response).to have_http_status(:missing) | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user