Merge branch 'develop' into tests/mastodon_api_controller.ex
[akkoma] / test / web / streamer / state_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.StateTest do
6 use Pleroma.DataCase
7
8 import Pleroma.Factory
9 alias Pleroma.Web.Streamer
10 alias Pleroma.Web.Streamer.StreamerSocket
11
12 @moduletag needs_streamer: true
13
14 describe "sockets" do
15 setup do
16 user = insert(:user)
17 user2 = insert(:user)
18 {:ok, %{user: user, user2: user2}}
19 end
20
21 test "it can add a socket", %{user: user} do
22 Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}})
23
24 assert(%{"public" => [%StreamerSocket{transport_pid: 1}]} = Streamer.get_sockets())
25 end
26
27 test "it can add multiple sockets per user", %{user: user} do
28 Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}})
29 Streamer.add_socket("public", %{transport_pid: 2, assigns: %{user: user}})
30
31 assert(
32 %{
33 "public" => [
34 %StreamerSocket{transport_pid: 2},
35 %StreamerSocket{transport_pid: 1}
36 ]
37 } = Streamer.get_sockets()
38 )
39 end
40
41 test "it will not add a duplicate socket", %{user: user} do
42 Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}})
43 Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}})
44
45 assert(
46 %{
47 "activity" => [
48 %StreamerSocket{transport_pid: 1}
49 ]
50 } = Streamer.get_sockets()
51 )
52 end
53 end
54 end