moneta 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +12 -0
  3. data/CONTRIBUTORS +1 -0
  4. data/LICENSE +1 -1
  5. data/lib/active_support/cache/moneta_store.rb +32 -6
  6. data/lib/moneta/adapters/activerecord/backend.rb +50 -0
  7. data/lib/moneta/adapters/activerecord/v5_backend.rb +80 -0
  8. data/lib/moneta/adapters/activerecord.rb +50 -95
  9. data/lib/moneta/adapters/activesupportcache.rb +69 -14
  10. data/lib/moneta/adapters/client.rb +1 -1
  11. data/lib/moneta/adapters/hbase.rb +1 -1
  12. data/lib/moneta/adapters/redis.rb +2 -1
  13. data/lib/moneta/adapters/sequel/mysql.rb +6 -18
  14. data/lib/moneta/adapters/sequel/postgres_hstore.rb +8 -1
  15. data/lib/moneta/adapters/sqlite.rb +4 -2
  16. data/lib/moneta/adapters/tokyotyrant.rb +1 -1
  17. data/lib/moneta/adapters/yaml.rb +7 -1
  18. data/lib/moneta/pool.rb +16 -18
  19. data/lib/moneta/server.rb +9 -11
  20. data/lib/moneta/transformer/config.rb +4 -4
  21. data/lib/moneta/transformer.rb +4 -0
  22. data/lib/moneta/version.rb +1 -1
  23. metadata +9 -452
  24. data/.github/workflows/ruby.yml +0 -425
  25. data/.gitignore +0 -15
  26. data/.rspec +0 -4
  27. data/.rubocop.yml +0 -194
  28. data/.yardopts +0 -6
  29. data/Gemfile +0 -206
  30. data/feature_matrix.yaml +0 -227
  31. data/moneta.gemspec +0 -36
  32. data/script/benchmarks +0 -605
  33. data/script/contributors +0 -12
  34. data/script/memusage +0 -40
  35. data/script/parallel-tests +0 -82
  36. data/script/start-couchdb +0 -27
  37. data/script/start-hbase +0 -47
  38. data/script/start-services +0 -10
  39. data/script/travis-logs +0 -14
  40. data/script/update-feature-matrix +0 -148
  41. data/spec/active_support/cache_moneta_store_spec.rb +0 -282
  42. data/spec/features/concurrent_create.rb +0 -42
  43. data/spec/features/concurrent_increment.rb +0 -39
  44. data/spec/features/create.rb +0 -25
  45. data/spec/features/create_expires.rb +0 -19
  46. data/spec/features/default_expires.rb +0 -14
  47. data/spec/features/each_key.rb +0 -119
  48. data/spec/features/expires.rb +0 -296
  49. data/spec/features/features.rb +0 -16
  50. data/spec/features/increment.rb +0 -98
  51. data/spec/features/marshallable_key.rb +0 -43
  52. data/spec/features/marshallable_value.rb +0 -7
  53. data/spec/features/multiprocess.rb +0 -8
  54. data/spec/features/not_create.rb +0 -7
  55. data/spec/features/not_each_key.rb +0 -7
  56. data/spec/features/not_increment.rb +0 -13
  57. data/spec/features/not_persist.rb +0 -9
  58. data/spec/features/null.rb +0 -66
  59. data/spec/features/persist.rb +0 -14
  60. data/spec/features/returndifferent.rb +0 -9
  61. data/spec/features/returnsame.rb +0 -9
  62. data/spec/features/store.rb +0 -261
  63. data/spec/features/store_large.rb +0 -13
  64. data/spec/features/transform_value.rb +0 -44
  65. data/spec/features/transform_value_expires.rb +0 -41
  66. data/spec/helper.rb +0 -445
  67. data/spec/moneta/adapters/activerecord/adapter_activerecord_existing_connection_spec.rb +0 -62
  68. data/spec/moneta/adapters/activerecord/adapter_activerecord_spec.rb +0 -128
  69. data/spec/moneta/adapters/activerecord/standard_activerecord_spec.rb +0 -22
  70. data/spec/moneta/adapters/activerecord/standard_activerecord_with_expires_spec.rb +0 -28
  71. data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_spec.rb +0 -54
  72. data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_with_default_expires_spec.rb +0 -54
  73. data/spec/moneta/adapters/activesupportcache/standard_activesupportcache_spec.rb +0 -14
  74. data/spec/moneta/adapters/cassandra/adapter_cassandra_spec.rb +0 -17
  75. data/spec/moneta/adapters/cassandra/adapter_cassandra_with_default_expires_spec.rb +0 -18
  76. data/spec/moneta/adapters/cassandra/helper.rb +0 -18
  77. data/spec/moneta/adapters/cassandra/standard_cassandra_spec.rb +0 -18
  78. data/spec/moneta/adapters/client/adapter_client_spec.rb +0 -11
  79. data/spec/moneta/adapters/client/client_helper.rb +0 -25
  80. data/spec/moneta/adapters/client/standard_client_tcp_spec.rb +0 -23
  81. data/spec/moneta/adapters/client/standard_client_unix_spec.rb +0 -28
  82. data/spec/moneta/adapters/cookie/adapter_cookie_spec.rb +0 -7
  83. data/spec/moneta/adapters/couch/adapter_couch_spec.rb +0 -204
  84. data/spec/moneta/adapters/couch/standard_couch_spec.rb +0 -15
  85. data/spec/moneta/adapters/couch/standard_couch_with_expires_spec.rb +0 -19
  86. data/spec/moneta/adapters/datamapper/adapter_datamapper_spec.rb +0 -64
  87. data/spec/moneta/adapters/datamapper/standard_datamapper_spec.rb +0 -21
  88. data/spec/moneta/adapters/datamapper/standard_datamapper_with_expires_spec.rb +0 -26
  89. data/spec/moneta/adapters/datamapper/standard_datamapper_with_repository_spec.rb +0 -22
  90. data/spec/moneta/adapters/daybreak/adapter_daybreak_spec.rb +0 -7
  91. data/spec/moneta/adapters/daybreak/standard_daybreak_spec.rb +0 -7
  92. data/spec/moneta/adapters/daybreak/standard_daybreak_with_expires_spec.rb +0 -11
  93. data/spec/moneta/adapters/dbm/adapter_dbm_spec.rb +0 -7
  94. data/spec/moneta/adapters/dbm/standard_dbm_spec.rb +0 -7
  95. data/spec/moneta/adapters/dbm/standard_dbm_with_expires_spec.rb +0 -12
  96. data/spec/moneta/adapters/faraday_helper.rb +0 -10
  97. data/spec/moneta/adapters/file/adapter_file_spec.rb +0 -7
  98. data/spec/moneta/adapters/file/standard_file_spec.rb +0 -7
  99. data/spec/moneta/adapters/file/standard_file_with_expires_spec.rb +0 -11
  100. data/spec/moneta/adapters/fog/adapter_fog_spec.rb +0 -16
  101. data/spec/moneta/adapters/fog/standard_fog_spec.rb +0 -15
  102. data/spec/moneta/adapters/fog/standard_fog_with_expires_spec.rb +0 -20
  103. data/spec/moneta/adapters/gdbm/adapter_gdbm_spec.rb +0 -7
  104. data/spec/moneta/adapters/gdbm/standard_gdbm_spec.rb +0 -7
  105. data/spec/moneta/adapters/gdbm/standard_gdbm_with_expires_spec.rb +0 -11
  106. data/spec/moneta/adapters/hashfile/standard_hashfile_spec.rb +0 -7
  107. data/spec/moneta/adapters/hashfile/standard_hashfile_with_expires_spec.rb +0 -12
  108. data/spec/moneta/adapters/hbase/adapter_hbase_spec.rb +0 -7
  109. data/spec/moneta/adapters/hbase/standard_hbase_spec.rb +0 -4
  110. data/spec/moneta/adapters/hbase/standard_hbase_with_expires_spec.rb +0 -8
  111. data/spec/moneta/adapters/kyotocabinet/adapter_kyotocabinet_spec.rb +0 -7
  112. data/spec/moneta/adapters/kyotocabinet/standard_kyotocabinet_spec.rb +0 -7
  113. data/spec/moneta/adapters/kyotocabinet/standard_kyotocabinet_with_expires_spec.rb +0 -14
  114. data/spec/moneta/adapters/leveldb/adapter_leveldb_spec.rb +0 -7
  115. data/spec/moneta/adapters/leveldb/standard_leveldb_spec.rb +0 -7
  116. data/spec/moneta/adapters/leveldb/standard_leveldb_with_expires_spec.rb +0 -11
  117. data/spec/moneta/adapters/lmdb/adapter_lmdb_spec.rb +0 -7
  118. data/spec/moneta/adapters/lmdb/adapter_lmdb_with_db_spec.rb +0 -7
  119. data/spec/moneta/adapters/lmdb/standard_lmdb_spec.rb +0 -7
  120. data/spec/moneta/adapters/lmdb/standard_lmdb_with_expires_spec.rb +0 -11
  121. data/spec/moneta/adapters/localmemcache/adapter_localmemcache_spec.rb +0 -7
  122. data/spec/moneta/adapters/localmemcache/standard_localmemcache_spec.rb +0 -7
  123. data/spec/moneta/adapters/localmemcache/standard_localmemcache_with_expires_spec.rb +0 -11
  124. data/spec/moneta/adapters/lruhash/adapter_lruhash_spec.rb +0 -118
  125. data/spec/moneta/adapters/lruhash/standard_lruhash_spec.rb +0 -4
  126. data/spec/moneta/adapters/lruhash/standard_lruhash_with_expires_spec.rb +0 -8
  127. data/spec/moneta/adapters/memcached/adapter_memcached_spec.rb +0 -13
  128. data/spec/moneta/adapters/memcached/dalli/adapter_memcached_dalli_spec.rb +0 -25
  129. data/spec/moneta/adapters/memcached/dalli/standard_memcached_dalli_spec.rb +0 -11
  130. data/spec/moneta/adapters/memcached/native/adapter_memcached_native_spec.rb +0 -25
  131. data/spec/moneta/adapters/memcached/native/standard_memcached_native_spec.rb +0 -11
  132. data/spec/moneta/adapters/memcached/standard_memcached_spec.rb +0 -17
  133. data/spec/moneta/adapters/memcached_helper.rb +0 -20
  134. data/spec/moneta/adapters/memory/adapter_memory_spec.rb +0 -7
  135. data/spec/moneta/adapters/memory/standard_memory_spec.rb +0 -4
  136. data/spec/moneta/adapters/memory/standard_memory_with_compress_spec.rb +0 -9
  137. data/spec/moneta/adapters/memory/standard_memory_with_expires_spec.rb +0 -8
  138. data/spec/moneta/adapters/memory/standard_memory_with_json_key_serializer_spec.rb +0 -4
  139. data/spec/moneta/adapters/memory/standard_memory_with_json_serializer_spec.rb +0 -9
  140. data/spec/moneta/adapters/memory/standard_memory_with_json_value_serializer_spec.rb +0 -9
  141. data/spec/moneta/adapters/memory/standard_memory_with_prefix_spec.rb +0 -41
  142. data/spec/moneta/adapters/memory/standard_memory_with_snappy_compress_spec.rb +0 -9
  143. data/spec/moneta/adapters/mongo/adapter_mongo_spec.rb +0 -41
  144. data/spec/moneta/adapters/mongo/adapter_mongo_with_default_expires_spec.rb +0 -14
  145. data/spec/moneta/adapters/mongo/standard_mongo_spec.rb +0 -7
  146. data/spec/moneta/adapters/null/null_adapter_spec.rb +0 -7
  147. data/spec/moneta/adapters/null/standard_null_spec.rb +0 -9
  148. data/spec/moneta/adapters/pstore/adapter_pstore_spec.rb +0 -7
  149. data/spec/moneta/adapters/pstore/standard_pstore_spec.rb +0 -9
  150. data/spec/moneta/adapters/pstore/standard_pstore_with_expires_spec.rb +0 -13
  151. data/spec/moneta/adapters/redis/adapter_redis_spec.rb +0 -20
  152. data/spec/moneta/adapters/redis/standard_redis_spec.rb +0 -14
  153. data/spec/moneta/adapters/restclient/adapter_restclient_spec.rb +0 -13
  154. data/spec/moneta/adapters/restclient/helper.rb +0 -12
  155. data/spec/moneta/adapters/restclient/standard_restclient_spec.rb +0 -13
  156. data/spec/moneta/adapters/riak/adapter_riak_spec.rb +0 -14
  157. data/spec/moneta/adapters/riak/standard_riak_spec.rb +0 -10
  158. data/spec/moneta/adapters/riak/standard_riak_with_expires_spec.rb +0 -14
  159. data/spec/moneta/adapters/sdbm/adapter_sdbm_spec.rb +0 -7
  160. data/spec/moneta/adapters/sdbm/standard_sdbm_spec.rb +0 -7
  161. data/spec/moneta/adapters/sdbm/standard_sdbm_with_expires_spec.rb +0 -11
  162. data/spec/moneta/adapters/sequel/adapter_sequel_spec.rb +0 -133
  163. data/spec/moneta/adapters/sequel/helper.rb +0 -83
  164. data/spec/moneta/adapters/sequel/standard_sequel_spec.rb +0 -8
  165. data/spec/moneta/adapters/sequel/standard_sequel_with_expires_spec.rb +0 -18
  166. data/spec/moneta/adapters/sqlite/adapter_sqlite_spec.rb +0 -7
  167. data/spec/moneta/adapters/sqlite/standard_sqlite_spec.rb +0 -7
  168. data/spec/moneta/adapters/sqlite/standard_sqlite_with_expires_spec.rb +0 -15
  169. data/spec/moneta/adapters/tdb/adapter_tdb_spec.rb +0 -7
  170. data/spec/moneta/adapters/tdb/standard_tdb_spec.rb +0 -7
  171. data/spec/moneta/adapters/tdb/standard_tdb_with_expires_spec.rb +0 -11
  172. data/spec/moneta/adapters/tokyocabinet/adapter_tokyocabinet_bdb_spec.rb +0 -7
  173. data/spec/moneta/adapters/tokyocabinet/adapter_tokyocabinet_hdb_spec.rb +0 -7
  174. data/spec/moneta/adapters/tokyocabinet/standard_tokyocabinet_spec.rb +0 -7
  175. data/spec/moneta/adapters/tokyocabinet/standard_tokyocabinet_with_expires_spec.rb +0 -11
  176. data/spec/moneta/adapters/tokyotyrant/adapter_tokyotyrant_spec.rb +0 -11
  177. data/spec/moneta/adapters/tokyotyrant/helper.rb +0 -12
  178. data/spec/moneta/adapters/tokyotyrant/standard_tokyotyrant_spec.rb +0 -7
  179. data/spec/moneta/adapters/tokyotyrant/standard_tokyotyrant_with_expires_spec.rb +0 -12
  180. data/spec/moneta/adapters/yaml/adapter_yaml_spec.rb +0 -7
  181. data/spec/moneta/adapters/yaml/standard_yaml_spec.rb +0 -9
  182. data/spec/moneta/adapters/yaml/standard_yaml_with_expires_spec.rb +0 -13
  183. data/spec/moneta/builder_spec.rb +0 -50
  184. data/spec/moneta/config_spec.rb +0 -219
  185. data/spec/moneta/mutex_spec.rb +0 -55
  186. data/spec/moneta/proxies/cache/cache_file_memory_spec.rb +0 -24
  187. data/spec/moneta/proxies/cache/cache_memory_null_spec.rb +0 -12
  188. data/spec/moneta/proxies/enumerable/enumerable_spec.rb +0 -26
  189. data/spec/moneta/proxies/expires/expires_file_spec.rb +0 -28
  190. data/spec/moneta/proxies/expires/expires_memory_spec.rb +0 -15
  191. data/spec/moneta/proxies/expires/expires_memory_with_default_expires_spec.rb +0 -16
  192. data/spec/moneta/proxies/fallback/fallback_spec.rb +0 -42
  193. data/spec/moneta/proxies/lock/lock_spec.rb +0 -10
  194. data/spec/moneta/proxies/optionmerger/optionmerger_spec.rb +0 -96
  195. data/spec/moneta/proxies/pool/pool_spec.rb +0 -353
  196. data/spec/moneta/proxies/proxy/proxy_expires_memory_spec.rb +0 -16
  197. data/spec/moneta/proxies/shared/shared_tcp_spec.rb +0 -59
  198. data/spec/moneta/proxies/shared/shared_unix_spec.rb +0 -58
  199. data/spec/moneta/proxies/transformer/transformer_bencode_spec.rb +0 -19
  200. data/spec/moneta/proxies/transformer/transformer_bert_spec.rb +0 -19
  201. data/spec/moneta/proxies/transformer/transformer_bson_spec.rb +0 -25
  202. data/spec/moneta/proxies/transformer/transformer_bzip2_spec.rb +0 -19
  203. data/spec/moneta/proxies/transformer/transformer_json_spec.rb +0 -19
  204. data/spec/moneta/proxies/transformer/transformer_key_inspect_spec.rb +0 -17
  205. data/spec/moneta/proxies/transformer/transformer_key_marshal_spec.rb +0 -17
  206. data/spec/moneta/proxies/transformer/transformer_key_to_s_spec.rb +0 -17
  207. data/spec/moneta/proxies/transformer/transformer_key_yaml_spec.rb +0 -17
  208. data/spec/moneta/proxies/transformer/transformer_lz4_spec.rb +0 -19
  209. data/spec/moneta/proxies/transformer/transformer_lzma_spec.rb +0 -19
  210. data/spec/moneta/proxies/transformer/transformer_lzo_spec.rb +0 -19
  211. data/spec/moneta/proxies/transformer/transformer_marshal_base64_spec.rb +0 -20
  212. data/spec/moneta/proxies/transformer/transformer_marshal_city128_spec.rb +0 -15
  213. data/spec/moneta/proxies/transformer/transformer_marshal_city32_spec.rb +0 -15
  214. data/spec/moneta/proxies/transformer/transformer_marshal_city64_spec.rb +0 -15
  215. data/spec/moneta/proxies/transformer/transformer_marshal_escape_spec.rb +0 -21
  216. data/spec/moneta/proxies/transformer/transformer_marshal_hex_spec.rb +0 -20
  217. data/spec/moneta/proxies/transformer/transformer_marshal_hmac_spec.rb +0 -19
  218. data/spec/moneta/proxies/transformer/transformer_marshal_md5_spec.rb +0 -15
  219. data/spec/moneta/proxies/transformer/transformer_marshal_md5_spread_spec.rb +0 -15
  220. data/spec/moneta/proxies/transformer/transformer_marshal_prefix_base64_spec.rb +0 -33
  221. data/spec/moneta/proxies/transformer/transformer_marshal_prefix_spec.rb +0 -15
  222. data/spec/moneta/proxies/transformer/transformer_marshal_qp_spec.rb +0 -20
  223. data/spec/moneta/proxies/transformer/transformer_marshal_rmd160_spec.rb +0 -15
  224. data/spec/moneta/proxies/transformer/transformer_marshal_sha1_spec.rb +0 -15
  225. data/spec/moneta/proxies/transformer/transformer_marshal_sha256_spec.rb +0 -15
  226. data/spec/moneta/proxies/transformer/transformer_marshal_sha384_spec.rb +0 -15
  227. data/spec/moneta/proxies/transformer/transformer_marshal_sha512_spec.rb +0 -15
  228. data/spec/moneta/proxies/transformer/transformer_marshal_spec.rb +0 -19
  229. data/spec/moneta/proxies/transformer/transformer_marshal_truncate_spec.rb +0 -15
  230. data/spec/moneta/proxies/transformer/transformer_marshal_urlsafe_base64_spec.rb +0 -20
  231. data/spec/moneta/proxies/transformer/transformer_marshal_uuencode_spec.rb +0 -19
  232. data/spec/moneta/proxies/transformer/transformer_msgpack_spec.rb +0 -19
  233. data/spec/moneta/proxies/transformer/transformer_ox_spec.rb +0 -19
  234. data/spec/moneta/proxies/transformer/transformer_php_spec.rb +0 -19
  235. data/spec/moneta/proxies/transformer/transformer_quicklz_spec.rb +0 -19
  236. data/spec/moneta/proxies/transformer/transformer_snappy_spec.rb +0 -19
  237. data/spec/moneta/proxies/transformer/transformer_tnet_spec.rb +0 -19
  238. data/spec/moneta/proxies/transformer/transformer_value_marshal_spec.rb +0 -19
  239. data/spec/moneta/proxies/transformer/transformer_value_yaml_spec.rb +0 -19
  240. data/spec/moneta/proxies/transformer/transformer_yaml_spec.rb +0 -19
  241. data/spec/moneta/proxies/transformer/transformer_zlib_spec.rb +0 -19
  242. data/spec/moneta/proxies/weak_create/weak_create_spec.rb +0 -21
  243. data/spec/moneta/proxies/weak_each_key/weak_each_key_spec.rb +0 -22
  244. data/spec/moneta/proxies/weak_increment/weak_increment_spec.rb +0 -21
  245. data/spec/moneta/semaphore_spec.rb +0 -68
  246. data/spec/moneta/stack_file_memory_spec.rb +0 -15
  247. data/spec/moneta/stack_memory_file_spec.rb +0 -13
  248. data/spec/rack/cache_moneta_spec.rb +0 -355
  249. data/spec/rack/moneta_cookies_spec.rb +0 -83
  250. data/spec/rack/moneta_store_spec.rb +0 -83
  251. data/spec/rack/session_moneta_spec.rb +0 -350
  252. data/spec/restserver.rb +0 -44
  253. data/test/action_dispatch/fixtures/session_autoload_test/foo.rb +0 -10
  254. data/test/action_dispatch/session_moneta_store_test.rb +0 -204
