cartodb/services/geocoder/spec/hires_geocoder_factory_spec.rb
2020-06-15 10:58:47 +08:00

69 lines
2.5 KiB
Ruby

require_relative '../../../spec/rspec_configuration'
require_relative '../../../spec/spec_helper'
require_relative '../lib/hires_geocoder_factory'
require_relative '../lib/geocoder_config'
describe CartoDB::HiresGeocoderFactory do
after(:all) do
# reset config
CartoDB::GeocoderConfig.instance.set(nil)
end
before(:each) do
@log = mock
@log.stubs(:append)
@log.stubs(:append_and_store)
@geocoding_model = FactoryGirl.create(:geocoding, kind: 'high-resolution', formatter: '{street}')
end
describe '#get' do
it 'returns a HiresGeocoder instance if the input file has less than N rows' do
CartoDB::GeocoderConfig.instance.set({
'non_batch_base_url' => 'http://api.example.com',
'app_id' => 'dummy_app_id',
'token' => 'dummy_token',
'mailto' => 'dummy_mail_addr'
})
dummy_input_file = 'dummy_input_file.csv'
working_dir = '/tmp/any_dir'
input_rows = CartoDB::HiresGeocoderFactory::BATCH_FILES_OVER - 1
CartoDB::HiresGeocoderFactory.expects(:input_rows).once.with(dummy_input_file).returns(input_rows)
CartoDB::HiresGeocoderFactory.get(dummy_input_file, working_dir, @log, @geocoding_model).class.should == CartoDB::HiresGeocoder
end
it 'returns a HiresBatchGeocoder instance if the input file is above N rows' do
CartoDB::GeocoderConfig.instance.set({
'base_url' => 'http://api.example.com',
'app_id' => 'dummy_app_id',
'token' => 'dummy_token',
'mailto' => 'dummy_mail_addr'
})
dummy_input_file = 'dummy_input_file.csv'
working_dir = '/tmp/any_dir'
input_rows = CartoDB::HiresGeocoderFactory::BATCH_FILES_OVER + 1
CartoDB::HiresGeocoderFactory.expects(:input_rows).once.with(dummy_input_file).returns(input_rows)
CartoDB::HiresGeocoderFactory.get(dummy_input_file, working_dir, @log, @geocoding_model).class.should == CartoDB::HiresBatchGeocoder
end
it 'returns a batch geocoder if config has force_batch set to true' do
CartoDB::GeocoderConfig.instance.set({
'force_batch' => true,
'base_url' => 'http://api.example.com',
'app_id' => 'dummy_app_id',
'token' => 'dummy_token',
'mailto' => 'dummy_mail_addr'
})
dummy_input_file = 'dummy_input_file.csv'
working_dir = '/tmp/any_dir'
CartoDB::HiresGeocoderFactory.expects(:input_rows).never
CartoDB::HiresGeocoderFactory.get(dummy_input_file, working_dir, @log, @geocoding_model).class.should == CartoDB::HiresBatchGeocoder
end
end
end