Add spec coverage for media CLI refresh command (#28166)
				
					
				
			This commit is contained in:
		@@ -265,6 +265,7 @@ module Mastodon::CLI
 | 
			
		||||
      elsif options[:days].present?
 | 
			
		||||
        scope = MediaAttachment.remote
 | 
			
		||||
      else
 | 
			
		||||
        say('Specify the source of media attachments', :red)
 | 
			
		||||
        exit(1)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -86,4 +86,77 @@ describe Mastodon::CLI::Media do
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '#refresh' do
 | 
			
		||||
    context 'without any options' do
 | 
			
		||||
      let(:options) { {} }
 | 
			
		||||
 | 
			
		||||
      it 'warns about usage and exits' do
 | 
			
		||||
        expect { cli.invoke(:refresh, [], options) }.to output(
 | 
			
		||||
          a_string_including('Specify the source')
 | 
			
		||||
        ).to_stdout.and raise_error(SystemExit)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with --status option' do
 | 
			
		||||
      before do
 | 
			
		||||
        media_attachment.update(file_file_name: nil)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      let(:media_attachment) { Fabricate(:media_attachment, status: status, remote_url: 'https://host.example/asset.jpg') }
 | 
			
		||||
      let(:options) { { status: status.id } }
 | 
			
		||||
      let(:status) { Fabricate(:status) }
 | 
			
		||||
 | 
			
		||||
      it 'redownloads the attachment file' do
 | 
			
		||||
        expect { cli.invoke(:refresh, [], options) }.to output(
 | 
			
		||||
          a_string_including('Downloaded 1 media')
 | 
			
		||||
        ).to_stdout
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with --account option' do
 | 
			
		||||
      context 'when the account does not exist' do
 | 
			
		||||
        let(:options) { { account: 'not-real-user@example.host' } }
 | 
			
		||||
 | 
			
		||||
        it 'warns about usage and exits' do
 | 
			
		||||
          expect { cli.invoke(:refresh, [], options) }.to output(
 | 
			
		||||
            a_string_including('No such account')
 | 
			
		||||
          ).to_stdout.and raise_error(SystemExit)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context 'when the account exists' do
 | 
			
		||||
        before do
 | 
			
		||||
          media_attachment.update(file_file_name: nil)
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        let(:media_attachment) { Fabricate(:media_attachment, account: account) }
 | 
			
		||||
        let(:options) { { account: account.acct } }
 | 
			
		||||
        let(:account) { Fabricate(:account) }
 | 
			
		||||
 | 
			
		||||
        it 'redownloads the attachment file' do
 | 
			
		||||
          expect { cli.invoke(:refresh, [], options) }.to output(
 | 
			
		||||
            a_string_including('Downloaded 1 media')
 | 
			
		||||
          ).to_stdout
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with --domain option' do
 | 
			
		||||
      before do
 | 
			
		||||
        media_attachment.update(file_file_name: nil)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      let(:domain) { 'example.host' }
 | 
			
		||||
      let(:media_attachment) { Fabricate(:media_attachment, account: account) }
 | 
			
		||||
      let(:options) { { domain: domain } }
 | 
			
		||||
      let(:account) { Fabricate(:account, domain: domain) }
 | 
			
		||||
 | 
			
		||||
      it 'redownloads the attachment file' do
 | 
			
		||||
        expect { cli.invoke(:refresh, [], options) }.to output(
 | 
			
		||||
          a_string_including('Downloaded 1 media')
 | 
			
		||||
        ).to_stdout
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user