From 0bf270583e89ae31c7a343bacdbb87624cd464d6 Mon Sep 17 00:00:00 2001 From: Matt Swanson Date: Tue, 13 Feb 2024 17:22:43 -0500 Subject: [PATCH 1/2] Codify nil behavior with test --- test/types/hash_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/types/hash_test.rb b/test/types/hash_test.rb index 8f7bf01..09b15b7 100644 --- a/test/types/hash_test.rb +++ b/test/types/hash_test.rb @@ -124,4 +124,10 @@ class HashTest < ActiveSupport::TestCase @hash = Kredis.hash "myhash", typed: :integer, default: ->() { { space_invaders: "100", pong: "42" } } assert_equal({ "space_invaders" => 100, "pong" => 42 }, @hash.to_h) end + + test "does not support nil values" do + assert_raises do + @hash.update("key" => nil) + end + end end From eb68a92080d7aa84bae0f9fb2cc06e585d1ddeea Mon Sep 17 00:00:00 2001 From: Matt Swanson Date: Tue, 13 Feb 2024 17:35:57 -0500 Subject: [PATCH 2/2] Use compact --- lib/kredis/types/hash.rb | 2 +- test/types/hash_test.rb | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/kredis/types/hash.rb b/lib/kredis/types/hash.rb index 5b76f47..b441a19 100644 --- a/lib/kredis/types/hash.rb +++ b/lib/kredis/types/hash.rb @@ -18,7 +18,7 @@ def []=(key, value) end def update(**entries) - hset entries.transform_values { |val| type_to_string(val, typed) } if entries.flatten.any? + hset entries.transform_values { |val| type_to_string(val, typed) }.compact if entries.flatten.any? end def values_at(*keys) diff --git a/test/types/hash_test.rb b/test/types/hash_test.rb index 09b15b7..ef1f0de 100644 --- a/test/types/hash_test.rb +++ b/test/types/hash_test.rb @@ -125,9 +125,9 @@ class HashTest < ActiveSupport::TestCase assert_equal({ "space_invaders" => 100, "pong" => 42 }, @hash.to_h) end - test "does not support nil values" do - assert_raises do - @hash.update("key" => nil) - end + test "handles nil values gracefully" do + @hash.update("key" => nil, "key2" => "value2") + assert_nil @hash["key"] + assert_equal "value2", @hash["key2"] end end