aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2013-11-02 12:01:31 -0700
committerDavid Heinemeier Hansson <david@loudthinking.com>2013-11-02 12:01:31 -0700
commitdb41eb8a6ea88b854bf5cd11070ea4245e1639c5 (patch)
tree7ce7308e9b1a46bb61ece82f43af1338eb64d501 /activerecord/test/cases
parentdeaf285824fa7d2aaf24619eefdb0893c0069bc0 (diff)
downloadrails-db41eb8a6ea88b854bf5cd11070ea4245e1639c5.tar.gz
rails-db41eb8a6ea88b854bf5cd11070ea4245e1639c5.tar.bz2
rails-db41eb8a6ea88b854bf5cd11070ea4245e1639c5.zip
Added ActiveRecord::Base#enum for declaring enum attributes where the values map to integers in the database, but can be queried by name
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/enum_test.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/activerecord/test/cases/enum_test.rb b/activerecord/test/cases/enum_test.rb
new file mode 100644
index 0000000000..9855261e4d
--- /dev/null
+++ b/activerecord/test/cases/enum_test.rb
@@ -0,0 +1,36 @@
+require 'cases/helper'
+require 'models/book'
+
+class StoreTest < ActiveRecord::TestCase
+ fixtures :books
+
+ setup do
+ @book = Book.create! name: 'REMOTE'
+ end
+
+ test "query state by predicate" do
+ assert @book.proposed?
+ assert_not @book.written?
+ assert_not @book.published?
+ end
+
+ test "query state with symbol" do
+ assert_equal :proposed, @book.status
+ end
+
+ test "update by declaration" do
+ @book.written!
+ assert @book.written?
+ end
+
+ test "update by setter" do
+ @book.update! status: :written
+ assert @book.written?
+ end
+
+ test "constant" do
+ assert_equal 0, Book::STATUS[:proposed]
+ assert_equal 1, Book::STATUS[:written]
+ assert_equal 2, Book::STATUS[:published]
+ end
+end