cartodb/spec/models/table_privacy_manager_spec.rb

69 lines
2.1 KiB
Ruby
Raw Permalink Normal View History

2020-06-15 10:58:47 +08:00
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