added recount unread notifications to markers
[akkoma] / test / web / mastodon_api / controllers / filter_controller_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.MastodonAPI.FilterControllerTest do
6 use Pleroma.Web.ConnCase, async: true
7
8 alias Pleroma.Web.MastodonAPI.FilterView
9
10 import Pleroma.Factory
11
12 test "creating a filter", %{conn: conn} do
13 user = insert(:user)
14
15 filter = %Pleroma.Filter{
16 phrase: "knights",
17 context: ["home"]
18 }
19
20 conn =
21 conn
22 |> assign(:user, user)
23 |> post("/api/v1/filters", %{"phrase" => filter.phrase, context: filter.context})
24
25 assert response = json_response(conn, 200)
26 assert response["phrase"] == filter.phrase
27 assert response["context"] == filter.context
28 assert response["irreversible"] == false
29 assert response["id"] != nil
30 assert response["id"] != ""
31 end
32
33 test "fetching a list of filters", %{conn: conn} do
34 user = insert(:user)
35
36 query_one = %Pleroma.Filter{
37 user_id: user.id,
38 filter_id: 1,
39 phrase: "knights",
40 context: ["home"]
41 }
42
43 query_two = %Pleroma.Filter{
44 user_id: user.id,
45 filter_id: 2,
46 phrase: "who",
47 context: ["home"]
48 }
49
50 {:ok, filter_one} = Pleroma.Filter.create(query_one)
51 {:ok, filter_two} = Pleroma.Filter.create(query_two)
52
53 response =
54 conn
55 |> assign(:user, user)
56 |> get("/api/v1/filters")
57 |> json_response(200)
58
59 assert response ==
60 render_json(
61 FilterView,
62 "filters.json",
63 filters: [filter_two, filter_one]
64 )
65 end
66
67 test "get a filter", %{conn: conn} do
68 user = insert(:user)
69
70 query = %Pleroma.Filter{
71 user_id: user.id,
72 filter_id: 2,
73 phrase: "knight",
74 context: ["home"]
75 }
76
77 {:ok, filter} = Pleroma.Filter.create(query)
78
79 conn =
80 conn
81 |> assign(:user, user)
82 |> get("/api/v1/filters/#{filter.filter_id}")
83
84 assert _response = json_response(conn, 200)
85 end
86
87 test "update a filter", %{conn: conn} do
88 user = insert(:user)
89
90 query = %Pleroma.Filter{
91 user_id: user.id,
92 filter_id: 2,
93 phrase: "knight",
94 context: ["home"]
95 }
96
97 {:ok, _filter} = Pleroma.Filter.create(query)
98
99 new = %Pleroma.Filter{
100 phrase: "nii",
101 context: ["home"]
102 }
103
104 conn =
105 conn
106 |> assign(:user, user)
107 |> put("/api/v1/filters/#{query.filter_id}", %{
108 phrase: new.phrase,
109 context: new.context
110 })
111
112 assert response = json_response(conn, 200)
113 assert response["phrase"] == new.phrase
114 assert response["context"] == new.context
115 end
116
117 test "delete a filter", %{conn: conn} do
118 user = insert(:user)
119
120 query = %Pleroma.Filter{
121 user_id: user.id,
122 filter_id: 2,
123 phrase: "knight",
124 context: ["home"]
125 }
126
127 {:ok, filter} = Pleroma.Filter.create(query)
128
129 conn =
130 conn
131 |> assign(:user, user)
132 |> delete("/api/v1/filters/#{filter.filter_id}")
133
134 assert response = json_response(conn, 200)
135 assert response == %{}
136 end
137 end