|
|
|
@ -31,7 +31,7 @@ describe Carto::RedisExportService do
|
|
|
|
|
table_visualization.save!
|
|
|
|
|
visualization.save!
|
|
|
|
|
|
|
|
|
|
yield(visualization)
|
|
|
|
|
yield(visualization, table_visualization)
|
|
|
|
|
ensure
|
|
|
|
|
map.destroy
|
|
|
|
|
table.destroy
|
|
|
|
@ -48,6 +48,33 @@ describe Carto::RedisExportService do
|
|
|
|
|
$tables_metadata.del("map_tpl|#{visualization.user.username}")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def with_synchronization(visualization)
|
|
|
|
|
synchronization = create(:carto_synchronization, visualization: visualization)
|
|
|
|
|
|
|
|
|
|
yield(synchronization)
|
|
|
|
|
ensure
|
|
|
|
|
synchronization.destroy
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def with_do_subscription(synchronization)
|
|
|
|
|
redis_key = "do:#{@user.username}:datasets"
|
|
|
|
|
$users_metadata.hset(redis_key, 'bq', [{
|
|
|
|
|
dataset_id: 'dataset-id',
|
|
|
|
|
status: 'active',
|
|
|
|
|
available_in: ['bq', 'bq-sample'],
|
|
|
|
|
license_type: 'full-access',
|
|
|
|
|
type: 'dataset',
|
|
|
|
|
sync_status: 'synced',
|
|
|
|
|
sync_table: synchronization.visualization.user_table.name,
|
|
|
|
|
sync_table_id: synchronization.visualization.user_table.id,
|
|
|
|
|
synchronization_id: synchronization.id
|
|
|
|
|
}].to_json)
|
|
|
|
|
|
|
|
|
|
yield
|
|
|
|
|
ensure
|
|
|
|
|
$users_metadata.del(redis_key)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_export(export, prefix)
|
|
|
|
|
expect(export[:redis][:users_metadata].keys.sort).to eq(["#{prefix}:hash", "#{prefix}:set", "#{prefix}:string"])
|
|
|
|
|
end
|
|
|
|
@ -57,6 +84,15 @@ describe Carto::RedisExportService do
|
|
|
|
|
expect(export[:redis][:tables_metadata]["map_tpl|#{visualization.user.username}"]['custom_named']).to eq(Base64.encode64("{:c=>\"custom\"}"))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_do_subscriptions(export, synchronization)
|
|
|
|
|
expect(export[:redis][:do_subscriptions].keys).to eq(["do:#{@user.username}:datasets"])
|
|
|
|
|
expect(
|
|
|
|
|
JSON.parse(
|
|
|
|
|
export[:redis][:do_subscriptions]["do:#{@user.username}:datasets"]
|
|
|
|
|
).first['synchronization_id']
|
|
|
|
|
).to eq(synchronization.id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_redis(prefix)
|
|
|
|
|
expect($users_metadata.get("#{prefix}:string")).to eq('something')
|
|
|
|
|
expect($users_metadata.zrange("#{prefix}:set", 0, -1, withscores: true)).to eq([['set_key', 5.0]])
|
|
|
|
@ -67,6 +103,13 @@ describe Carto::RedisExportService do
|
|
|
|
|
expect($tables_metadata.hgetall("map_tpl|#{@user.username}")). to eq("custom_named" => "{:c=>\"custom\"}")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_redis_do_subscriptions
|
|
|
|
|
expect($users_metadata.hget("do:#{@user.username}:datasets", 'bq').present?).to be_true
|
|
|
|
|
expect(
|
|
|
|
|
JSON.parse($users_metadata.hget("do:#{@user.username}:datasets", 'bq')).first['dataset_id']
|
|
|
|
|
).to eq('dataset-id')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
let(:service) { Carto::RedisExportService.new }
|
|
|
|
|
|
|
|
|
|
describe '#export' do
|
|
|
|
@ -93,13 +136,24 @@ describe Carto::RedisExportService do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'includes non-cartodb-managed named maps' do
|
|
|
|
|
with_visualization do |visualization|
|
|
|
|
|
with_visualization do |visualization, _|
|
|
|
|
|
with_named_maps(visualization) do
|
|
|
|
|
export = service.export_user_json_hash(@user)
|
|
|
|
|
check_named_maps(export, visualization)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'includes DO subscriptions' do
|
|
|
|
|
with_visualization do |_, table_visualization|
|
|
|
|
|
with_synchronization(table_visualization) do |synchronization|
|
|
|
|
|
with_do_subscription(synchronization) do
|
|
|
|
|
export = service.export_user_json_hash(@user)
|
|
|
|
|
check_do_subscriptions(export, synchronization)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '#export + import' do
|
|
|
|
@ -111,7 +165,7 @@ describe Carto::RedisExportService do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'copies all keys under user:username for users' do
|
|
|
|
|
with_visualization do |visualization|
|
|
|
|
|
with_visualization do |visualization, _|
|
|
|
|
|
prefix = "user:#{@user.username}"
|
|
|
|
|
export = with_redis_keys(prefix) do
|
|
|
|
|
with_named_maps(visualization) do
|
|
|
|
@ -123,5 +177,18 @@ describe Carto::RedisExportService do
|
|
|
|
|
check_redis_named_maps
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'copies DO subscriptions' do
|
|
|
|
|
with_visualization do |_, table_visualization|
|
|
|
|
|
with_synchronization(table_visualization) do |synchronization|
|
|
|
|
|
export = with_do_subscription(synchronization) do
|
|
|
|
|
service.export_user_json_hash(@user)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
service.restore_redis_do_subscriptions_from_json_export(export.to_json, @user)
|
|
|
|
|
check_redis_do_subscriptions
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|