From 7ce091957118873763d18c0287ec3a629576d8a1 Mon Sep 17 00:00:00 2001 From: Steven Harman Date: Wed, 1 Nov 2023 11:33:31 -0400 Subject: [PATCH] Real Redis adds an Array as a stringified member We were flattening the wrapped array here to get rid of any nesting of arrays we might have accidentally done by wrapping with an Array literal. Instead, Kernel#Array will leave an existing Array alone, and wrap any single object in an Array. This is consistent with Real Redis' behavior. --- lib/mock_redis/set_methods.rb | 2 +- spec/commands/sadd_spec.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/mock_redis/set_methods.rb b/lib/mock_redis/set_methods.rb index 04a576d..bf355b6 100644 --- a/lib/mock_redis/set_methods.rb +++ b/lib/mock_redis/set_methods.rb @@ -8,7 +8,7 @@ module SetMethods def sadd(key, members) members_class = members.class - members = [members].flatten.map(&:to_s) + members = Array(members).map(&:to_s) assert_has_args(members, 'sadd') with_set_at(key) do |s| diff --git a/spec/commands/sadd_spec.rb b/spec/commands/sadd_spec.rb index 59bb86e..696d3bb 100644 --- a/spec/commands/sadd_spec.rb +++ b/spec/commands/sadd_spec.rb @@ -53,6 +53,11 @@ expect(@redises.smembers(@key)).to eq(%w[1 2 3]) end + it 'adds an Array as a stringified member' do + @redises.sadd(@key, [[1], 2, 3]) + expect(@redises.smembers(@key)).to eq(%w[[1] 2 3]) + end + it 'raises an error if an empty array is given' do expect do @redises.sadd(@key, [])