cartodb/spec/requests/carto/builder/datasets_controller_spec.rb
2020-06-15 10:58:47 +08:00

111 lines
3.4 KiB
Ruby

require_relative '../../../spec_helper'
describe Carto::Builder::DatasetsController do
include Warden::Test::Helpers
describe '#show' do
before(:all) do
CartoDB::UserModule::DBService.any_instance.stubs(:enable_remote_db_user).returns(true)
bypass_named_maps
@user = FactoryGirl.build(:valid_user, builder_enabled: true).save
@table = FactoryGirl.create(:carto_user_table, :full, user_id: @user.id, map: @map)
@map = @table.map
@visualization = @table.table_visualization
end
before(:each) do
login(@user)
end
after(:all) do
@visualization.destroy
@table.destroy
@map.destroy
CartoDB::UserModule::DBService.any_instance.stubs(:enable_remote_db_user).returns(true)
@user.destroy
@feature_flag.destroy
end
it 'redirects to public view non-builder users requests' do
@user.stubs(:builder_enabled).returns(false)
get builder_dataset_url(id: @visualization.id)
response.status.should eq 302
response.location.should end_with public_table_map_path(id: @visualization.id)
end
it 'returns 404 for non-existent visualizations' do
get builder_dataset_url(id: UUIDTools::UUID.timestamp_create.to_s)
response.status.should == 404
end
it 'redirects to public view for visualizations not writable by user' do
bypass_named_maps
@other_visualization = FactoryGirl.create(:carto_visualization, type: Carto::Visualization::TYPE_CANONICAL)
get builder_dataset_url(id: @other_visualization.id)
response.status.should eq 302
response.location.should end_with public_table_map_path(id: @other_visualization.id)
end
it 'returns visualization' do
get builder_dataset_url(id: @visualization.id)
response.status.should == 200
response.body.should include(@visualization.id)
end
it 'does not show derived visualizations' do
Carto::Visualization.any_instance.stubs(:type).returns(Carto::Visualization::TYPE_DERIVED)
get builder_dataset_url(id: @visualization.id)
response.status.should == 404
end
it 'does not show raster visualizations' do
Carto::Visualization.any_instance.stubs(:kind).returns(Carto::Visualization::KIND_RASTER)
get builder_dataset_url(id: @visualization.id)
response.status.should == 404
end
it 'does not include google maps if not configured' do
@map.provider = 'googlemaps'
@map.save
@user.google_maps_key = ''
@user.save
get builder_dataset_url(id: @visualization.id)
response.status.should == 200
response.body.should_not include("maps.google.com/maps/api/js")
end
it 'includes the google maps client id if configured' do
@map.provider = 'googlemaps'
@map.save
@user.google_maps_key = 'client=wadus_cid'
@user.save
get builder_dataset_url(id: @visualization.id)
response.status.should == 200
response.body.should include("maps.googleapis.com/maps/api/js?v=3.32&client=wadus_cid")
end
it 'does not include google maps if the map does not need it' do
@map.provider = 'leaflet'
@map.save
@user.google_maps_key = 'client=wadus_cid'
@user.save
get builder_dataset_url(id: @visualization.id)
response.status.should == 200
response.body.should_not include("maps.googleapis.com/maps/api/js")
end
end
end