Visualization::Collection -> Carto::Visualization

pull/12847/head
Juan Ignacio Sánchez Lara 7 years ago
parent c00362f10e
commit 5a48d469ca

@ -604,6 +604,10 @@ class Carto::Visualization < ActiveRecord::Base
end
end
def is_synced?
synchronization.present?
end
private
def generate_salt

@ -11,12 +11,12 @@ class ExploreAPI
def get_visualization_tables(visualization)
# We are using layers instead of related tables because with related tables we are connecting
# to the users databases and we are reaching the connections limit
table_names = visualization.layers(:data).map { |layer| extract_table_name(layer) }.uniq
table_names = visualization.data_layers.map { |layer| extract_table_name(layer) }.uniq
%[{#{table_names.compact.join(',')}}]
end
def get_map_layers(visualization)
visualization.layers(:data)
visualization.data_layers
end
def get_geometry_data(visualization)

@ -132,7 +132,7 @@ namespace :cartodb do
while (explore_visualizations = get_explore_visualizations(offset, types_filter)).length > 0
explore_visualization_ids = explore_visualizations.map { |ev| ev[:visualization_id] }
visualizations = CartoDB::Visualization::Collection.new.fetch(ids: explore_visualization_ids)
visualizations = Carto::Visualization.where(id: explore_visualization_ids)
visualizations.each do |vis|
dataset_count = explore_api.get_map_layers(vis).length
update_query = %[ UPDATE #{VISUALIZATIONS_TABLE} SET visualization_map_datasets = #{dataset_count} WHERE visualization_id = '#{vis.id}']
@ -189,7 +189,7 @@ namespace :cartodb do
end
explore_visualization_ids = explore_visualizations.map { |ev| ev[:visualization_id] }
visualizations = CartoDB::Visualization::Collection.new.fetch({ ids: explore_visualization_ids})
visualizations = Carto::Visualization.where(id: explore_visualization_ids)
update_result = update_visualizations(visualizations, explore_visualizations_by_visualization_id, explore_visualization_ids)
total_metadata_updated += update_result[:metadata_updated_count]

@ -58,7 +58,7 @@ shared_context 'visualization creation helpers' do
options = JSON.parse(CARTO_OPTIONS)
options["table_name"] = table_name
options["user_name"] = user_name
FactoryGirl.build(:layer, kind: kind, options: options, order: order, infowindow: infowindow)
FactoryGirl.build(:carto_layer, kind: kind, options: options, order: order, infowindow: infowindow)
end
before(:each) do

@ -30,6 +30,10 @@ FactoryGirl.define do
factory :carto_private_visualization do
privacy Carto::Visualization::PRIVACY_PRIVATE
end
factory :carto_table_visualization do
type Carto::Visualization::TYPE_CANONICAL
end
end
end

@ -11,63 +11,54 @@ describe 'ExploreAPI' do
end
it 'should return the visualization table' do
user = FactoryGirl.build(:user)
map = FactoryGirl.build(:map, user_id: user.id)
visualization = FactoryGirl.build(:table_visualization, user_id: user.id, map_id: map.id)
layer_1 = create_layer('table_1', 'user_name_1', 1)
visualization.stubs(:map).returns(map)
visualization.stubs(:layers).with(:data).returns([layer_1])
user = FactoryGirl.build(:carto_user)
map = FactoryGirl.build(:carto_map, user_id: user.id)
visualization = FactoryGirl.build(:carto_table_visualization, user_id: user.id, map: map)
visualization.map.layers << create_layer('table_1', 'user_name_1', 1)
tables = @explore_api.get_visualization_tables(visualization)
tables.should eq '{\"user_name_1\".table_1}'
end
it 'should return the visualizations tables with multiple layers' do
user = FactoryGirl.build(:user)
map = FactoryGirl.build(:map, user_id: user.id)
visualization = FactoryGirl.build(:derived_visualization, user_id: user.id, map_id: map.id)
layer_1 = create_layer('table_1', 'user_name_1', 1)
layer_2 = create_layer('table_2', 'user_name_2', 2)
visualization.stubs(:map).returns(map)
visualization.stubs(:layers).with(:data).returns([layer_1, layer_2])
user = FactoryGirl.build(:carto_user)
map = FactoryGirl.build(:carto_map, user_id: user.id)
visualization = FactoryGirl.build(:carto_visualization, user_id: user.id, map: map)
visualization.map.layers << create_layer('table_1', 'user_name_1', 1)
visualization.map.layers << create_layer('table_2', 'user_name_2', 2)
tables = @explore_api.get_visualization_tables(visualization)
tables.should eq '{\"user_name_1\".table_1,\"user_name_2\".table_2}'
end
it 'should return the visualizations tables with multiple layers without duplicates' do
user = FactoryGirl.build(:user)
map = FactoryGirl.build(:map, user_id: user.id)
visualization = FactoryGirl.build(:derived_visualization, user_id: user.id, map_id: map.id)
layer_1 = create_layer('table_1', 'user_name_1', 1)
layer_2 = create_layer('table_1', 'user_name_1', 2)
visualization.stubs(:map).returns(map)
visualization.stubs(:layers).with(:data).returns([layer_1, layer_2])
user = FactoryGirl.build(:carto_user)
map = FactoryGirl.build(:carto_map, user_id: user.id)
visualization = FactoryGirl.build(:carto_visualization, user_id: user.id, map: map)
visualization.map.layers << create_layer('table_1', 'user_name_1', 1)
visualization.map.layers << create_layer('table_1', 'user_name_1', 2)
tables = @explore_api.get_visualization_tables(visualization)
tables.should eq '{\"user_name_1\".table_1}'
end
it 'should empty if the is no user name or table name in the layer' do
user = FactoryGirl.build(:user)
map = FactoryGirl.build(:map, user_id: user.id)
visualization = FactoryGirl.build(:table_visualization, user_id: user.id, map_id: map.id)
layer_1 = create_layer('table_1', '', 1)
layer_2 = create_layer('', 'user_name_2', 1)
visualization.stubs(:map).returns(map)
visualization.stubs(:layers).with(:data).returns([layer_1, layer_2])
user = FactoryGirl.build(:carto_user)
map = FactoryGirl.build(:carto_map, user_id: user.id)
visualization = FactoryGirl.build(:carto_table_visualization, user_id: user.id, map: map)
visualization.map.layers << create_layer('table_1', '', 1)
visualization.map.layers << create_layer('', 'user_name_2', 1)
tables = @explore_api.get_visualization_tables(visualization)
tables.should eq '{}'
end
it 'should return the geometry data properly setted' do
user = FactoryGirl.build(:user)
map = FactoryGirl.build(:map,
user = FactoryGirl.build(:carto_user)
map = FactoryGirl.build(:carto_map,
user_id: user.id,
zoom: 3,
center: [30, 0],
view_bounds_ne: [85.0511, 179],
view_bounds_sw: [-85.0511, -179]
center: '[30, 0]',
view_bounds_ne: '[85.0511, 179]',
view_bounds_sw: '[-85.0511, -179]'
)
visualization = FactoryGirl.build(:derived_visualization, user_id: user.id, map_id: map.id)
visualization.stubs(:map).returns(map)
visualization = FactoryGirl.build(:carto_visualization, user_id: user.id, map: map)
geometry_data = @explore_api.get_geometry_data(visualization)
expected_data = {
zoom: 3,
@ -79,9 +70,8 @@ describe 'ExploreAPI' do
end
it 'should return empty if there is no map associated to the visualization' do
user = FactoryGirl.build(:user)
visualization = FactoryGirl.build(:derived_visualization, user_id: user.id)
visualization.stubs(:map).returns(nil)
user = FactoryGirl.build(:carto_user)
visualization = FactoryGirl.build(:carto_visualization, user_id: user.id, map: nil)
geometry_data = @explore_api.get_geometry_data(visualization)
expected_data = {}
geometry_data.should eq expected_data

Loading…
Cancel
Save