69 lines
2.1 KiB
Ruby
69 lines
2.1 KiB
Ruby
|
require_relative '../spec_helper'
|
||
|
|
||
|
describe CartoDB::TablePrivacyManager do
|
||
|
before(:all) do
|
||
|
@user = FactoryGirl.create(:valid_user, quota_in_bytes: 524288000, table_quota: 500, private_tables_enabled: true)
|
||
|
end
|
||
|
|
||
|
before(:each) do
|
||
|
bypass_named_maps
|
||
|
end
|
||
|
|
||
|
after(:all) do
|
||
|
@user.destroy
|
||
|
end
|
||
|
|
||
|
it 'should not change table privacy if setting it fails' do
|
||
|
table = ::Table.new
|
||
|
table.user_id = @user.id
|
||
|
table.name = 'manolo'
|
||
|
table.privacy = Carto::UserTable::PRIVACY_PRIVATE
|
||
|
table.save
|
||
|
|
||
|
table.privacy == Carto::UserTable::PRIVACY_PUBLIC
|
||
|
|
||
|
table.stubs(:set_from_table_privacy) { raise StandardError }
|
||
|
|
||
|
expect { table.save to_raise }.to raise_exception StandardError
|
||
|
|
||
|
table.privacy.should == Carto::UserTable::PRIVACY_PRIVATE
|
||
|
end
|
||
|
|
||
|
shared_examples_for 'table create_canonical_visualization support' do
|
||
|
describe '#apply_privacy_change' do
|
||
|
it 'changes canonical visualization privacy' do
|
||
|
table = create_table(user_id: @user.id, name: "aaa", privacy: UserTable::PRIVACY_PRIVATE)
|
||
|
previous_privacy = table.instance_eval { previous_privacy }
|
||
|
user_table = table.instance_eval { @user_table }
|
||
|
privacy_changed = table.instance_eval { privacy_changed? }
|
||
|
|
||
|
manager = CartoDB::TablePrivacyManager.new(user_table)
|
||
|
manager.apply_privacy_change(table, previous_privacy, privacy_changed)
|
||
|
user_table.reload
|
||
|
user_table.table_visualization.privacy.should eq Carto::Visualization::PRIVACY_PRIVATE
|
||
|
|
||
|
table.privacy = UserTable::PRIVACY_PUBLIC
|
||
|
table.save
|
||
|
user_table.reload
|
||
|
user_table.table_visualization.privacy.should eq Carto::Visualization::PRIVACY_PUBLIC
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'legacy models' do
|
||
|
it_behaves_like 'table create_canonical_visualization support'
|
||
|
|
||
|
before(:each) do
|
||
|
Table.any_instance.stubs(:model_class).returns(::UserTable)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'new models' do
|
||
|
it_behaves_like 'table create_canonical_visualization support'
|
||
|
|
||
|
before(:each) do
|
||
|
Table.any_instance.stubs(:model_class).returns(Carto::UserTable)
|
||
|
end
|
||
|
end
|
||
|
end
|