Add spec for CLI::Search#deploy command (#28272)
				
					
				
			This commit is contained in:
		
							parent
							
								
									ca1b7efb06
								
							
						
					
					
						commit
						a3cbb4b2f1
					
				| @ -4,5 +4,79 @@ require 'rails_helper' | |||||||
| require 'mastodon/cli/search' | require 'mastodon/cli/search' | ||||||
| 
 | 
 | ||||||
| describe Mastodon::CLI::Search do | describe Mastodon::CLI::Search do | ||||||
|  |   subject { cli.invoke(action, arguments, options) } | ||||||
|  | 
 | ||||||
|  |   let(:cli) { described_class.new } | ||||||
|  |   let(:arguments) { [] } | ||||||
|  |   let(:options) { {} } | ||||||
|  | 
 | ||||||
|   it_behaves_like 'CLI Command' |   it_behaves_like 'CLI Command' | ||||||
|  | 
 | ||||||
|  |   describe '#deploy' do | ||||||
|  |     let(:action) { :deploy } | ||||||
|  | 
 | ||||||
|  |     context 'with concurrency out of range' do | ||||||
|  |       let(:options) { { concurrency: -100 } } | ||||||
|  | 
 | ||||||
|  |       it 'Exits with error message' do | ||||||
|  |         expect { subject } | ||||||
|  |           .to output_results('this concurrency setting') | ||||||
|  |           .and raise_error(SystemExit) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context 'with batch size out of range' do | ||||||
|  |       let(:options) { { batch_size: -100_000 } } | ||||||
|  | 
 | ||||||
|  |       it 'Exits with error message' do | ||||||
|  |         expect { subject } | ||||||
|  |           .to output_results('this batch_size setting') | ||||||
|  |           .and raise_error(SystemExit) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context 'without options' do | ||||||
|  |       before { stub_search_indexes } | ||||||
|  | 
 | ||||||
|  |       let(:indexed_count) { 1 } | ||||||
|  |       let(:deleted_count) { 2 } | ||||||
|  | 
 | ||||||
|  |       it 'reports about storage size' do | ||||||
|  |         expect { subject } | ||||||
|  |           .to output_results( | ||||||
|  |             "Indexed #{described_class::INDICES.size * indexed_count} records", | ||||||
|  |             "de-indexed #{described_class::INDICES.size * deleted_count}" | ||||||
|  |           ) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     def stub_search_indexes | ||||||
|  |       described_class::INDICES.each do |index| | ||||||
|  |         allow(index) | ||||||
|  |           .to receive_messages( | ||||||
|  |             specification: instance_double(Chewy::Index::Specification, changed?: true, lock!: nil), | ||||||
|  |             purge: nil | ||||||
|  |           ) | ||||||
|  | 
 | ||||||
|  |         importer_double = importer_double_for(index) | ||||||
|  |         allow(importer_double).to receive(:on_progress).and_yield([indexed_count, deleted_count]) | ||||||
|  |         allow("Importer::#{index}Importer".constantize) | ||||||
|  |           .to receive(:new) | ||||||
|  |           .and_return(importer_double) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     def importer_double_for(index) | ||||||
|  |       instance_double( | ||||||
|  |         "Importer::#{index}Importer".constantize, | ||||||
|  |         clean_up!: nil, | ||||||
|  |         estimate!: 100, | ||||||
|  |         import!: nil, | ||||||
|  |         on_failure: nil, | ||||||
|  |         # on_progress: nil, | ||||||
|  |         optimize_for_import!: nil, | ||||||
|  |         optimize_for_search!: nil | ||||||
|  |       ) | ||||||
|  |     end | ||||||
|  |   end | ||||||
| end | end | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user