Merge pull request #14399 from genericsteele/fixture-label-string-interpolation
Extend fixture label replacement to allow string interpolation
This commit is contained in:
commit
ecebe5ea1a
@ -1,3 +1,13 @@
|
||||
* Extend Fixture $LABEL replacement to allow string interpolation
|
||||
Example:
|
||||
|
||||
martin:
|
||||
email: $LABEL@email.com
|
||||
|
||||
users(:martin).email # => martin@email.com
|
||||
|
||||
*Eric Steele*
|
||||
|
||||
* Add support for `Relation` be passed as parameter on `QueryCache#select_all`.
|
||||
|
||||
Fixes #14361.
|
||||
|
@ -361,6 +361,7 @@ class FixtureClassNotFound < ActiveRecord::ActiveRecordError #:nodoc:
|
||||
# geeksomnia:
|
||||
# name: Geeksomnia's Account
|
||||
# subdomain: $LABEL
|
||||
# email: $LABEL@email.com
|
||||
#
|
||||
# Also, sometimes (like when porting older join table fixtures) you'll need
|
||||
# to be able to get a hold of the identifier for a given label. ERB
|
||||
@ -627,7 +628,7 @@ def table_rows
|
||||
|
||||
# interpolate the fixture label
|
||||
row.each do |key, value|
|
||||
row[key] = label if "$LABEL" == value
|
||||
row[key] = value.gsub("$LABEL", label) if value.is_a?(String)
|
||||
end
|
||||
|
||||
# generate a primary key if necessary
|
||||
|
@ -782,6 +782,10 @@ def test_supports_label_interpolation
|
||||
assert_equal("frederick", parrots(:frederick).name)
|
||||
end
|
||||
|
||||
def test_supports_label_string_interpolation
|
||||
assert_equal("X marks the spot!", pirates(:mark).catchphrase)
|
||||
end
|
||||
|
||||
def test_supports_polymorphic_belongs_to
|
||||
assert_equal(pirates(:redbeard), treasures(:sapphire).looter)
|
||||
assert_equal(parrots(:louis), treasures(:ruby).looter)
|
||||
|
3
activerecord/test/fixtures/pirates.yml
vendored
3
activerecord/test/fixtures/pirates.yml
vendored
@ -7,3 +7,6 @@ redbeard:
|
||||
parrot: louis
|
||||
created_on: "<%= 2.weeks.ago.to_s(:db) %>"
|
||||
updated_on: "<%= 2.weeks.ago.to_s(:db) %>"
|
||||
|
||||
mark:
|
||||
catchphrase: "X $LABELs the spot!"
|
||||
|
Loading…
Reference in New Issue
Block a user