@@ -1,66 +0,0 @@
1
- shared_examples :null do
2
- it 'reads from keys like a Hash' do
3
- moneta_property_of(keys: 1).check do |m|
4
- store[m.keys[0]].should be_nil
5
- store.load(m.keys[0]).should be_nil
6
- end
7
- end
8
-
9
- it 'guarantees that the same value is returned when setting a key' do
10
- moneta_property_of(keys: 1, values: 1).check do |m|
11
- (store[m.keys[0]] = m.values[0]).should equal(m.values[0])
12
- end
13
- end
14
-
15
- it 'returns false from #key? if a key is not available' do
16
- moneta_property_of(keys: 1).check(1) do |m|
17
- store.key?(m.keys[0]).should be false
18
- end
19
- end
20
-
21
- it 'returns nil from delete if a value for a key does not exist' do
22
- moneta_property_of(keys: 1).check do |m|
23
- store.delete(m.keys[0]).should be_nil
24
- end
25
- end
26
-
27
- it 'removes all keys from the store with clear' do
28
- moneta_property_of(keys: 2, values: 2).check do |m|
29
- store[m.keys[0]] = m.values[0]
30
- store[m.keys[1]] = m.values[1]
31
- store.clear.should equal(store)
32
- store.key?(m.keys[0]).should be false
33
- store.key?(m.keys[1]).should be false
34
- end
35
- end
36
-
37
- it 'fetches a key with a default value with fetch, if the key is not available' do
38
- moneta_property_of(keys: 1, values: 1).check do |m|
39
- store.fetch(m.keys[0], m.values[0]).should == m.values[0]
40
- end
41
- end
42
-
43
- it 'fetches a key with a block with fetch, if the key is not available' do
44
- moneta_property_of(keys: 1, values: 1).check do |m|
45
- store.fetch(m.keys[0]) do |k|
46
- k.should equal(m.keys[0])
47
- m.values[0]
48
- end.should equal(m.values[0])
49
- end
50
- end
51
-
52
- it 'accepts frozen options' do
53
- moneta_property_of(keys: 1, values: 1).check do |m|
54
- options = {option1: 1, options2: 2}
55
- options.freeze
56
- store.clear.should equal(store)
57
- store.key?(m.keys[0], options).should be false
58
- store.load(m.keys[0], options).should be_nil
59
- store.fetch(m.keys[0], 42, options).should == 42
60
- store.fetch(m.keys[0], options) { 42 }.should == 42
61
- store.delete(m.keys[0], options).should be_nil
62
- store.clear(options).should equal(store)
63
- store.store(m.keys[0], m.values[0], options).should == m.values[0]
64
- end
65
- end
66
- end
@@ -1,14 +0,0 @@
1
- shared_examples :persist do
2
- it 'persists values' do
3
- moneta_property_of(keys: 1, values: 1).check do |m|
4
- new_store.tap do |store|
5
- store[m.keys[0]] = m.values[0]
6
- store.close
7
- end
8
- new_store.tap do |store|
9
- store[m.keys[0]].should == m.values[0]
10
- store.close
11
- end
12
- end
13
- end
14
- end
@@ -1,9 +0,0 @@
1
- shared_examples :returndifferent do
2
- it 'guarantees that a different value is retrieved' do
3
- moneta_property_of(keys: 1, values: 1).check do |m|
4
- next if [TrueClass,FalseClass,NilClass,Numeric].any?(&m.values[0].method(:is_a?))
5
- store[m.keys[0]] = m.values[0]
6
- store[m.keys[0]].should_not be_equal(m.values[0])
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- shared_examples :returnsame do
2
- it 'guarantees that the same value is retrieved' do
3
- moneta_property_of(keys: 1, values: 1).check do |m|
4
- next if [TrueClass, FalseClass, Numeric].any?(&m.values[0].method(:is_a?))
5
- store[m.keys[0]] = m.values[0]
6
- store[m.keys[0]].should be_equal(m.values[0])
7
- end
8
- end
9
- end
@@ -1,261 +0,0 @@
1
- shared_examples :store do
2
- it 'writes values to keys that like a Hash' do
3
- moneta_property_of(keys: 1, values: 1).check do |m|
4
- store[m.keys[0]] = m.values[0]
5
- store[m.keys[0]].should == m.values[0]
6
- store.load(m.keys[0]).should == m.values[0]
7
- end
8
- end
9
-
10
- it 'returns true from #key? if a key is available' do
11
- moneta_property_of(keys: 1, values: 1).check do |m|
12
- store[m.keys[0]] = m.values[0]
13
- store.key?(m.keys[0]).should be true
14
- end
15
- end
16
-
17
- it 'stores values with #store' do
18
- moneta_property_of(keys: 1, values: 1).check do |m|
19
- value = m.values[0]
20
- store.store(m.keys[0], value).should equal(value)
21
- store[m.keys[0]].should == m.values[0]
22
- store.load(m.keys[0]).should == m.values[0]
23
- end
24
- end
25
-
26
- it 'stores values after clear' do
27
- moneta_property_of(keys: 2, values: 2).check do |m|
28
- store[m.keys[0]] = m.values[0]
29
- store[m.keys[1]] = m.values[1]
30
- store.clear.should equal(store)
31
- store[m.keys[0]] = m.values[0]
32
- store[m.keys[0]].should == m.values[0]
33
- store[m.keys[1]].should be_nil
34
- end
35
- end
36
-
37
- it 'removes and returns a value from the backing store via delete if it exists' do
38
- moneta_property_of(keys: 1, values: 1).check do |m|
39
- store[m.keys[0]] = m.values[0]
40
- store.delete(m.keys[0]).should == m.values[0]
41
- store.key?(m.keys[0]).should be false
42
- end
43
- end
44
-
45
- it 'overwrites existing values' do
46
- moneta_property_of(keys: 1, values: 2).check do |m|
47
- store[m.keys[0]] = m.values[0]
48
- store[m.keys[0]].should == m.values[0]
49
- store[m.keys[0]] = m.values[1]
50
- store[m.keys[0]].should == m.values[1]
51
- end
52
- end
53
-
54
- it 'stores frozen values' do
55
- moneta_property_of(keys: 1, values: 1).check do |m|
56
- value = m.values[0].freeze
57
- (store[m.keys[0]] = value).should equal(value)
58
- store[m.keys[0]].should == m.values[0]
59
- end
60
- end
61
-
62
- it 'stores frozen keys' do
63
- moneta_property_of(keys: 1, values: 1).check do |m|
64
- key = m.keys[0].freeze
65
- store[key] = m.values[0]
66
- store[m.keys[0]].should == m.values[0]
67
- end
68
- end
69
-
70
- it 'fetches a key with a default value with fetch, if the key is available' do
71
- moneta_property_of(keys: 1, values: 2).check do |m|
72
- next if m.values[0].nil?
73
- store[m.keys[0]] = m.values[0]
74
- store.fetch(m.keys[0], m.values[1]).should == m.values[0]
75
- end
76
- end
77
-
78
- it 'does not run the block in fetch if the key is available' do
79
- moneta_property_of(keys: 1, values: 1).check do |m|
80
- next if m.values[0].nil?
81
- store[m.keys[0]] = m.values[0]
82
- unaltered = 'unaltered'
83
- store.fetch(m.keys[0]) { unaltered = 'altered' }
84
- unaltered.should == 'unaltered'
85
- end
86
- end
87
-
88
- shared_examples :values_at do |name|
89
- it 'retrieves stored values' do
90
- moneta_property_of(keys: 3, values: 3).check do |m|
91
- store[m.keys[0]] = m.values[0]
92
- store[m.keys[1]] = m.values[1]
93
- store[m.keys[2]] = m.values[2]
94
- expect(store.public_send(name, m.keys[1], m.keys[2], m.keys[0])).to eq [m.values[1], m.values[2], m.values[0]]
95
- store.clear
96
- end
97
- end
98
-
99
- it 'returns nil in place of missing values' do
100
- moneta_property_of(keys: 3, values: 2).check do |m|
101
- store[m.keys[0]] = m.values[0]
102
- store[m.keys[1]] = m.values[1]
103
- expect(store.public_send(name, m.keys[1], m.keys[2], m.keys[0])).to eq [m.values[1], nil, m.values[0]]
104
- store.clear
105
- end
106
- end
107
- end
108
-
109
- describe '#values_at' do
110
- include_examples :values_at, :values_at
111
- end
112
-
113
- describe '#fetch_values' do
114
- include_examples :values_at, :fetch_values
115
-
116
- it 'yields to the block, if given, for keys that are not in the store' do
117
- moneta_property_of(keys: 4, values: 3).check do |m|
118
- store[m.keys[0]] = m.values[0]
119
- store[m.keys[1]] = m.values[1]
120
- store[m.keys[2]] = m.values[2]
121
-
122
- expect do |b|
123
- store.fetch_values(m.keys[0], m.keys[1], m.keys[2], m.keys[3], &b)
124
- end.to yield_with_args(m.keys[3])
125
-
126
- store.clear
127
- end
128
- end
129
-
130
- it 'uses the value of the block, if given, for keys that are not in the store' do
131
- moneta_property_of(keys: 4, values: 4).check do |m|
132
- store[m.keys[0]] = m.values[0]
133
- store[m.keys[1]] = m.values[1]
134
- store[m.keys[2]] = m.values[2]
135
-
136
- expect(store.fetch_values(m.keys[0], m.keys[1], m.keys[2], m.keys[3]) do |key|
137
- expect(key).to eq m.keys[3]
138
- m.values[3]
139
- end).to eq [m.values[0], m.values[1], m.values[2], m.values[3]]
140
-
141
- store.clear
142
- end
143
- end
144
-
145
- it 'raises any error raised in the block' do
146
- expect { store.fetch_values('key') { raise 'yarg' } }.to raise_error 'yarg'
147
- end
148
- end
149
-
150
- describe '#slice' do
151
- it 'returns pairs of stored keys and values' do
152
- moneta_property_of(keys: 3, values: 3).check do |m|
153
- store[m.keys[0]] = m.values[0]
154
- store[m.keys[1]] = m.values[1]
155
- store[m.keys[2]] = m.values[2]
156
-
157
- expect(store.slice(*[m.keys[0], m.keys[1], m.keys[2]].shuffle).to_a).to \
158
- contain_exactly([m.keys[0], m.values[0]], [m.keys[1], m.values[1]], [m.keys[2], m.values[2]])
159
-
160
- store.clear
161
- end
162
- end
163
-
164
- it 'does not return pairs for any keys absent from the store' do
165
- moneta_property_of(keys: 4, values: 3).check do |m|
166
- store[m.keys[0]] = m.values[0]
167
- store[m.keys[1]] = m.values[1]
168
- store[m.keys[2]] = m.values[2]
169
-
170
- expect(store.slice(*[m.keys[0], m.keys[1], m.keys[2], m.keys[3]].shuffle).to_a).to \
171
- contain_exactly([m.keys[0], m.values[0]], [m.keys[1], m.values[1]], [m.keys[2], m.values[2]])
172
-
173
- store.clear
174
- end
175
- end
176
- end
177
-
178
- shared_examples :merge! do
179
- it 'stores values' do
180
- moneta_property_of(keys: 3, values: 3).check do |m|
181
- expect(store.public_send(method, pairs.call({ m.keys[0] => m.values[0], m.keys[1] => m.values[1], m.keys[2] => m.values[2] }))).to be store
182
- expect(store.key?(m.keys[0])).to be true
183
- expect(store[m.keys[0]]).to eq m.values[0]
184
- expect(store.key?(m.keys[1])).to be true
185
- expect(store[m.keys[1]]).to eq m.values[1]
186
- expect(store.key?(m.keys[2])).to be true
187
- expect(store[m.keys[2]]).to eq m.values[2]
188
- store.clear
189
- end
190
- end
191
-
192
- it 'overwrites existing values' do
193
- moneta_property_of(keys: 2, values: 3).check do |m|
194
- expect(store[m.keys[0]] = m.values[0]).to eq m.values[0]
195
- expect(store.public_send(method, pairs.call({ m.keys[0] => m.values[1], m.keys[1] => m.values[2] }))).to be store
196
- expect(store.key?(m.keys[0])).to be true
197
- expect(store[m.keys[0]]).to eq m.values[1]
198
- expect(store.key?(m.keys[1])).to be true
199
- expect(store[m.keys[1]]).to eq m.values[2]
200
- store.clear
201
- end
202
- end
203
-
204
- it 'stores the return value of the block, if given, for keys that will be overwritten' do
205
- moneta_property_of(keys: 2, values: 4).check do |m|
206
- expect(store[m.keys[0]] = m.values[0]).to eq m.values[0]
207
- expect(store.public_send(method, pairs.call({ m.keys[0] => m.values[1], m.keys[1] => m.values[2] })) do |key, old_val, new_val|
208
- expect(key).to eq m.keys[0]
209
- expect(old_val).to eq m.values[0]
210
- expect(new_val).to eq m.values[1]
211
- m.values[3]
212
- end).to be store
213
-
214
- expect(store.key?(m.keys[0])).to be true
215
- expect(store[m.keys[0]]).to eq m.values[3]
216
- expect(store.key?(m.keys[1])).to be true
217
- expect(store[m.keys[1]]).to eq m.values[2]
218
- store.clear
219
- end
220
- end
221
-
222
- it 'raises any error raised in the block' do
223
- store['x'] = 'y'
224
- expect { store.public_send(method, 'x' => 'v') { raise 'yarg' } }.to raise_error 'yarg'
225
- end
226
- end
227
-
228
- shared_examples :merge_or_update do
229
- context 'when passed a hash' do
230
- let(:pairs) { :itself.to_proc }
231
- include_examples :merge!
232
- end
233
-
234
- context 'when passed an array' do
235
- let(:pairs) { :to_a.to_proc }
236
- include_examples :merge!
237
- end
238
-
239
- context 'when passed a lazy enumerator' do
240
- let :pairs do
241
- lambda do |hash|
242
- Enumerator.new do |y|
243
- hash.each(&y.method(:<<))
244
- end.lazy
245
- end
246
- end
247
-
248
- include_examples :merge!
249
- end
250
- end
251
-
252
- describe '#merge!' do
253
- let(:method) { :merge! }
254
- include_examples :merge_or_update
255
- end
256
-
257
- describe '#update' do
258
- let(:method) { :update }
259
- include_examples :merge_or_update
260
- end
261
- end
@@ -1,13 +0,0 @@
1
- shared_examples :store_large do
2
- it 'should store values up to 32k' do
3
- value = 'x' * (32 * 1024)
4
- store['large'] = value
5
- store['large'].should == value
6
- end
7
-
8
- it 'should store keys up to 128 bytes' do
9
- key = 'x' * 128
10
- store[key] = 'value'
11
- store[key].should == 'value'
12
- end
13
- end
@@ -1,44 +0,0 @@
1
- shared_examples :transform_value do
2
- it 'allows to bypass transformer with :raw' do
3
- store['key'] = 'value'
4
- load_value(store.load('key', raw: true)).should == 'value'
5
-
6
- store.store('key', 'value', raw: true)
7
- store.load('key', raw: true).should == 'value'
8
- store.delete('key', raw: true).should == 'value'
9
- end
10
-
11
- it 'allows to bypass transformer with raw syntactic sugar' do
12
- store['key'] = 'value'
13
- load_value(store.raw.load('key')).should == 'value'
14
-
15
- store.raw.store('key', 'value')
16
- store.raw['key'].should == 'value'
17
- store.raw.load('key').should == 'value'
18
- store.raw.delete('key').should == 'value'
19
-
20
- store.raw['key'] = 'value2'
21
- store.raw['key'].should == 'value2'
22
- end
23
-
24
- it 'returns unmarshalled value' do
25
- store.store('key', 'unmarshalled value', raw: true)
26
- store.load('key', raw: true).should == 'unmarshalled value'
27
- end
28
-
29
- it 'might raise exception on invalid value' do
30
- store.store('key', 'unmarshalled value', raw: true)
31
-
32
- begin
33
- store['key'].should == load_value('unmarshalled value')
34
- store.delete('key').should == load_value('unmarshalled value')
35
- rescue Exception => ex
36
- expect do
37
- store['key']
38
- end.to raise_error
39
- expect do
40
- store.delete('key')
41
- end.to raise_error
42
- end
43
- end
44
- end
@@ -1,41 +0,0 @@
1
- shared_examples :transform_value_expires do
2
- it 'allows to bypass transformer with :raw' do
3
- store['key'] = 'value'
4
- load_value(store.load('key', raw: true)).should == 'value'
5
- store['key'] = [1,2,3]
6
- load_value(store.load('key', raw: true)).should == [[1,2,3]]
7
- store['key'] = nil
8
- load_value(store.load('key', raw: true)).should == [nil]
9
- store['key'] = false
10
- load_value(store.load('key', raw: true)).should be false
11
-
12
- store.store('key', 'value', expires: 10)
13
- load_value(store.load('key', raw: true)).first.should == 'value'
14
- load_value(store.load('key', raw: true)).last.should respond_to(:to_int)
15
-
16
- store.store('key', 'value', raw: true)
17
- store.load('key', raw: true).should == 'value'
18
- store.delete('key', raw: true).should == 'value'
19
- end
20
-
21
- it 'returns unmarshalled value' do
22
- store.store('key', 'unmarshalled value', raw: true)
23
- store.load('key', raw: true).should == 'unmarshalled value'
24
- end
25
-
26
- it 'might raise exception on invalid value' do
27
- store.store('key', 'unmarshalled value', raw: true)
28
-
29
- begin
30
- store['key'].should == load_value('unmarshalled value')
31
- store.delete('key').should == load_value('unmarshalled value')
32
- rescue Exception => ex
33
- expect do
34
- store['key']
35
- end.to raise_error
36
- expect do
37
- store.delete('key')
38
- end.to raise_error
39
- end
40
- end
41
- end