diff options
author | eileencodes <eileencodes@gmail.com> | 2015-07-02 15:42:52 -0400 |
---|---|---|
committer | eileencodes <eileencodes@gmail.com> | 2015-07-02 15:42:52 -0400 |
commit | eff3a3178e93405d9af06acbb1e269489d650cb7 (patch) | |
tree | 65e66263fdd5808b8c1dde155cca5689ecde70b6 | |
parent | bea7fee7c72a0783c87c78e98c448991feab45bf (diff) | |
download | rails-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.rb | 4 | ||||
-rw-r--r-- | activerecord/test/cases/enum_test.rb | 6 | ||||
-rw-r--r-- | activerecord/test/fixtures/books.yml | 5 |
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" |