90 lines
3.0 KiB
Ruby
90 lines
3.0 KiB
Ruby
|
require 'spec_helper'
|
||
|
require 'models/layer_shared_examples'
|
||
|
|
||
|
describe Layer do
|
||
|
it_behaves_like 'Layer model' do
|
||
|
let(:layer_class) { Layer }
|
||
|
def create_map(options = {})
|
||
|
Map.create(options)
|
||
|
end
|
||
|
|
||
|
def add_layer_to_entity(entity, layer)
|
||
|
entity.add_layer(layer)
|
||
|
end
|
||
|
|
||
|
before(:all) do
|
||
|
@quota_in_bytes = 500.megabytes
|
||
|
@table_quota = 500
|
||
|
|
||
|
@user = FactoryGirl.create(:valid_user, private_tables_enabled: true)
|
||
|
|
||
|
@table = Table.new
|
||
|
@table.user_id = @user.id
|
||
|
@table.save
|
||
|
end
|
||
|
|
||
|
before(:each) do
|
||
|
bypass_named_maps
|
||
|
end
|
||
|
|
||
|
after(:all) do
|
||
|
@user.destroy
|
||
|
end
|
||
|
|
||
|
describe '#copy' do
|
||
|
it 'returns a copy of the layer' do
|
||
|
layer = layer_class.create(kind: 'carto', options: { style: 'bogus' })
|
||
|
layer_copy = layer.copy
|
||
|
|
||
|
layer_copy.kind.should == layer.kind
|
||
|
layer_copy.options.should == layer.options
|
||
|
layer_copy.id.should be_nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#affected_table_names' do
|
||
|
include UniqueNamesHelper
|
||
|
|
||
|
before(:all) do
|
||
|
helper = TestUserFactory.new
|
||
|
@organization = FactoryGirl.create(:organization, quota_in_bytes: 1000000000000)
|
||
|
@owner = helper.create_owner(@organization)
|
||
|
@nonhyphen_user = helper.create_test_user(unique_name('user'), @organization)
|
||
|
@hyphen_user = helper.create_test_user(unique_name('user-'), @organization)
|
||
|
@nonhyphen_table = FactoryGirl.create(:user_table, user: @nonhyphen_user, name: unique_name('table'))
|
||
|
@subuser_table = FactoryGirl.create(:user_table, user: @hyphen_user, name: unique_name('table'))
|
||
|
@hyphen_table = FactoryGirl.create(:user_table, user: @hyphen_user, name: unique_name('table-'))
|
||
|
end
|
||
|
|
||
|
before(:each) do
|
||
|
@hyphen_user_layer = Layer.new
|
||
|
@hyphen_user_layer.stubs(:user).returns(@hyphen_user)
|
||
|
|
||
|
@nonhyphen_layer = Layer.new
|
||
|
@nonhyphen_layer.stubs(:user).returns(@nonhyphen_user)
|
||
|
end
|
||
|
|
||
|
it 'returns normal tables' do
|
||
|
@nonhyphen_layer.send(:affected_table_names, "SELECT * FROM #{@nonhyphen_table.name}")
|
||
|
.should eq ["#{@nonhyphen_user.username}.#{@nonhyphen_table.name}"]
|
||
|
end
|
||
|
|
||
|
it 'returns tables from users with hyphens' do
|
||
|
@hyphen_user_layer.send(:affected_table_names, "SELECT * FROM #{@subuser_table.name}")
|
||
|
.should eq ["\"#{@hyphen_user.username}\".#{@subuser_table.name}"]
|
||
|
end
|
||
|
|
||
|
it 'returns table with hyphens in the name' do
|
||
|
@hyphen_user_layer.send(:affected_table_names, "SELECT * FROM \"#{@hyphen_table.name}\"")
|
||
|
.should eq ["\"#{@hyphen_user.username}\".\"#{@hyphen_table.name}\""]
|
||
|
end
|
||
|
|
||
|
it 'returns multiple tables' do
|
||
|
@hyphen_user_layer.send(:affected_table_names, "SELECT * FROM \"#{@hyphen_table.name}\", #{@subuser_table.name}")
|
||
|
.should =~ ["\"#{@hyphen_user.username}\".\"#{@hyphen_table.name}\"",
|
||
|
"\"#{@hyphen_user.username}\".#{@subuser_table.name}"]
|
||
|
end
|
||
|
end
|
||
|
end
|