aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/caching_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/test/caching_test.rb')
-rw-r--r--activesupport/test/caching_test.rb96
1 files changed, 74 insertions, 22 deletions
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index 9ea9389448..e2da2796eb 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -71,41 +71,21 @@ uses_mocha 'high-level cache store tests' do
end
end
-class FileStoreTest < Test::Unit::TestCase
- def setup
- @cache = ActiveSupport::Cache.lookup_store(:file_store, Dir.pwd)
- end
-
+# Tests the base functionality that should be identical across all cache stores.
+module CacheStoreBehavior
def test_should_read_and_write_strings
@cache.write('foo', 'bar')
assert_equal 'bar', @cache.read('foo')
- ensure
- File.delete("foo.cache")
end
def test_should_read_and_write_hash
@cache.write('foo', {:a => "b"})
assert_equal({:a => "b"}, @cache.read('foo'))
- ensure
- File.delete("foo.cache")
end
def test_should_read_and_write_nil
@cache.write('foo', nil)
assert_equal nil, @cache.read('foo')
- ensure
- File.delete("foo.cache")
- end
-end
-
-class MemoryStoreTest < Test::Unit::TestCase
- def setup
- @cache = ActiveSupport::Cache.lookup_store(:memory_store)
- end
-
- def test_should_read_and_write
- @cache.write('foo', 'bar')
- assert_equal 'bar', @cache.read('foo')
end
def test_fetch_without_cache_miss
@@ -121,9 +101,81 @@ class MemoryStoreTest < Test::Unit::TestCase
@cache.fetch('foo', :force => true) { 'bar' }
end
+ def test_increment
+ @cache.write('foo', 1, :raw => true)
+ assert_equal 1, @cache.read('foo', :raw => true).to_i
+ assert_equal 2, @cache.increment('foo')
+ assert_equal 2, @cache.read('foo', :raw => true).to_i
+ assert_equal 3, @cache.increment('foo')
+ assert_equal 3, @cache.read('foo', :raw => true).to_i
+ end
+
+ def test_decrement
+ @cache.write('foo', 3, :raw => true)
+ assert_equal 3, @cache.read('foo', :raw => true).to_i
+ assert_equal 2, @cache.decrement('foo')
+ assert_equal 2, @cache.read('foo', :raw => true).to_i
+ assert_equal 1, @cache.decrement('foo')
+ assert_equal 1, @cache.read('foo', :raw => true).to_i
+ end
+end
+
+class FileStoreTest < Test::Unit::TestCase
+ def setup
+ @cache = ActiveSupport::Cache.lookup_store(:file_store, Dir.pwd)
+ end
+
+ def teardown
+ File.delete("foo.cache")
+ end
+
+ include CacheStoreBehavior
+end
+
+class MemoryStoreTest < Test::Unit::TestCase
+ def setup
+ @cache = ActiveSupport::Cache.lookup_store(:memory_store)
+ end
+
+ include CacheStoreBehavior
+
def test_store_objects_should_be_immutable
@cache.write('foo', 'bar')
assert_raise(ActiveSupport::FrozenObjectError) { @cache.read('foo').gsub!(/.*/, 'baz') }
assert_equal 'bar', @cache.read('foo')
end
end
+
+class MemCacheStoreTest < Test::Unit::TestCase
+ def setup
+ @cache = ActiveSupport::Cache.lookup_store(:mem_cache_store)
+ @cache.clear
+ end
+
+ include CacheStoreBehavior
+
+ def test_store_objects_should_be_immutable
+ @cache.write('foo', 'bar')
+ @cache.read('foo').gsub!(/.*/, 'baz')
+ assert_equal 'bar', @cache.read('foo')
+ end
+
+ # Disabling increment and decrement tests until issues can be addressed in the
+ # upstream codebase.
+ def test_increment; end
+ def test_decrement; end
+end
+
+class CompressedMemCacheStore < Test::Unit::TestCase
+ def setup
+ @cache = ActiveSupport::Cache.lookup_store(:compressed_mem_cache_store)
+ @cache.clear
+ end
+
+ include CacheStoreBehavior
+
+ # Disabling increment and decrement tests until issues can be addressed in the
+ # upstream codebase.
+ def test_increment; end
+ def test_decrement; end
+end