From 26c9d8f9df8abf603c0326392662b9546beb916c Mon Sep 17 00:00:00 2001 From: Kurt Hogarth <87607684+cylkdev@users.noreply.github.com> Date: Tue, 5 Mar 2024 03:20:26 -0500 Subject: [PATCH] update sandbox hash_set_many behaviour to be consistent (#24) * update sandbox behavior for consistency * add tests * add tests for map arguments --- lib/cache/sandbox.ex | 5 ++++- test/cache_sandbox_test.exs | 21 ++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/cache/sandbox.ex b/lib/cache/sandbox.ex index 845532b..85d87f6 100644 --- a/lib/cache/sandbox.ex +++ b/lib/cache/sandbox.ex @@ -111,7 +111,7 @@ defmodule Cache.Sandbox do if ttl do command_resps = - Enum.map(keys_fields_values, fn {_, fields_values} -> length(fields_values) end) + Enum.map(keys_fields_values, fn {_, fields_values} -> enum_length(fields_values) end) expiry_resps = Enum.map(keys_fields_values, fn _ -> 1 end) {:ok, command_resps ++ expiry_resps} @@ -268,4 +268,7 @@ defmodule Cache.Sandbox do end end) end + + defp enum_length(m) when is_map(m), do: m |> Map.to_list() |> enum_length() + defp enum_length(l), do: length(l) end diff --git a/test/cache_sandbox_test.exs b/test/cache_sandbox_test.exs index 493a6bb..5421995 100644 --- a/test/cache_sandbox_test.exs +++ b/test/cache_sandbox_test.exs @@ -26,7 +26,6 @@ defmodule CacheSandboxTest do :ok = TestCache.json_set(json_test_key, @json_test_value) %{key: json_test_key} - end describe "sandboxing caches" do @@ -114,4 +113,24 @@ end assert {:ok, "some value"} === TestCache.json_get(key, ["."]) end end + + describe "&hash_set_many/2" do + test "returns ok tuple when ttl is passed", %{key: key} do + assert {:ok, [1, 1]} = TestCache.hash_set_many([{key, [{"some_key", "some_value"}]}], 1_000) + end + + test "returns ok atom when ttl is not passed", %{key: key} do + assert :ok = TestCache.hash_set_many([{key, [{"some_key", "some_value"}]}]) + end + + test "accepts map and list values", %{key: key} do + assert {:ok, [1, 1]} = TestCache.hash_set_many([{key, [{"some_key", "some_value"}]}], 1_000) + + assert {:ok, [1, 1]} = TestCache.hash_set_many([{key, %{"some_key" => "some_value"}}], 1_000) + + assert {:ok, [1, 1]} = TestCache.hash_set_many(%{key => [{"some_key", "some_value"}]}, 1_000) + + assert {:ok, [1, 1]} = TestCache.hash_set_many(%{key => %{"some_key" => "some_value"}}, 1_000) + end + end end