aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2015-07-02 15:42:52 -0400
committereileencodes <eileencodes@gmail.com>2015-07-02 15:42:52 -0400
commiteff3a3178e93405d9af06acbb1e269489d650cb7 (patch)
tree65e66263fdd5808b8c1dde155cca5689ecde70b6
parentbea7fee7c72a0783c87c78e98c448991feab45bf (diff)
downloadrails-eff3a3178e93405d9af06acbb1e269489d650cb7.tar.gz
rails-eff3a3178e93405d9af06acbb1e269489d650cb7.tar.bz2
rails-eff3a3178e93405d9af06acbb1e269489d650cb7.zip
Use default model enum in fixtures if not defined
After 908cfef was introduced fixtures that did not set an enum would return nil instead of the default enum value. The fixtures should assume the default if a different enum is not defined. The change checks first if the enum is defined in the fixture before setting it based on the fixture.
-rw-r--r--activerecord/lib/active_record/fixtures.rb4
-rw-r--r--activerecord/test/cases/enum_test.rb6
-rw-r--r--activerecord/test/fixtures/books.yml5
3 files changed, 14 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/fixtures.rb b/activerecord/lib/active_record/fixtures.rb
index b01444a090..d062dd9e34 100644
--- a/activerecord/lib/active_record/fixtures.rb
+++ b/activerecord/lib/active_record/fixtures.rb
@@ -645,7 +645,9 @@ module ActiveRecord
# Resolve enums
model_class.defined_enums.each do |name, values|
- row[name] = values.fetch(row[name], row[name])
+ if row.include?(name)
+ row[name] = values.fetch(row[name], row[name])
+ end
end
# If STI is used, find the correct subclass for association reflection
diff --git a/activerecord/test/cases/enum_test.rb b/activerecord/test/cases/enum_test.rb
index 769b171717..ba23049a92 100644
--- a/activerecord/test/cases/enum_test.rb
+++ b/activerecord/test/cases/enum_test.rb
@@ -405,4 +405,10 @@ class EnumTest < ActiveRecord::TestCase
assert_not @book.in_spanish?
assert_not @book.in_french?
end
+
+ test "uses default status when no status is provided in fixtures" do
+ book = books(:tlg)
+ assert book.proposed?, "expected fixture to default to proposed status"
+ assert book.in_english?, "expected fixture to default to english language"
+ end
end
diff --git a/activerecord/test/fixtures/books.yml b/activerecord/test/fixtures/books.yml
index 93cfabd61c..1f75e3fb52 100644
--- a/activerecord/test/fixtures/books.yml
+++ b/activerecord/test/fixtures/books.yml
@@ -24,3 +24,8 @@ ddd:
name: "Domain-Driven Design"
format: "hardcover"
status: 2
+
+tlg:
+ author_id: 1
+ id: 4
+ name: "Thoughleadering"