51 lines
1.8 KiB
Ruby
51 lines
1.8 KiB
Ruby
require 'rspec/core'
|
|
require 'rspec/expectations'
|
|
require 'rspec/mocks'
|
|
|
|
# Unp includes reference to gpx_splitter
|
|
require_relative '../../lib/importer/unp'
|
|
|
|
describe CartoDB::Importer2::GpxSplitter do
|
|
before do
|
|
@one_layer_filepath = path_to('one_layer.gpx')
|
|
@multiple_layer_filepath = path_to('multiple_layer.gpx')
|
|
@temporary_directory = '/var/tmp'
|
|
@ogr2ogr_config = {}
|
|
end
|
|
|
|
describe '#run' do
|
|
it 'splits a multilayer GPX into single-layer GPX' do
|
|
source_file = CartoDB::Importer2::SourceFile.new(@multiple_layer_filepath)
|
|
splitter = CartoDB::Importer2::GpxSplitter.new(source_file, @temporary_directory, @ogr2ogr_config)
|
|
splitter.run
|
|
splitter.source_files.length.should eq 4
|
|
end
|
|
|
|
it 'splits a single-layer GPX into multiple-layer GPX' do
|
|
source_file = CartoDB::Importer2::SourceFile.new(@one_layer_filepath)
|
|
splitter = CartoDB::Importer2::GpxSplitter.new(source_file, @temporary_directory, @ogr2ogr_config)
|
|
splitter.run
|
|
# route and track with the points layer too (track and track_points)
|
|
splitter.source_files.length.should eq 2
|
|
end
|
|
end
|
|
|
|
describe '#layers_in' do
|
|
it 'returns all layers name in the file' do
|
|
source_file = CartoDB::Importer2::SourceFile.new(@one_layer_filepath)
|
|
splitter = CartoDB::Importer2::GpxSplitter.new(source_file, @temporary_directory, @ogr2ogr_config)
|
|
splitter.layers_in(source_file).should eq ["tracks", "track_points"]
|
|
|
|
source_file = CartoDB::Importer2::SourceFile.new(@multiple_layer_filepath)
|
|
splitter = CartoDB::Importer2::GpxSplitter.new(source_file, @temporary_directory, @ogr2ogr_config)
|
|
splitter.layers_in(source_file).length.should eq 4
|
|
end
|
|
end
|
|
|
|
def path_to(filepath)
|
|
File.expand_path(
|
|
File.join(File.dirname(__FILE__), "../fixtures/#{filepath}")
|
|
)
|
|
end
|
|
end
|