this repo has no description

Add more cache tests

hauleth.dev c1d3aba2 c93daeea

verified
Changed files
+50 -1
lib
esl_hn
test
+5 -1
lib/esl_hn/cache.ex
···
:ok
end
-
def prune(tid, id), do: :ets.delete(tid, id)
+
def prune(tid, id) do
+
:ets.delete(tid, id)
+
+
:ok
+
end
def prune_all(tid, ids) do
for id <- ids, do: :ets.delete(tid, id)
+45
test/esl_hn/cache_test.exs
···
end
end
end
+
+
describe "get/3" do
+
test "default value for non-existent keys is `nil`" do
+
assert {:ok, _pid, tid} = start_supervised(@subject)
+
+
assert nil == @subject.get(tid, :non_existent)
+
end
+
+
property "fetching non-existent data returns default value" do
+
assert {:ok, _pid, tid} = start_supervised(@subject)
+
+
check all(key <- term(), data <- term()) do
+
assert data == @subject.get(tid, key, data)
+
end
+
end
+
+
property "fetching existing data returns that data" do
+
assert {:ok, _pid, tid} = start_supervised(@subject)
+
+
check all(key <- term(), data <- term()) do
+
assert :ok == @subject.write(tid, key, data)
+
+
assert data == @subject.get(tid, key)
+
end
+
end
+
end
+
+
describe "prune/2" do
+
test "removing non-existent data is no-op" do
+
assert {:ok, _pid, tid} = start_supervised(@subject)
+
+
assert :ok == @subject.prune(tid, :non_existent)
+
end
+
+
property "we can read written data" do
+
assert {:ok, _pid, tid} = start_supervised(@subject)
+
+
check all(key <- term(), data <- term()) do
+
assert :ok == @subject.write(tid, key, data)
+
assert {:ok, data} == @subject.fetch(tid, key)
+
assert :ok == @subject.prune(tid, key)
+
assert :error == @subject.fetch(tid, key)
+
end
+
end
+
end
end