aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorDieter Komendera <dieter@komendera.com>2013-12-09 18:52:36 +0100
committerDieter Komendera <dieter@komendera.com>2014-03-04 10:32:20 +0100
commit5c55aafd38f45ac019573f98438ffdbdc8c580f9 (patch)
tree08cae090fc90789d286566ebe752f228ced0a9e0 /activerecord/test
parentffcc6172b4d40ca7c8b02fd298c679b5bcf5787b (diff)
downloadrails-5c55aafd38f45ac019573f98438ffdbdc8c580f9.tar.gz
rails-5c55aafd38f45ac019573f98438ffdbdc8c580f9.tar.bz2
rails-5c55aafd38f45ac019573f98438ffdbdc8c580f9.zip
Add Enum type to postgresql adapter's oids to prevent unknown OID warnings.
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/adapters/postgresql/enum_test.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/enum_test.rb b/activerecord/test/cases/adapters/postgresql/enum_test.rb
index bf8dbd6c3f..a9a2901436 100644
--- a/activerecord/test/cases/adapters/postgresql/enum_test.rb
+++ b/activerecord/test/cases/adapters/postgresql/enum_test.rb
@@ -23,6 +23,8 @@ class PostgresqlEnumTest < ActiveRecord::TestCase
t.column :current_mood, :mood
end
end
+ # reload type map after creating the enum type
+ @connection.send(:reload_type_map)
end
def test_enum_mapping
@@ -35,4 +37,30 @@ class PostgresqlEnumTest < ActiveRecord::TestCase
assert_equal "happy", enum.reload.current_mood
end
+
+ def test_invalid_enum_update
+ @connection.execute "INSERT INTO postgresql_enums VALUES (1, 'sad');"
+ enum = PostgresqlEnum.first
+ enum.current_mood = "angry"
+
+ assert_raise ActiveRecord::StatementInvalid do
+ enum.save
+ end
+ end
+
+ def test_no_oid_warning
+ @connection.execute "INSERT INTO postgresql_enums VALUES (1, 'sad');"
+ stderr_output = capture(:stderr) {
+ enum = PostgresqlEnum.first
+ }
+
+ assert stderr_output.blank?
+ end
+
+ def test_enum_type_cast
+ enum = PostgresqlEnum.new
+ enum.current_mood = :happy
+
+ assert_equal "happy", enum.current_mood
+ end
end