live_beats/test/live_beats/presence/presence_client_test.exs
Berenice Medel Sánchez 6b5e820130 initial tests added
2022-01-11 14:04:27 -05:00

50 lines
1.3 KiB
Elixir

defmodule Phoenix.Presence.ClientTest do
use ExUnit.Case, async: true
alias Phoenix.Presence.Client.PresenceMock
test "When a new process is tracked, a topic is created" do
presence_key = 1
topic_id = 100
{:ok, pid} = PresenceMock.start_link(id: presence_key)
PresenceMock.track(pid, topic(topic_id), presence_key)
assert Process.alive?(pid)
# _ = :sys.get_state(PresenceClient)
:timer.sleep(1000)# not the best
assert %{topics: %{"mock_topic:100" => %{"1" => [%{phx_ref: _ref}]}}} =
GenServer.call(PresenceClient, :state)
send(pid, :quit)
:timer.sleep(1000)
refute Process.alive?(pid)
end
test "topic is removed from the topics state when there is no more presences" do
presence_key = 1
topic_id = 100
{:ok, pid} = PresenceMock.start_link(id: presence_key)
PresenceMock.track(pid, topic(topic_id), presence_key)
assert Process.alive?(pid)
# _ = :sys.get_state(PresenceClient)
:timer.sleep(1000)# not the best
assert %{topics: %{"mock_topic:100" => %{"1" => [%{phx_ref: _ref}]}}} =
GenServer.call(PresenceClient, :state)
send(pid, :quit)
:timer.sleep(1000)
refute Process.alive?(pid)
assert %{topics: %{}} = GenServer.call(PresenceClient, :state)
end
defp topic(id) do
"mock_topic:#{id}"
end
end