cartodb/spec/lib/tasks/fix_unique_legends_spec.rb
2020-06-15 10:58:47 +08:00

55 lines
2.0 KiB
Ruby

require 'spec_helper_min'
require 'rake'
require 'factories/carto_visualizations'
describe 'cartodb:fix_unique_legends' do
include Carto::Factories::Visualizations
before(:each) do
Rake.application.rake_require "tasks/fix_unique_legends"
Rake::Task.define_task(:environment)
Rake.application['cartodb:fix_unique_legends'].reenable
user = FactoryGirl.create(:carto_user)
_, _, _, visualization = create_full_visualization(user)
@layer = visualization.layers.find(&:data_layer?)
@legend = Carto::Legend.create!(layer: @layer,
title: "bird_name",
pre_html: "",
post_html: "",
type: "torque",
definition: {
"categories" => [
{ "title" => "Perico", "color"=>"#ff382a", "icon"=>"" },
{ "title" => "Palotes", "color"=>"#0038d1", "icon"=>"" },
{ "title" => "Jr", "color"=>"#d4cf34", "icon"=>"" }
]
},
conf: { "columns" => [] })
end
it 'deletes duplicate legend of unique type' do
legend2 = @legend.dup
legend2.type = 'choropleth'
legend2.updated_at = @legend.updated_at - 1.minute
legend2.save(validate: false)
@layer.reload.legends.count.should eq 2
Rake.application['cartodb:fix_unique_legends'].invoke
@layer.reload.legends.count.should eq 1
@layer.reload.legends.first.id.should eq @legend.id
end
it 'keeps layers if different type' do
legend2 = @legend.dup
legend2.type = 'bubble'
legend2.save(validate: false)
@layer.reload.legends.count.should eq 2
Rake.application['cartodb:fix_unique_legends'].invoke
@layer.reload.legends.count.should eq 2
end
end