cartodb/spec/services/carto/visualization_backup_service_spec.rb
2020-06-15 10:58:47 +08:00

113 lines
3.4 KiB
Ruby

require 'spec_helper_min'
describe Carto::VisualizationBackupService do
include Carto::Factories::Visualizations
include Carto::VisualizationBackupService
include_context 'user helper'
describe '#create_visualization_backup' do
before(:all) do
@map = FactoryGirl.create(:carto_map_with_layers, user: @carto_user)
end
before(:each) do
Carto::VisualizationBackup.all.map(&:destroy)
end
after(:each) do
Carto::VisualizationBackup.all.map(&:destroy)
end
after(:all) do
@map.destroy
end
it 'creates a backup with create_visualization_backup' do
visualization = FactoryGirl.create(:carto_visualization, user: @carto_user, map: @map)
Carto::VisualizationBackup.all.count.should eq 0
create_visualization_backup(
visualization: visualization,
category: Carto::VisualizationBackup::CATEGORY_VISUALIZATION,
with_mapcaps: true,
with_password: true
)
Carto::VisualizationBackup.all.count.should eq 1
backup = Carto::VisualizationBackup.where(visualization_id: visualization.id).first
backup.should_not eq nil
backup.user_id.should eq @carto_user.id
backup.created_at.should_not eq nil
backup.category.should eq Carto::VisualizationBackup::CATEGORY_VISUALIZATION
backup.export.should_not be_empty
backup.destroy
visualization.destroy
end
it 'fails backup creation without visualization but not raises' do
create_visualization_backup(
visualization: nil,
category: Carto::VisualizationBackup::CATEGORY_VISUALIZATION,
with_mapcaps: true,
with_password: true
)
Carto::VisualizationBackup.all.count.should eq 0
end
it 'fails backup creation without category but not raises' do
visualization = FactoryGirl.create(:carto_visualization, user: @carto_user, map: @map)
create_visualization_backup(
visualization: visualization,
category: nil,
with_mapcaps: true,
with_password: true
)
Carto::VisualizationBackup.all.count.should eq 0
visualization.destroy
end
end
describe '#create_visualization_backup' do
before(:all) do
@map = FactoryGirl.create(:carto_map_with_layers, user: @carto_user)
Carto::VisualizationBackup.all.map(&:destroy)
@visualization = FactoryGirl.create(:carto_visualization, user: @carto_user, map: @map)
@visualization.destroy # creates a Visualization backup
end
after(:all) do
@map.destroy
Carto::VisualizationBackup.all.map(&:destroy)
end
it 'restores a visualization backup' do
Carto::Visualization.where(user: @carto_user).count.should eq 0
backup = Carto::VisualizationBackup.first
visualization = restore_visualization_backup(backup.id)
visualization.should_not eq nil
visualization.id.should eq @visualization.id
visualization.name.should eq @visualization.name
visualization.type.should eq @visualization.type
Carto::Visualization.where(user: @carto_user).count.should eq 1
end
it 'throws if the visualization already exists' do
backup = Carto::VisualizationBackup.first
restore_visualization_backup(backup.id)
expect {
restore_visualization_backup(backup.id)
}.to raise_error('A visualization with the same id as the backup one already exists')
end
end
end