156 lines
5.0 KiB
Ruby
156 lines
5.0 KiB
Ruby
|
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
|