59 lines
2.0 KiB
Ruby
59 lines
2.0 KiB
Ruby
require_relative '../../helpers/unique_names_helper'
|
|
|
|
module CartoDB
|
|
module Factories
|
|
include UniqueNamesHelper
|
|
|
|
def new_table(attributes = {})
|
|
attributes = attributes.dup
|
|
table = ::Table.new(attributes)
|
|
table.user_id = if attributes[:user_id].nil?
|
|
UUIDTools::UUID.timestamp_create.to_s
|
|
else
|
|
attributes.delete(:user_id)
|
|
end
|
|
|
|
table.name = if attributes.keys.include?(:name) && attributes[:name] == nil
|
|
attributes.delete(:name)
|
|
nil
|
|
else
|
|
attributes[:name] || unique_name('table')
|
|
end
|
|
|
|
table
|
|
end
|
|
|
|
def create_table(attributes = {})
|
|
table = new_table(attributes)
|
|
table.save
|
|
table.reload
|
|
end
|
|
|
|
def create_visualization(user, attributes = {})
|
|
headers = {'CONTENT_TYPE' => 'application/json'}
|
|
bypass_named_maps
|
|
post_json api_v1_visualizations_create_url(user_domain: user.username, api_key: user.api_key), visualization_template(user, attributes) do |response|
|
|
id = response.body[:id]
|
|
CartoDB::Visualization::Member.new(id: id).fetch
|
|
end
|
|
end
|
|
|
|
def visualization_template(user, attributes = {})
|
|
{
|
|
name: attributes.fetch(:name, unique_name('viz')),
|
|
display_name: attributes.fetch(:display_name, nil),
|
|
tags: attributes.fetch(:tags, ['foo', 'bar']),
|
|
map_id: attributes.fetch(:map_id, ::Map.create(user_id: user.id).id),
|
|
description: attributes.fetch(:description, 'bogus'),
|
|
type: attributes.fetch(:type, 'derived'),
|
|
privacy: attributes.fetch(:privacy, 'public'),
|
|
source_visualization_id: attributes.fetch(:source_visualization_id, nil),
|
|
parent_id: attributes.fetch(:parent_id, nil),
|
|
locked: attributes.fetch(:locked, false),
|
|
prev_id: attributes.fetch(:prev_id, nil),
|
|
next_id: attributes.fetch(:next_id, nil)
|
|
}
|
|
end
|
|
end
|
|
end
|