1
0
Fork 0
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:
Eric Steele 2014-03-15 21:49:04 -04:00
parent 4a883af296
commit f47421f2a0
4 changed files with 19 additions and 1 deletions

View file

@ -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.

View file

@ -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

View file

@ -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)

View file

@ -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!"