cartodb/services/data-repository/spec/unit/backend/sequel_spec.rb
2020-06-15 10:58:47 +08:00

105 lines
2.9 KiB
Ruby

require_relative '../../../backend/sequel'
require_relative '../../../../../app/models/visualization/member'
include CartoDB
describe DataRepository::Backend::Sequel do
before do
db = SequelRails.connection
db.create_table :visualizations do
UUID :id, primary_key: true
String :name
String :display_name
String :title
String :description
String :license
String :source
String :tags
String :map_id
String :active_layer_id
String :type
String :privacy
String :encrypted_password
String :password_salt
UUID :permission_id
Boolean :locked
String :parent_id
String :kind
String :prev_id
String :next_id
String :slide_transition_options
String :active_child
end
db.create_table :overlays do
String :id, null: false, primary_key: true
Integer :order, null: false
String :options, text: true
String :type
String :visualization_id, index: true
end
Visualization.repository = DataRepository::Backend::Sequel.new(db, :visualizations)
Overlay.repository = DataRepository::Backend::Sequel.new(db, :overlays)
end
describe '#store' do
it 'inserts a visualization' do
member = Visualization::Member.new(
name: 'visualization 1',
tags: ['foo', 'bar']
)
member.store
rehydrated_member = Visualization::Member.new(id: member.id)
rehydrated_member.fetch
rehydrated_member.name.should eq member.name
end
it 'updates the visualization if existing' do
member = Visualization::Member.new(
name: 'visualization 1',
tags: ['foo', 'bar']
)
member.store
Visualization.repository.collection(id: member.id).to_a.size.should eq 1
member.store
Visualization.repository.collection(id: member.id).to_a.size.should eq 1
Visualization::Member.new(id: member.id).fetch.store
Visualization.repository.collection(id: member.id).to_a.size.should eq 1
end
end
describe '#delete' do
it 'deletes a visualization from persistence' do
member = Visualization::Member.new(
name: 'visualization 1',
tags: ['foo', 'bar']
).store
id = member.id
Visualization.repository.fetch(id).nil?.should eq false
member.delete
Visualization.repository.fetch(id).nil?.should eq true
end
end
describe '#collection' do
it 'gets a collection of records using the passed filter' do
Visualization::Member.new(
name: 'visualization 1',
map_id: 1
).store
Visualization::Member.new(
name: 'visualization 2',
map_id: 1
).store
records = Visualization.repository.collection(map_id: 1)
records.to_a.size.should eq 2
end
end
end