Skip to content

Commit

Permalink
Test that #[] and #[]= keep working when #read_attribute and #write_a…
Browse files Browse the repository at this point in the history
…ttribute are overridden
  • Loading branch information
tomstuart committed Jan 11, 2012
1 parent d0acd02 commit 701afab
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions activerecord/test/cases/attribute_methods_test.rb
Expand Up @@ -318,6 +318,39 @@ def test_read_write_boolean_attribute
# puts ""
end

def test_overridden_write_attribute
topic = Topic.new
def topic.write_attribute(attr_name, value)
super(attr_name, value.downcase)
end

topic.send(:write_attribute, :title, "Yet another topic")
assert_equal "yet another topic", topic.title

topic[:title] = "Yet another topic: part 2"
assert_equal "yet another topic: part 2", topic.title

topic.send(:write_attribute, "title", "Yet another topic: part 3")
assert_equal "yet another topic: part 3", topic.title

topic["title"] = "Yet another topic: part 4"
assert_equal "yet another topic: part 4", topic.title
end

def test_overridden_read_attribute
topic = Topic.new
topic.title = "Stop changing the topic"
def topic.read_attribute(attr_name)
super(attr_name).upcase
end

assert_equal "STOP CHANGING THE TOPIC", topic.send(:read_attribute, "title")
assert_equal "STOP CHANGING THE TOPIC", topic["title"]

assert_equal "STOP CHANGING THE TOPIC", topic.send(:read_attribute, :title)
assert_equal "STOP CHANGING THE TOPIC", topic[:title]
end

def test_read_overridden_attribute
topic = Topic.new(:title => 'a')
def topic.title() 'b' end
Expand Down

0 comments on commit 701afab

Please sign in to comment.