0
+require File.dirname(__FILE__) + '/../test_helper'
0
+class BaseClass < ActiveRecord::Base
0
+ def self.columns; []; end
0
+class SimpleClass < BaseClass; attr_accessor :name, :value; end
0
+class AlternateClass < BaseClass; attr_accessor :name2, :value; end
0
+class CacheAsConstantsTest < Test::Unit::TestCase
0
+ def test_cache_should_use_name_as_default
0
+ SimpleClass.expects(:find).returns([SimpleClass.new(:name => 'one', :value => 'pony')])
0
+ SimpleClass.caches_constants
0
+ assert_equal 'pony', SimpleClass::ONE.value
0
+ def test_cache_should_honor_alternate_accessor
0
+ AlternateClass.expects(:find).returns([AlternateClass.new(:name2 => 'foo bar', :value => 'pony')])
0
+ AlternateClass.caches_constants :key => :name2
0
+ assert_equal 'pony', AlternateClass::FOO_BAR.value
0
+ def test_cache_with_nil_key_value_should_not_set_constant
0
+ constant_count = SimpleClass.constants.size
0
+ SimpleClass.expects(:find).returns([SimpleClass.new(:name => '?', :value => 'nothing')])
0
+ SimpleClass.caches_constants
0
+ assert_equal constant_count, SimpleClass.constants.size
0
+ def test_cache_with_duplicate_constant_name_should_use_original
0
+ SimpleClass.expects(:find).returns([SimpleClass.new(:name => 'duplicate', :value => 'original'), SimpleClass.new(:name => 'duplicate', :value => 'new')])
0
+ SimpleClass.caches_constants
0
+ assert_equal 'original', SimpleClass::DUPLICATE.value
0
+ def test_cache_with_long_value_should_truncate_at_default_length
0
+ SimpleClass.expects(:find).returns([SimpleClass.new(:name => 'a' * 65, :value => 'overflow')])
0
+ SimpleClass.caches_constants
0
+ assert !SimpleClass.const_defined?('A' * 65)
0
+ assert_equal 'overflow', SimpleClass.const_get('A' * 64).value
0
+ def test_cache_with_specified_limit_should_truncate_to_length_specified
0
+ SimpleClass.expects(:find).returns([SimpleClass.new(:name => 'abcdef', :value => 'foo')])
0
+ SimpleClass.caches_constants :limit => 3
0
+ assert_equal 'foo', SimpleClass::ABC.value
0
+ def test_cache_with_invalid_limit_should_not_set_constant
0
+ constant_count = SimpleClass.constants.size
0
+ SimpleClass.expects(:find).returns([SimpleClass.new(:name => 'invalid', :value => 'one')])
0
+ SimpleClass.caches_constants :limit => 0
0
+ assert_equal constant_count, SimpleClass.constants.size
0
+ def test_cache_with_truncated_value_and_limit_should_not_overwrite_constant
0
+ SimpleClass.expects(:find).returns([SimpleClass.new(:name => 'abcdef', :value => 'one'), SimpleClass.new(:name => 'abggh', :value => 'two')])
0
+ SimpleClass.caches_constants :limit => 2
0
+ assert_equal 'one', SimpleClass::AB.value
Comments
No one has commented yet.