diff options
author | Joshua Peek <josh@joshpeek.com> | 2008-07-14 19:50:32 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2008-07-14 19:50:32 -0500 |
commit | 8a9934a9d9fc98b56c4566ae2e3fd4d83e505d3e (patch) | |
tree | fe7ed2626140178c722f5245d37b23c311da5ce4 /activesupport/test | |
parent | d27dd860c7f4f9b9e5aebe7d0c6e9b6108d8717c (diff) | |
download | rails-8a9934a9d9fc98b56c4566ae2e3fd4d83e505d3e.tar.gz rails-8a9934a9d9fc98b56c4566ae2e3fd4d83e505d3e.tar.bz2 rails-8a9934a9d9fc98b56c4566ae2e3fd4d83e505d3e.zip |
Added Memoizable mixin for caching simple lazy loaded attributes
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/memoizable_test.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/activesupport/test/memoizable_test.rb b/activesupport/test/memoizable_test.rb new file mode 100644 index 0000000000..40a02cf253 --- /dev/null +++ b/activesupport/test/memoizable_test.rb @@ -0,0 +1,45 @@ +require 'abstract_unit' + +uses_mocha 'Memoizable' do + class MemoizableTest < Test::Unit::TestCase + class Person + include ActiveSupport::Memoizable + + def name + fetch_name_from_floppy + end + memorize :name + + def age + nil + end + memorize :age + + private + def fetch_name_from_floppy + "Josh" + end + end + + def test_memoization + person = Person.new + assert_equal "Josh", person.name + + person.expects(:fetch_name_from_floppy).never + 2.times { assert_equal "Josh", person.name } + end + + def test_memoized_methods_are_frozen + person = Person.new + person.freeze + assert_equal "Josh", person.name + assert_equal true, person.name.frozen? + end + + def test_memoization_frozen_with_nil_value + person = Person.new + person.freeze + assert_equal nil, person.age + end + end +end |