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 | # frozen_string_literal: true | ||||||
| 
 | 
 | ||||||
| class MediaController < ApplicationController | class MediaController < ApplicationController | ||||||
|   before_action :set_media_attachment |   before_action :verify_permitted_status | ||||||
| 
 | 
 | ||||||
|   def show |   def show | ||||||
|     redirect_to @media_attachment.file.url(:original) |     redirect_to media_attachment.file.url(:original) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   private |   private | ||||||
| 
 | 
 | ||||||
|   def set_media_attachment |   def media_attachment | ||||||
|     @media_attachment = MediaAttachment.where.not(status_id: nil).find_by!(shortcode: params[:id]) |     MediaAttachment.attached.find_by!(shortcode: params[:id]) | ||||||
|     raise ActiveRecord::RecordNotFound unless @media_attachment.status.permitted?(current_account) |   end | ||||||
|  | 
 | ||||||
|  |   def verify_permitted_status | ||||||
|  |     raise ActiveRecord::RecordNotFound unless media_attachment.status.permitted?(current_account) | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  | |||||||
| @ -33,6 +33,7 @@ class MediaAttachment < ApplicationRecord | |||||||
| 
 | 
 | ||||||
|   validates :account, presence: true |   validates :account, presence: true | ||||||
| 
 | 
 | ||||||
|  |   scope :attached, -> { where.not(status_id: nil) } | ||||||
|   scope :local, -> { where(remote_url: '') } |   scope :local, -> { where(remote_url: '') } | ||||||
|   default_scope { order('id asc') } |   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