mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Extend fixture label replacement to allow string interpolation
Allows fixtures to use their $LABEL as part of a string instead of limiting use to the entire value. mark: first_name: $LABEL username: $LABEL1973 email: $LABEL@$LABELmail.com users(:mark).first_name # => mark users(:mark).username # => mark1973 users(:mark).email # => mark@markmail.com
This commit is contained in:
parent
4a883af296
commit
f47421f2a0
4 changed files with 19 additions and 1 deletions
|
@ -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 @@ module ActiveRecord
|
|||
# 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 @@ module ActiveRecord
|
|||
|
||||
# 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 @@ class FoxyFixturesTest < ActiveRecord::TestCase
|
|||
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 a new issue