aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-03-11 08:19:25 +0100
committerYves Senn <yves.senn@gmail.com>2014-03-11 08:19:25 +0100
commit0e0b41d58c0a8e5921b7eebc3a6e0e4cc012ce4d (patch)
treed96edda3a1db2bf2cd0cff4803244e911ac415ec /activerecord/test/cases
parent47ea87b8b9357beaca1a9bd2e191d0113b677966 (diff)
parentb3e0da3062f809599fb4da9f9a29ed45aebd1ff6 (diff)
downloadrails-0e0b41d58c0a8e5921b7eebc3a6e0e4cc012ce4d.tar.gz
rails-0e0b41d58c0a8e5921b7eebc3a6e0e4cc012ce4d.tar.bz2
rails-0e0b41d58c0a8e5921b7eebc3a6e0e4cc012ce4d.zip
Merge pull request #12523 from lsylvester/pg_citext
Support for PostgreSQL citext data type.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/adapters/postgresql/citext_test.rb58
-rw-r--r--activerecord/test/cases/schema_dumper_test.rb7
2 files changed, 65 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
diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb
index 2748cbdbf4..575eb34a9c 100644
--- a/activerecord/test/cases/schema_dumper_test.rb
+++ b/activerecord/test/cases/schema_dumper_test.rb
@@ -319,6 +319,13 @@ class SchemaDumperTest < ActiveRecord::TestCase
end
end
+ def test_schema_dump_includes_citext_shorthand_definition
+ output = standard_dump
+ if %r{create_table "postgresql_citext"} =~ output
+ assert_match %r[t.citext "text_citext"], output
+ end
+ end
+
def test_schema_dump_includes_ltrees_shorthand_definition
output = standard_dump
if %r{create_table "postgresql_ltrees"} =~ output