Add spec coverage for `workers/redownload_*` worker classes (#27892)
This commit is contained in:
		
							parent
							
								
									6c2e78f1b1
								
							
						
					
					
						commit
						1526e54ac6
					
				|  | @ -5,9 +5,48 @@ require 'rails_helper' | ||||||
| describe RedownloadAvatarWorker do | describe RedownloadAvatarWorker do | ||||||
|   let(:worker) { described_class.new } |   let(:worker) { described_class.new } | ||||||
| 
 | 
 | ||||||
|   describe 'perform' do |   describe '#perform' do | ||||||
|     it 'runs without error for missing record' do |     it 'returns nil for non-existent record' do | ||||||
|       expect { worker.perform(nil) }.to_not raise_error |       result = worker.perform(123_123_123) | ||||||
|  | 
 | ||||||
|  |       expect(result).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil for suspended account' do | ||||||
|  |       account = Fabricate(:account, suspended_at: 10.days.ago) | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil with a domain block' do | ||||||
|  |       account = Fabricate(:account, domain: 'host.example') | ||||||
|  |       Fabricate(:domain_block, domain: account.domain, reject_media: true) | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil without an avatar remote url' do | ||||||
|  |       account = Fabricate(:account, avatar_remote_url: '') | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil when avatar file name is present' do | ||||||
|  |       stub_request(:get, 'https://example.host/file').to_return request_fixture('avatar.txt') | ||||||
|  |       account = Fabricate(:account, avatar_remote_url: 'https://example.host/file', avatar_file_name: 'test.jpg') | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'reprocesses a remote avatar' do | ||||||
|  |       stub_request(:get, 'https://example.host/file').to_return request_fixture('avatar.txt') | ||||||
|  |       account = Fabricate(:account, avatar_remote_url: 'https://example.host/file') | ||||||
|  |       account.update_column(:avatar_file_name, nil) # rubocop:disable Rails/SkipsModelValidations | ||||||
|  | 
 | ||||||
|  |       result = worker.perform(account.id) | ||||||
|  | 
 | ||||||
|  |       expect(result).to be(true) | ||||||
|  |       expect(account.reload.avatar_file_name).to_not be_nil | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -5,9 +5,48 @@ require 'rails_helper' | ||||||
| describe RedownloadHeaderWorker do | describe RedownloadHeaderWorker do | ||||||
|   let(:worker) { described_class.new } |   let(:worker) { described_class.new } | ||||||
| 
 | 
 | ||||||
|   describe 'perform' do |   describe '#perform' do | ||||||
|     it 'runs without error for missing record' do |     it 'returns nil for non-existent record' do | ||||||
|       expect { worker.perform(nil) }.to_not raise_error |       result = worker.perform(123_123_123) | ||||||
|  | 
 | ||||||
|  |       expect(result).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil for suspended account' do | ||||||
|  |       account = Fabricate(:account, suspended_at: 10.days.ago) | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil with a domain block' do | ||||||
|  |       account = Fabricate(:account, domain: 'host.example') | ||||||
|  |       Fabricate(:domain_block, domain: account.domain, reject_media: true) | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil without an header remote url' do | ||||||
|  |       account = Fabricate(:account, header_remote_url: '') | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil when header file name is present' do | ||||||
|  |       stub_request(:get, 'https://example.host/file').to_return request_fixture('avatar.txt') | ||||||
|  |       account = Fabricate(:account, header_remote_url: 'https://example.host/file', header_file_name: 'test.jpg') | ||||||
|  | 
 | ||||||
|  |       expect(worker.perform(account.id)).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'reprocesses a remote header' do | ||||||
|  |       stub_request(:get, 'https://example.host/file').to_return request_fixture('avatar.txt') | ||||||
|  |       account = Fabricate(:account, header_remote_url: 'https://example.host/file') | ||||||
|  |       account.update_column(:header_file_name, nil) # rubocop:disable Rails/SkipsModelValidations | ||||||
|  | 
 | ||||||
|  |       result = worker.perform(account.id) | ||||||
|  | 
 | ||||||
|  |       expect(result).to be(true) | ||||||
|  |       expect(account.reload.header_file_name).to_not be_nil | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -0,0 +1,37 @@ | ||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | require 'rails_helper' | ||||||
|  | 
 | ||||||
|  | describe RedownloadMediaWorker do | ||||||
|  |   let(:worker) { described_class.new } | ||||||
|  | 
 | ||||||
|  |   describe '#perform' do | ||||||
|  |     it 'returns nil for non-existent record' do | ||||||
|  |       result = worker.perform(123_123_123) | ||||||
|  | 
 | ||||||
|  |       expect(result).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'returns nil without a remote_url' do | ||||||
|  |       media_attachment = Fabricate(:media_attachment, remote_url: '') | ||||||
|  | 
 | ||||||
|  |       result = worker.perform(media_attachment.id) | ||||||
|  | 
 | ||||||
|  |       expect(result).to be_nil | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context 'with a valid remote url' do | ||||||
|  |       let(:url) { 'https://example.host/file.txt' } | ||||||
|  | 
 | ||||||
|  |       before { stub_request(:get, url).to_return(status: 200) } | ||||||
|  | 
 | ||||||
|  |       it 'processes downloads for valid record' do | ||||||
|  |         media_attachment = Fabricate(:media_attachment, remote_url: url) | ||||||
|  | 
 | ||||||
|  |         worker.perform(media_attachment.id) | ||||||
|  | 
 | ||||||
|  |         expect(a_request(:get, url)).to have_been_made | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
		Loading…
	
		Reference in New Issue