diff options
author | lsylvester <lachlan.sylvester@hypothetical.com.au> | 2014-03-11 08:10:25 +1100 |
---|---|---|
committer | lsylvester <lachlan.sylvester@hypothetical.com.au> | 2014-03-11 08:14:03 +1100 |
commit | b3e0da3062f809599fb4da9f9a29ed45aebd1ff6 (patch) | |
tree | 6bdc95ed7456bf88d9c90b6f10980ef71be15e12 /activerecord/test/cases/adapters/postgresql | |
parent | d41154094a332a3dd797c4148894fbcd1e5ad5ff (diff) | |
download | rails-b3e0da3062f809599fb4da9f9a29ed45aebd1ff6.tar.gz rails-b3e0da3062f809599fb4da9f9a29ed45aebd1ff6.tar.bz2 rails-b3e0da3062f809599fb4da9f9a29ed45aebd1ff6.zip |
register OID for PostgreSQL citex datatype [Troy Kruthoff & Lachlan Sylvester]
citext makes it possible to use AR Hash finders for case-insensitive matching as sql UPPER/LOWER functions are not needed.
Diffstat (limited to 'activerecord/test/cases/adapters/postgresql')
-rw-r--r-- | activerecord/test/cases/adapters/postgresql/citext_test.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/citext_test.rb b/activerecord/test/cases/adapters/postgresql/citext_test.rb new file mode 100644 index 0000000000..89ef46b539 --- /dev/null +++ b/activerecord/test/cases/adapters/postgresql/citext_test.rb @@ -0,0 +1,58 @@ +# encoding: utf-8 + +require 'cases/helper' +require 'active_record/base' +require 'active_record/connection_adapters/postgresql_adapter' + +class PostgresqlCitextTest < ActiveRecord::TestCase + class Citext < ActiveRecord::Base + self.table_name = 'citexts' + end + + def setup + @connection = ActiveRecord::Base.connection + + unless @connection.extension_enabled?('citext') + @connection.enable_extension 'citext' + @connection.commit_db_transaction + end + + @connection.reconnect! + + @connection.transaction do + @connection.create_table('citexts') do |t| + t.citext 'cival' + end + end + @column = Citext.columns_hash['cival'] + end + + def teardown + @connection.execute 'DROP TABLE IF EXISTS citexts;' + @connection.execute 'DROP EXTENSION IF EXISTS citext CASCADE;' + end + + def test_citext_enabled + assert @connection.extension_enabled?('citext') + end + + def test_column_type + assert_equal :citext, @column.type + end + + def test_column_sql_type + assert_equal 'citext', @column.sql_type + end + + def test_write + x = Citext.new(cival: 'Some CI Text') + assert x.save! + end + + def test_select_case_insensitive + @connection.execute "insert into citexts (cival) values('Cased Text')" + x = Citext.where(cival: 'cased text').first + assert_equal('Cased Text', x.cival) + end + +end
\ No newline at end of file |