cartodb-4.29/spec/requests/visualizations_controller_helper_spec.rb
2020-06-15 10:58:47 +08:00

321 lines
12 KiB
Ruby

require_relative '../spec_helper'
require_relative '../../app/controllers/visualizations_controller_helper'
describe VisualizationsControllerHelper do
include VisualizationsControllerHelper
include CartoDB::Factories
include Carto::Factories::Visualizations
before(:all) do
@organization = create_organization_with_users
@org_user = Carto::User.find(@organization.users.first.id)
@org_user_shared = Carto::User.find(@organization.users.last.id)
@free_user = FactoryGirl.create(:carto_user)
@free_map, @free_table, @free_table_visualization, @free_visualization = create_full_visualization(@free_user)
@org_map, @org_table, @org_table_visualization, @org_visualization = create_full_visualization(@org_user)
@free_visualization.name = 'free viz'
@free_visualization.save
end
after(:all) do
destroy_full_visualization(@org_map, @org_table, @org_table_visualization, @org_visualization)
destroy_full_visualization(@map, @table, @table_visualization, @visualization)
end
def setup_for_user(user)
user_request = mock
user_request.stubs(:params).returns(user_domain: user.username)
stubs(:request).returns(user_request)
end
describe '#free_user' do
before(:each) do
setup_for_user(@free_user)
end
describe '#derived_visualization' do
it 'locates derived visualization by id' do
visualization = load_visualization_from_id_or_name(@free_visualization.id)
visualization.should eq @free_visualization
end
it 'locates derived visualization by name' do
visualization = load_visualization_from_id_or_name(@free_visualization.name)
visualization.should eq @free_visualization
end
it 'locates derived visualization by schema and id' do
visualization = load_visualization_from_id_or_name("public.#{@free_visualization.id}")
visualization.should eq @free_visualization
end
it 'locates derived visualization by schema and name' do
visualization = load_visualization_from_id_or_name("public.#{@free_visualization.name}")
visualization.should eq @free_visualization
end
it 'does locate derived visualization by another user and id' do
setup_for_user(@org_user)
visualization = load_visualization_from_id_or_name(@free_visualization.id)
visualization.should eq @free_visualization
end
it 'does not locate derived visualization by another user and name' do
setup_for_user(@org_user)
visualization = load_visualization_from_id_or_name(@free_visualization.name)
visualization.should be_nil
end
it 'does not locate derived visualization by another user and schema.name' do
setup_for_user(@org_user)
visualization = load_visualization_from_id_or_name("public.#{@free_visualization.name}")
visualization.should be_nil
end
it 'does not locate derived visualization with incorrect schema' do
visualization = load_visualization_from_id_or_name("invalid.#{@free_visualization.name}")
visualization.should be_nil
end
end
describe '#table_visualization' do
it 'locates table visualization by id' do
visualization = load_visualization_from_id_or_name(@free_table_visualization.id)
visualization.should eq @free_table_visualization
end
it 'locates table visualization by name' do
visualization = load_visualization_from_id_or_name(@free_table_visualization.name)
visualization.should eq @free_table_visualization
end
it 'locates table visualization by schema and id' do
visualization = load_visualization_from_id_or_name("public.#{@free_table_visualization.id}")
visualization.should eq @free_table_visualization
end
it 'locates table visualization by schema and name' do
visualization = load_visualization_from_id_or_name("public.#{@free_table_visualization.name}")
visualization.should eq @free_table_visualization
end
it 'does locate table visualization by another user and id' do
setup_for_user(@org_user)
visualization = load_visualization_from_id_or_name(@free_table_visualization.id)
visualization.should eq @free_table_visualization
end
it 'does not locate table visualization by another user and name' do
setup_for_user(@org_user)
visualization = load_visualization_from_id_or_name(@free_table_visualization.name)
visualization.should be_nil
end
it 'does not locate table visualization by another user and schema.name' do
setup_for_user(@org_user)
visualization = load_visualization_from_id_or_name("public.#{@free_table_visualization.name}")
visualization.should be_nil
end
it 'does not locate table visualization with incorrect schema' do
visualization = load_visualization_from_id_or_name("invalid.#{@free_table_visualization.name}")
visualization.should be_nil
end
end
end
describe '#org_user' do
before(:each) do
setup_for_user(@org_user)
end
describe '#derived_visualization' do
it 'locates derived visualization by id' do
visualization = load_visualization_from_id_or_name(@org_visualization.id)
visualization.should eq @org_visualization
end
it 'locates derived visualization by name' do
visualization = load_visualization_from_id_or_name(@org_visualization.name)
visualization.should eq @org_visualization
end
it 'locates derived visualization by schema and id' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_visualization.id}")
visualization.should eq @org_visualization
end
it 'locates derived visualization by schema and name' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_visualization.name}")
visualization.should eq @org_visualization
end
it 'does locate derived visualization by another user and id' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name(@org_visualization.id)
visualization.should eq @org_visualization
end
it 'does not locate derived visualization by another user and name' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name(@org_visualization.name)
visualization.should be_nil
end
it 'does not locate derived visualization by another user and schema.name' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_visualization.name}")
visualization.should be_nil
end
it 'does not locate derived visualization with incorrect schema' do
visualization = load_visualization_from_id_or_name("#{@org_user_shared.database_schema}.#{@org_visualization.name}")
visualization.should be_nil
end
end
describe '#table_visualization' do
it 'locates table visualization by id' do
visualization = load_visualization_from_id_or_name(@org_table_visualization.id)
visualization.should eq @org_table_visualization
end
it 'locates table visualization by name' do
visualization = load_visualization_from_id_or_name(@org_table_visualization.name)
visualization.should eq @org_table_visualization
end
it 'locates table visualization by schema and id' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_table_visualization.id}")
visualization.should eq @org_table_visualization
end
it 'locates table visualization by schema and name' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_table_visualization.name}")
visualization.should eq @org_table_visualization
end
it 'does locate table visualization by another user and id' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name(@org_table_visualization.id)
visualization.should eq @org_table_visualization
end
it 'does not locate table visualization by another user and name' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name(@org_table_visualization.name)
visualization.should be_nil
end
it 'does not locate table visualization by another user and schema.name' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_table_visualization.name}")
visualization.should be_nil
end
it 'does not locate table visualization with incorrect schema' do
visualization = load_visualization_from_id_or_name("#{@org_user_shared.database_schema}.#{@org_table_visualization.name}")
visualization.should be_nil
end
end
end
describe '#org_shared' do
before(:each) do
setup_for_user(@org_user_shared)
end
describe '#derived_visualization' do
it 'locates shared derived visualization by id' do
visualization = load_visualization_from_id_or_name(@org_visualization.id)
visualization.should eq @org_visualization
end
it 'locates shared derived visualization by schema and id' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_visualization.id}")
visualization.should eq @org_visualization
end
it 'locates shared derived visualization by schema and name' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_visualization.name}")
visualization.should eq @org_visualization
end
it 'does locate shared derived visualization by another user and id' do
visualization = load_visualization_from_id_or_name(@org_visualization.id)
visualization.should eq @org_visualization
end
it 'does not locate shared derived visualization by another user and name' do
visualization = load_visualization_from_id_or_name(@org_visualization.name)
visualization.should be_nil
end
it 'does not locate shared derived visualization by another user and schema.name' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_visualization.name}")
visualization.should be_nil
end
it 'does not locate shared derived visualization with incorrect schema' do
visualization = load_visualization_from_id_or_name("#{@org_user_shared.database_schema}.#{@org_visualization.name}")
visualization.should be_nil
end
end
describe '#table_visualization' do
it 'locates shared table visualization by id' do
visualization = load_visualization_from_id_or_name(@org_table_visualization.id)
visualization.should eq @org_table_visualization
end
it 'locates shared table visualization by schema and id' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_table_visualization.id}")
visualization.should eq @org_table_visualization
end
it 'locates shared table visualization by schema and name' do
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_table_visualization.name}")
visualization.should eq @org_table_visualization
end
it 'does locate shared table visualization by another user and id' do
visualization = load_visualization_from_id_or_name(@org_table_visualization.id)
visualization.should eq @org_table_visualization
end
it 'does not locate shared table visualization by another user and name' do
visualization = load_visualization_from_id_or_name(@org_table_visualization.name)
visualization.should be_nil
end
it 'does not locate shared table visualization by another user and schema.name' do
setup_for_user(@free_user)
visualization = load_visualization_from_id_or_name("#{@org_user.database_schema}.#{@org_table_visualization.name}")
visualization.should be_nil
end
it 'does not locate shared table visualization with incorrect schema' do
visualization = load_visualization_from_id_or_name("#{@org_user_shared.database_schema}.#{@org_table_visualization.name}")
visualization.should be_nil
end
end
end
end