require File.join(File.dirname(__FILE__), '../spec_helper.rb')
module ActiveRecord
module ConnectionAdapters
describe HypertableAdapter do
before do
@h = HypertableAdapter.new(nil, nil, {})
end
describe HypertableAdapter, '.describe_table' do
before do
@describe_table_text = '\n \n \n message \n \n date-time\n \n \n \n'
end
it "should return a string describing a table" do
@h.should_receive(:describe_table).with('name').and_return(@describe_table_text)
@h.describe_table('name').should == @describe_table_text
end
end
describe HypertableAdapter, '.column' do
before do
@describe_table_text = '\n \n \n message \n \n date-time\n \n \n \n'
end
it "should return an array of columns representing the table schema" do
@h.stub!(:describe_table).with('name').and_return(@describe_table_text)
columns = @h.columns('name')
columns.should be_is_a(Array)
columns.should have_exactly(3).columns
# The first column within a Hypertable is always the row key.
columns[0].name.should == "ROW"
columns[1].name.should == "message"
# notice that the original column name "date-time" is converted
# to a Ruby-friendly column name "date_time"
columns[2].name.should == "date_time"
end
it "should set up the name mappings between ruby and hypertable" do
@h.stub!(:describe_table).with('name').and_return(@describe_table_text)
columns = @h.columns('name')
@h.hypertable_column_name('date_time', 'name').should == 'date-time'
end
end
describe HypertableAdapter, '.quote_column_name' do
it "should surround column name in single quotes" do
@h.quote_column_name("date_time").should == "'date_time'"
end
end
describe HypertableAdapter, '.rubify_column_name' do
it "should change dashes to underscores in column names" do
@h.rubify_column_name("date-time").should == "date_time"
end
end
describe HypertableAdapter, '.tables' do
before do
@tables = ["table1", "table2"]
end
it "should return an array of table names" do
@h.should_receive(:tables).and_return(@tables)
@h.tables.should == @tables
end
end
describe HypertableAdapter, '.quote' do
it "should return empty string for nil values" do
@h.quote(nil).should == ''
end
end
describe HypertableAdapter, '.quote' do
it "should return a quoted string for all non-nil values" do
@h.quote(1).should == "1"
@h.quote('happy').should == "happy"
end
end
describe HypertableAdapter, '.is_qualified_column_name?' do
it "should return false for regular columns" do
status, family, qualifier = @h.is_qualified_column_name?("col1")
status.should be_false
family.should == 'col1'
qualifier.should be_nil
end
it "should return true for qualified columns" do
status, family, qualifier = @h.is_qualified_column_name?("col1:red")
status.should be_true
family.should == 'col1'
qualifier.should == 'red'
end
end
describe HypertableAdapter, '.create_table_sql' do
it "should assemble correct hql for creating a table" do
hql = @h.create_table_hql :new_table do |t|
t.column :name, :string
t.column :value, :string, :max_versions => 1
end
hql.should == "CREATE TABLE 'new_table' ( 'name' , 'value' MAX_VERSIONS=1 )"
end
end
end
end
end