cartodb/spec/lib/carto/filename_generator_spec.rb
2020-06-15 10:58:47 +08:00

54 lines
2.0 KiB
Ruby

require 'active_support'
require 'active_support/core_ext/object/blank'
require_relative '../../../lib/carto/filename_generator'
describe Carto::FilenameGenerator do
class TestFilenameGenerator
include Carto::FilenameGenerator
end
describe '#filename_from_url' do
let(:generator) { TestFilenameGenerator.new }
let(:supported_extensions) { %w(.csv .carto .zip) }
it 'returns the full url for just filenames' do
['a_name.csv', 'a_name.carto'].each do |filename|
generator.filename_from_url(filename, supported_extensions).should eq filename
end
end
it 'returns nil for unsupported extensions' do
['a_name.wadus', 'a_name'].each do |filename|
generator.filename_from_url(filename, supported_extensions).should be_nil
end
end
it 'returns the filename for normal urls' do
[%w(http://carto.com/name.csv name.csv), %w(http://carto.com/sub/file.carto file.carto)].each do |url, filename|
generator.filename_from_url(url, supported_extensions).should eq filename
end
end
it 'returns the filename for filenames with dots and other characters' do
name1 = 'name.something (one - two : three).carto'
[
%w(http://carto.com/name.something.csv name.something.csv),
["http://carto.com/sub/#{name1.gsub(' ', '%20')}", name1]
].each do |url, filename|
generator.filename_from_url(url, supported_extensions).should eq filename
end
end
it 'returns the filename for weirds URLs with filenames within the parameters (see #5704)' do
inner_filename = '1259030001_MB_2011_ASGC_NSW_csv.zip'
weird_url = "http://www.abs.gov.au/ausstats/subscriber.nsf/log?openagent&"\
"#{inner_filename}"\
"&1259.0.30.001&Data%20Cubes&2787F2FFF3F6E607CA2578CC001268ED&0&July%202011&05.10.2011&Latest"
[[weird_url, inner_filename]].each do |url, filename|
generator.filename_from_url(url, supported_extensions).should eq filename
end
end
end
end