class PostgresqlBitStringTest

Public Instance Methods

setup() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 13
def setup
  @connection = ActiveRecord::Base.connection
  @connection.create_table("postgresql_bit_strings", force: true) do |t|
    t.bit :a_bit, default: "00000011", limit: 8
    t.bit_varying :a_bit_varying, default: "0011", limit: 4
    t.bit :another_bit
    t.bit_varying :another_bit_varying
  end
end
teardown() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 23
def teardown
  return unless @connection
  @connection.drop_table "postgresql_bit_strings", if_exists: true
end
test_assigning_invalid_hex_string_raises_exception() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 63
def test_assigning_invalid_hex_string_raises_exception
  assert_raises(ActiveRecord::StatementInvalid) { PostgresqlBitString.create! a_bit: "FF" }
  assert_raises(ActiveRecord::StatementInvalid) { PostgresqlBitString.create! a_bit_varying: "F" }
end
test_bit_string_column() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 28
def test_bit_string_column
  column = PostgresqlBitString.columns_hash["a_bit"]
  assert_equal :bit, column.type
  assert_equal "bit(8)", column.sql_type
  assert_not column.array?

  type = PostgresqlBitString.type_for_attribute("a_bit")
  assert_not type.binary?
end
test_bit_string_varying_column() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 38
def test_bit_string_varying_column
  column = PostgresqlBitString.columns_hash["a_bit_varying"]
  assert_equal :bit_varying, column.type
  assert_equal "bit varying(4)", column.sql_type
  assert_not column.array?

  type = PostgresqlBitString.type_for_attribute("a_bit_varying")
  assert_not type.binary?
end
test_default() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 48
def test_default
  assert_equal "00000011", PostgresqlBitString.column_defaults["a_bit"]
  assert_equal "00000011", PostgresqlBitString.new.a_bit

  assert_equal "0011", PostgresqlBitString.column_defaults["a_bit_varying"]
  assert_equal "0011", PostgresqlBitString.new.a_bit_varying
end
test_roundtrip() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 69
def test_roundtrip
  record = PostgresqlBitString.create!(a_bit: "00001010", a_bit_varying: "0101")
  assert_equal "00001010", record.a_bit
  assert_equal "0101", record.a_bit_varying
  assert_nil record.another_bit
  assert_nil record.another_bit_varying

  record.a_bit = "11111111"
  record.a_bit_varying = "0xF"
  record.save!

  assert record.reload
  assert_equal "11111111", record.a_bit
  assert_equal "1111", record.a_bit_varying
end
test_schema_dumping() click to toggle source
# File activerecord/test/cases/adapters/postgresql/bit_string_test.rb, line 56
def test_schema_dumping
  output = dump_table_schema("postgresql_bit_strings")
  assert_match %r{t\.bit\s+"a_bit",\s+limit: 8,\s+default: "00000011"$}, output
  assert_match %r{t\.bit_varying\s+"a_bit_varying",\s+limit: 4,\s+default: "0011"$}, output
end