54 lines
2.0 KiB
Ruby
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
|