cartodb/services/twitter-search/spec/unit/json_to_csv_converter_spec.rb
2020-06-15 10:58:47 +08:00

51 lines
1.5 KiB
Ruby

require_relative '../../twitter-search'
require_relative '../../../../spec/rspec_configuration'
include CartoDB::TwitterSearch
describe JSONToCSVConverter do
describe '#conversion' do
it 'checks conversion of fields' do
conversor = JSONToCSVConverter.new
results = conversor.process(json_data_from_file('sample_tweets.json'))
results.should == data_from_file('sample_tweets.csv')
end
it 'checks additional fields are added' do
conversor = JSONToCSVConverter.new
additional_fields = terms_fixture
# without data
results = conversor.process([], true, additional_fields)
results.should eq data_from_file('empty_results_expected.csv')
# And with data
results = conversor.process(json_data_from_file('sample_tweets.json'), true, additional_fields)
results.should eq data_from_file('sample_tweets_additional_fields.csv')
end
it 'check headers can be skiped' do
conversor = JSONToCSVConverter.new
results = conversor.process([], false)
results.should eq ''
end
end
protected
def json_data_from_file(filename, only_results=true)
data = File.read(File.join(File.dirname(__FILE__), "../fixtures/#{filename}"))
data = ::JSON.parse(data, symbolize_names: true)
only_results ? data[:results] : data
end
def data_from_file(filename)
File.read(File.join(File.dirname(__FILE__), "../fixtures/#{filename}"))
end
def terms_fixture
{ category_name: 'sample category', category_terms: 'term1 term2' }
end
end