51 lines
1.5 KiB
Ruby
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
|