You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
5.0 KiB

require_relative '../../spec_helper'
require 'rspec/core'
require 'ostruct'
require_relative '../../../app/models/layer/presenter'
include CartoDB
describe CartoDB::LayerModule::Presenter do
describe '#to_vizjson_v2' do
it 'wraps the sql if query_wrapper available' do
layer = OpenStruct.new(
public_values: { 'options' => { 'visible' => nil } },
tooltip: { 'template' => 'blahblah' },
kind: 'carto',
options: {
'query' => '',
'tile_style' => '',
'interactivity' => '',
'style_version' => '',
'table_name' => '000cd294-b124-4f82-b569-0f7fe41d2db8',
'query_wrapper' => 'bogus tpl <%= sql %>'
}
)
vizjson = CartoDB::LayerModule::Presenter.new(layer).to_vizjson_v2
vizjson.fetch(:options).fetch(:sql).should eq 'bogus tpl select * from "000cd294-b124-4f82-b569-0f7fe41d2db8"'
layer = OpenStruct.new(
public_values: { 'options' => { 'visible' => nil } },
tooltip: { 'template' => 'blahblah' },
kind: 'carto',
options: {
'query' => '',
'tile_style' => '',
'interactivity' => '',
'style_version' => '',
'table_name' => 'bogus_table',
'query_wrapper' => 'bogus template <%= sql %>'
}
)
vizjson = CartoDB::LayerModule::Presenter.new(layer).to_vizjson_v2
vizjson.fetch(:options).fetch(:sql).should eq 'bogus template select * from bogus_table'
layer = OpenStruct.new(
public_values: { 'options' => {'visible' => nil} },
tooltip: { 'template' => 'blahblah' },
kind: 'carto',
options: {
'query' => 'select the_geom from bogus_table',
'tile_style' => '',
'interactivity' => '',
'style_version' => '',
'table_name' => 'bogus_table',
'query_wrapper' => 'bogus template <%= sql %>'
}
)
vizjson = CartoDB::LayerModule::Presenter.new(layer).to_vizjson_v2
vizjson.fetch(:options).fetch(:sql)
.should == 'bogus template select the_geom from bogus_table'
end
it 'returns `sql_wrap` with `query_wrapper` if present and with style properties nil or not autogenerated' do
query_wrapper = 'bogus template <%= sql %>'
layer = OpenStruct.new(
public_values: { 'options' => { 'visible' => nil } },
kind: 'carto',
options: {
'interactivity' => '',
'style_version' => '',
'table_name' => 'bogus_table',
'query_wrapper' => query_wrapper,
'style_properties' => {}
}
)
vizjson = CartoDB::LayerModule::Presenter.new(layer).to_vizjson_v2
vizjson[:options]['sql_wrap'].should eq query_wrapper
layer = OpenStruct.new(
public_values: { 'options' => { 'visible' => nil } },
kind: 'carto',
options: {
'interactivity' => '',
'style_version' => '',
'table_name' => 'bogus_table',
'query_wrapper' => query_wrapper,
'style_properties' => { 'autogenerated' => false }
}
)
vizjson = CartoDB::LayerModule::Presenter.new(layer).to_vizjson_v2
vizjson[:options]['sql_wrap'].should eq query_wrapper
end
it 'does not return `sql_wrap` with `query_wrapper` if present without style properties or autogenerated' do
query_wrapper = 'bogus template <%= sql %>'
layer = OpenStruct.new(
public_values: { 'options' => { 'visible' => nil } },
kind: 'carto',
options: {
'interactivity' => '',
'style_version' => '',
'table_name' => 'bogus_table',
'query_wrapper' => query_wrapper
}
)
vizjson = CartoDB::LayerModule::Presenter.new(layer).to_vizjson_v2
vizjson[:options]['sql_wrap'].should be_nil
layer = OpenStruct.new(
public_values: { 'options' => { 'visible' => nil } },
kind: 'carto',
options: {
'interactivity' => '',
'style_version' => '',
'table_name' => 'bogus_table',
'query_wrapper' => query_wrapper,
'style_properties' => { 'autogenerated' => true }
}
)
vizjson = CartoDB::LayerModule::Presenter.new(layer).to_vizjson_v2
vizjson[:options]['sql_wrap'].should be_nil
end
it 'keeps the visible attribute when rendering' do
layer = OpenStruct.new(
kind: 'torque',
options: {
'query' => 'select the_geom from bogus_table',
'tile_style' => '',
'interactivity' => '',
'style_version' => '',
'table_name' => 'bogus_table',
'query_wrapper' => 'bogus template <%= sql %>',
'visible' => true
},
)
options = {
visualization_id: '',
sql: '',
}
vizjson = CartoDB::LayerModule::Presenter.new(layer, options).to_vizjson_v2
vizjson[:options]['visible'].should == true
end
end
end