cartodb/services/importer/spec/unit/excel2csv_spec.rb
2020-06-15 10:58:47 +08:00

54 lines
2.2 KiB
Ruby

require 'rspec/core'
require 'rspec/expectations'
require 'rspec/mocks'
require_relative '../../lib/importer/excel2csv'
require_relative '../../../../spec/rspec_configuration.rb'
require_relative '../doubles/job'
require_relative '../doubles/csv_normalizer'
include Mocha::ParameterMatchers
describe CartoDB::Importer2::Excel2Csv do
before(:each) do
CartoDB.stubs(:python_path).returns('')
CartoDB.stubs(:python_bin_path).returns(`which python`.strip)
end
describe '#excel2csv' do
before(:each) do
@job = CartoDB::Importer2::Doubles::Job.new
@csv_normalizer = CartoDB::Importer2::Doubles::CsvNormalizer.new
end
describe '#run' do
it "parse xls file to csv" do
filepath = path_to('fixture_20150714.xls')
@excel2csv = CartoDB::Importer2::Excel2Csv.new("xls", filepath, @job, @csv_normalizer)
@excel2csv.stubs(:converted_filepath).returns("/tmp/converted_filepath_excel2csv")
@excel2csv.run
end
it "parse xlsx file to csv" do
filepath = path_to('fixture_20150714.xlsx')
@excel2csv = CartoDB::Importer2::Excel2Csv.new("xlsx", filepath, @job, @csv_normalizer)
@excel2csv.stubs(:converted_filepath).returns("/tmp/converted_filepath_excel2csv")
@excel2csv.run
end
it "raise if a csv file is passed as xls" do
filepath = path_to('csv_as_xls.xls')
@excel2csv = CartoDB::Importer2::Excel2Csv.new("xls", filepath, @job, @csv_normalizer)
@excel2csv.stubs(:converted_filepath).returns("/tmp/converted_filepath_excel2csv")
expect { @excel2csv.run }.to raise_error CartoDB::Importer2::MalformedXLSException
end
it "raise if a csv file is passed as xlsx" do
filepath = path_to('csv_as_xlsx.xlsx')
@excel2csv = CartoDB::Importer2::Excel2Csv.new("xlsx", filepath, @job, @csv_normalizer)
@excel2csv.stubs(:converted_filepath).returns("/tmp/converted_filepath_excel2csv")
expect { @excel2csv.run }.to raise_error CartoDB::Importer2::MalformedXLSException
end
end
end
def path_to(filename)
File.join(File.dirname(__FILE__), '..', 'fixtures', filename)
end
end