53 lines
1.5 KiB
Ruby
53 lines
1.5 KiB
Ruby
require 'abstract_unit'
|
|
|
|
class PostgresqlDatatype < ActiveRecord::Base
|
|
end
|
|
|
|
class PGDataTypeTest < Test::Unit::TestCase
|
|
self.use_transactional_fixtures = false
|
|
|
|
TABLE_NAME = 'postgresql_datatypes'
|
|
COLUMNS = [
|
|
'id SERIAL PRIMARY KEY',
|
|
'commission_by_quarter INTEGER[]',
|
|
'nicknames TEXT[]'
|
|
]
|
|
|
|
def setup
|
|
@connection = ActiveRecord::Base.connection
|
|
@connection.execute "CREATE TABLE #{TABLE_NAME} (#{COLUMNS.join(',')})"
|
|
@connection.execute "INSERT INTO #{TABLE_NAME} (commission_by_quarter, nicknames) VALUES ( '{35000,21000,18000,17000}', '{foo,bar,baz}' )"
|
|
@first = PostgresqlDatatype.find( 1 )
|
|
end
|
|
|
|
def teardown
|
|
@connection.execute "DROP TABLE #{TABLE_NAME}"
|
|
end
|
|
|
|
def test_data_type_of_array_types
|
|
assert_equal :string, @first.column_for_attribute("commission_by_quarter").type
|
|
assert_equal :string, @first.column_for_attribute("nicknames").type
|
|
end
|
|
|
|
def test_array_values
|
|
assert_equal '{35000,21000,18000,17000}', @first.commission_by_quarter
|
|
assert_equal '{foo,bar,baz}', @first.nicknames
|
|
end
|
|
|
|
def test_update_integer_array
|
|
new_value = '{32800,95000,29350,17000}'
|
|
assert @first.commission_by_quarter = new_value
|
|
assert @first.save
|
|
assert @first.reload
|
|
assert_equal @first.commission_by_quarter, new_value
|
|
end
|
|
|
|
def test_update_text_array
|
|
new_value = '{robby,robert,rob,robbie}'
|
|
assert @first.nicknames = new_value
|
|
assert @first.save
|
|
assert @first.reload
|
|
assert_equal @first.nicknames, new_value
|
|
end
|
|
end
|