From 00f08793677a164bd728a6576e20241697e61c35 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 17 Mar 2011 10:26:11 -0700 Subject: dup strings on return so that in place modifications do not break anything. I am looking at you "compute_table_name" --- activemodel/test/cases/attribute_methods_test.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'activemodel/test') diff --git a/activemodel/test/cases/attribute_methods_test.rb b/activemodel/test/cases/attribute_methods_test.rb index 5cf905bc1f..7fa5a2a7d7 100644 --- a/activemodel/test/cases/attribute_methods_test.rb +++ b/activemodel/test/cases/attribute_methods_test.rb @@ -9,6 +9,10 @@ class ModelWithAttributes define_method(:bar) do 'original bar' end + + define_method(:zomg) do + 'original zomg' + end end def attributes @@ -98,6 +102,13 @@ class AttributeMethodsTest < ActiveModel::TestCase assert_equal "value of foo bar", ModelWithAttributesWithSpaces.new.send(:'foo bar') end + def test_defined_methods_always_return_duped_string + ModelWithAttributes.define_attr_method(:zomg, 'lol') + assert_equal 'lol', ModelWithAttributes.zomg + ModelWithAttributes.zomg << 'bbq' + assert_equal 'lol', ModelWithAttributes.zomg + end + test '#define_attr_method generates attribute method' do ModelWithAttributes.define_attr_method(:bar, 'bar') -- cgit v1.2.3