Initial commit
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
require_relative '../../spec_helper'
|
||||
require_relative '../../../app/models/visualization/relator'
|
||||
require_relative '../../../app/models/visualization/member'
|
||||
require_relative '../../../app/models/visualization/collection'
|
||||
require_relative '../../doubles/support_tables.rb'
|
||||
|
||||
include CartoDB
|
||||
|
||||
describe Visualization::Relator do
|
||||
before do
|
||||
@db = SequelRails.connection
|
||||
Sequel.extension(:pagination)
|
||||
|
||||
Visualization.repository = DataRepository::Backend::Sequel.new(@db, :visualizations)
|
||||
end
|
||||
|
||||
before(:all) do
|
||||
@user = create_user({
|
||||
email: 'admin@cartotest.com',
|
||||
username: 'admin',
|
||||
password: '000123456'
|
||||
})
|
||||
@carto_user = Carto::User.find(@user.id)
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
bypass_named_maps
|
||||
delete_user_data(@user)
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
bypass_named_maps
|
||||
@user.destroy
|
||||
end
|
||||
|
||||
describe '#estimated_row_count and #actual_row_count' do
|
||||
|
||||
it 'should query Table estimated an actual row count methods' do
|
||||
::Table.any_instance.stubs(:row_count_and_size).returns(row_count: 999)
|
||||
::Table.any_instance.stubs(:actual_row_count).returns(1000)
|
||||
table = create_table(name: 'table1', user_id: @user.id)
|
||||
vis = table.table_visualization
|
||||
vis.estimated_row_count.should == 999
|
||||
vis.actual_row_count.should == 1000
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
# For relator->permission
|
||||
@user_mock = create_mocked_user
|
||||
CartoDB::Visualization::Relator.any_instance.stubs(:user).returns(@user_mock)
|
||||
|
||||
support_tables_mock = Doubles::Visualization::SupportTables.new
|
||||
Visualization::Relator.any_instance.stubs(:support_tables).returns(support_tables_mock)
|
||||
end
|
||||
|
||||
describe '#related_canonical_visualizations' do
|
||||
|
||||
it 'should return the canonical visualizations associated to a derived visualization' do
|
||||
table1 = create_table({:name => 'table1', :user_id => @user.id})
|
||||
table2 = create_table({:name => 'table2', :user_id => @user.id})
|
||||
vis_table1 = create_vis_from_table(@carto_user, table1)
|
||||
create_vis_from_table(@carto_user, table2)
|
||||
|
||||
vis_table1.related_canonical_visualizations.map(&:id).should == [table1.table_visualization.id]
|
||||
end
|
||||
end
|
||||
|
||||
describe '#children' do
|
||||
it 'tests .children and its sorting' do
|
||||
Visualization::Member.any_instance.stubs(:supports_private_maps?).returns(true)
|
||||
|
||||
parent = Visualization::Member.new(random_attributes_for_vis_member({
|
||||
name:'PARENT',
|
||||
user_id: @user_mock.id,
|
||||
type: Visualization::Member::TYPE_DERIVED }))
|
||||
parent = parent.store.fetch
|
||||
|
||||
# Create unsorted on purpose
|
||||
member_d = Visualization::Member.new(random_attributes_for_vis_member({
|
||||
name:'D', type: Visualization::Member::TYPE_SLIDE,
|
||||
user_id: @user_mock.id,
|
||||
parent_id: parent.id }))
|
||||
member_d = member_d.store.fetch
|
||||
member_c = Visualization::Member.new(random_attributes_for_vis_member({
|
||||
name:'C', type: Visualization::Member::TYPE_SLIDE,
|
||||
user_id: @user_mock.id,
|
||||
parent_id: parent.id }))
|
||||
member_c = member_c.store.fetch
|
||||
member_b = Visualization::Member.new(random_attributes_for_vis_member({
|
||||
name:'B', type: Visualization::Member::TYPE_SLIDE,
|
||||
user_id: @user_mock.id,
|
||||
parent_id: parent.id }))
|
||||
member_b = member_b.store.fetch
|
||||
member_e = Visualization::Member.new(random_attributes_for_vis_member({
|
||||
name:'E', type: Visualization::Member::TYPE_SLIDE,
|
||||
user_id: @user_mock.id,
|
||||
parent_id: parent.id }))
|
||||
member_e = member_e.store.fetch
|
||||
member_a = Visualization::Member.new(random_attributes_for_vis_member({
|
||||
name:'A', type: Visualization::Member::TYPE_SLIDE,
|
||||
user_id: @user_mock.id,
|
||||
parent_id: parent.id }))
|
||||
member_a = member_a.store.fetch
|
||||
|
||||
# A -> B -> C -> D -> E
|
||||
member_a.set_next_list_item! member_b
|
||||
member_b.set_next_list_item! member_c
|
||||
member_c.set_next_list_item! member_d
|
||||
member_d.set_next_list_item! member_e
|
||||
member_a.fetch
|
||||
member_b.fetch
|
||||
member_c.fetch
|
||||
member_d.fetch
|
||||
member_e.fetch
|
||||
|
||||
parent.fetch
|
||||
|
||||
children = parent.children
|
||||
|
||||
children.length.should eq 5
|
||||
|
||||
children[0].id.should eq member_a.id
|
||||
children[1].id.should eq member_b.id
|
||||
children[2].id.should eq member_c.id
|
||||
children[3].id.should eq member_d.id
|
||||
children[4].id.should eq member_e.id
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
|
||||
def create_vis_from_table(user, table)
|
||||
blender = Visualization::TableBlender.new(user, [table])
|
||||
map = blender.blend
|
||||
vis = Visualization::Member.new(
|
||||
name: 'wadus_vis',
|
||||
map_id: map.id,
|
||||
type: Visualization::Member::TYPE_DERIVED,
|
||||
privacy: blender.blended_privacy,
|
||||
user_id: user.id
|
||||
)
|
||||
vis.store
|
||||
vis
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user