diff options
author | Godfrey Chan <godfreykfc@gmail.com> | 2014-04-07 18:52:21 -0700 |
---|---|---|
committer | Godfrey Chan <godfreykfc@gmail.com> | 2014-04-07 18:52:21 -0700 |
commit | a5664fe27b1797983537c0764003e618bd3d2801 (patch) | |
tree | dd10cf4cf3f4b627b03dfe07e2c0eda197eb466c /activerecord/test/cases | |
parent | 3f5eb59f7a48aa5c08efb8db6cb41cd395c990af (diff) | |
download | rails-a5664fe27b1797983537c0764003e618bd3d2801.tar.gz rails-a5664fe27b1797983537c0764003e618bd3d2801.tar.bz2 rails-a5664fe27b1797983537c0764003e618bd3d2801.zip |
Follow up to bbe7fe41 to fix enum leakage across classes.
The original attempt didn't really fix the problem and wasn't testing the
problematic area. This commit corrected those issues in the original commit.
Also removed the private `enum_mapping_for` method. As `defined_enums` is now a
method, this method doesn't provide much value anymore.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/enum_test.rb | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/activerecord/test/cases/enum_test.rb b/activerecord/test/cases/enum_test.rb index 5157c272ca..3b2f0dfe07 100644 --- a/activerecord/test/cases/enum_test.rb +++ b/activerecord/test/cases/enum_test.rb @@ -252,17 +252,38 @@ class EnumTest < ActiveRecord::TestCase end test "enums are distinct per class" do - Plane = Class.new(ActiveRecord::Base) do - enum status: [:grounded, :operational] + klass1 = Class.new(ActiveRecord::Base) do + self.table_name = "books" + enum status: [:proposed, :written] + end + + klass2 = Class.new(ActiveRecord::Base) do + self.table_name = "books" + enum status: [:drafted, :uploaded] end - assert_equal({ "proposed" => 0, "written" => 1, "published" => 2 }, Book.statuses) - assert_equal({ "grounded" => 0, "operational" => 1 }, Plane.statuses) + + book1 = klass1.proposed.create! + book1.status = :written + assert_equal ['proposed', 'written'], book1.status_change + + book2 = klass2.drafted.create! + book2.status = :uploaded + assert_equal ['drafted', 'uploaded'], book2.status_change end test "enums are inheritable" do - Encyclopedia = Class.new(Book) do - enum status: [:published, :reprinted] + subklass1 = Class.new(Book) + + subklass2 = Class.new(Book) do + enum status: [:drafted, :uploaded] end - assert_equal({ "published" => 0, "reprinted" => 1 }, Encyclopedia.statuses) + + book1 = subklass1.proposed.create! + book1.status = :written + assert_equal ['proposed', 'written'], book1.status_change + + book2 = subklass2.drafted.create! + book2.status = :uploaded + assert_equal ['drafted', 'uploaded'], book2.status_change end end |