Skip to content
Prev Previous commit
Next Next commit
Update KV to support case-insensitive fetches
  • Loading branch information
zerowidth committed Mar 22, 2021
commit fdd67046d9adfc290a5cb062b496eb5b6a6d4705
3 changes: 2 additions & 1 deletion lib/github/kv.rb
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ def mget(keys)
SELECT `key`, value FROM #{@table_name} WHERE `key` IN :keys AND (`expires_at` IS NULL OR `expires_at` > :now)
SQL

keys.map { |key| kvs[key] }
kvs.keys.each { |key| kvs[key.downcase] = kvs[key] }
keys.map { |key| kvs[key.downcase] }
}
end

Expand Down
12 changes: 12 additions & 0 deletions test/github/kv_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,18 @@ def test_mget_and_mset
assert_equal ["2", "1"], @kv.mget(["b", "a"]).value!
end

def test_get_and_set_case_insensitive
assert_nil @kv.get("foo").value!

@kv.set "foo", "lowercase"
assert_equal "lowercase", @kv.get("foo").value!
assert_equal "lowercase", @kv.get("FOO").value!

@kv.set "FOO", "uppercase"
assert_equal "uppercase", @kv.get("foo").value!
assert_equal "uppercase", @kv.get("FOO").value!
end

def test_get_failure
ActiveRecord::Base.connection.stubs(:select_all).raises(Errno::ECONNRESET)

Expand Down