@@ -13,8 +13,10 @@ class Person
1313 kredis_list :names_with_custom_key_via_lambda , key : -> ( p ) { "person:#{ p . id } :names_customized" }
1414 kredis_list :names_with_custom_key_via_method , key : :generate_key
1515 kredis_list :names_with_default_via_lambda , default : -> ( p ) { [ "Random" , p . name ] }
16+ kredis_list :names_with_ttl , expires_in : 1 . second
1617 kredis_unique_list :skills , limit : 2
1718 kredis_unique_list :skills_with_default_via_lambda , default : -> ( p ) { [ "Random" , "Random" , p . name ] }
19+ kredis_unique_list :skills_with_ttl , expires_in : 1 . second
1820 kredis_ordered_set :reading_list , limit : 2
1921 kredis_flag :special
2022 kredis_flag :temporary_special , expires_in : 1 . second
@@ -34,6 +36,7 @@ class Person
3436 kredis_slots :meetings , available : 3
3537 kredis_set :vacations
3638 kredis_set :vacations_with_default_via_lambda , default : -> ( p ) { JSON . parse ( p . vacation_destinations ) . map { |location | location [ "city" ] } }
39+ kredis_set :vacations_with_ttl , expires_in : 1 . second
3740 kredis_json :settings
3841 kredis_json :settings_with_default_via_lambda , default : -> ( p ) { JSON . parse ( p . anthropometry ) . merge ( eye_color : p . eye_color ) }
3942 kredis_counter :amount
@@ -148,6 +151,14 @@ class AttributesTest < ActiveSupport::TestCase
148151 assert_equal %w[ Random Jason ] , Kredis . redis . lrange ( Kredis . namespaced_key ( "people:8:names_with_default_via_lambda" ) , 0 , -1 )
149152 end
150153
154+ test "list with ttl" do
155+ @person . names_with_ttl . append ( %w[ david kasper ] )
156+ assert_equal %w[ david kasper ] , @person . names_with_ttl . elements
157+
158+ sleep 1.1
159+ assert_equal [ ] , @person . names_with_ttl . elements
160+ end
161+
151162 test "unique list" do
152163 @person . skills . prepend ( %w[ trolling photography ] )
153164 @person . skills . prepend ( "racing" )
@@ -160,6 +171,14 @@ class AttributesTest < ActiveSupport::TestCase
160171 assert_equal %w[ Random Jason ] , Kredis . redis . lrange ( Kredis . namespaced_key ( "people:8:skills_with_default_via_lambda" ) , 0 , -1 )
161172 end
162173
174+ test "unique list with ttl" do
175+ @person . skills_with_ttl . prepend ( %w[ trolling photography ] )
176+ assert_equal %w[ trolling photography ] . to_set , @person . skills_with_ttl . elements . to_set
177+
178+ sleep 1.1
179+ assert_equal [ ] , @person . skills_with_ttl . elements
180+ end
181+
163182 test "ordered set" do
164183 @person . reading_list . prepend ( %w[ rework shapeup remote ] )
165184 assert_equal %w[ remote shapeup ] , @person . reading_list . elements
@@ -324,6 +343,14 @@ class AttributesTest < ActiveSupport::TestCase
324343 assert_equal [ "Paris" ] , Kredis . redis . smembers ( Kredis . namespaced_key ( "people:8:vacations_with_default_via_lambda" ) )
325344 end
326345
346+ test "set with ttl" do
347+ @person . vacations_with_ttl . add "paris"
348+ assert_equal [ "paris" ] , @person . vacations_with_ttl . members
349+
350+ sleep 1.1
351+ assert_equal [ ] , @person . vacations_with_ttl . members
352+ end
353+
327354 test "json" do
328355 @person . settings . value = { "color" => "red" , "count" => 2 }
329356 assert_equal ( { "color" => "red" , "count" => 2 } , @person . settings . value )
0 commit comments