[Pleroma.Plugs.UserIsAdminPlug]: Check if admin is true instead of false, fix error...
[akkoma] / test / filter_test.exs
1 defmodule Pleroma.FilterTest do
2 alias Pleroma.{User, Repo}
3 use Pleroma.DataCase
4
5 import Pleroma.Factory
6 import Ecto.Query
7
8 describe "creating filters" do
9 test "creating one filter" do
10 user = insert(:user)
11
12 query = %Pleroma.Filter{
13 user_id: user.id,
14 filter_id: 42,
15 phrase: "knights",
16 context: ["home"]
17 }
18
19 {:ok, %Pleroma.Filter{} = filter} = Pleroma.Filter.create(query)
20 result = Pleroma.Filter.get(filter.filter_id, user)
21 assert query.phrase == result.phrase
22 end
23
24 test "creating one filter without a pre-defined filter_id" do
25 user = insert(:user)
26
27 query = %Pleroma.Filter{
28 user_id: user.id,
29 phrase: "knights",
30 context: ["home"]
31 }
32
33 {:ok, %Pleroma.Filter{} = filter} = Pleroma.Filter.create(query)
34 # Should start at 1
35 assert filter.filter_id == 1
36 end
37
38 test "creating additional filters uses previous highest filter_id + 1" do
39 user = insert(:user)
40
41 query_one = %Pleroma.Filter{
42 user_id: user.id,
43 filter_id: 42,
44 phrase: "knights",
45 context: ["home"]
46 }
47
48 {:ok, %Pleroma.Filter{} = filter_one} = Pleroma.Filter.create(query_one)
49
50 query_two = %Pleroma.Filter{
51 user_id: user.id,
52 # No filter_id
53 phrase: "who",
54 context: ["home"]
55 }
56
57 {:ok, %Pleroma.Filter{} = filter_two} = Pleroma.Filter.create(query_two)
58 assert filter_two.filter_id == filter_one.filter_id + 1
59 end
60
61 test "filter_id is unique per user" do
62 user_one = insert(:user)
63 user_two = insert(:user)
64
65 query_one = %Pleroma.Filter{
66 user_id: user_one.id,
67 phrase: "knights",
68 context: ["home"]
69 }
70
71 {:ok, %Pleroma.Filter{} = filter_one} = Pleroma.Filter.create(query_one)
72
73 query_two = %Pleroma.Filter{
74 user_id: user_two.id,
75 phrase: "who",
76 context: ["home"]
77 }
78
79 {:ok, %Pleroma.Filter{} = filter_two} = Pleroma.Filter.create(query_two)
80
81 assert filter_one.filter_id == 1
82 assert filter_two.filter_id == 1
83
84 result_one = Pleroma.Filter.get(filter_one.filter_id, user_one)
85 assert result_one.phrase == filter_one.phrase
86
87 result_two = Pleroma.Filter.get(filter_two.filter_id, user_two)
88 assert result_two.phrase == filter_two.phrase
89 end
90 end
91
92 test "deleting a filter" do
93 user = insert(:user)
94
95 query = %Pleroma.Filter{
96 user_id: user.id,
97 filter_id: 0,
98 phrase: "knights",
99 context: ["home"]
100 }
101
102 {:ok, filter} = Pleroma.Filter.create(query)
103 {:ok, filter} = Pleroma.Filter.delete(query)
104 assert is_nil(Repo.get(Pleroma.Filter, filter.filter_id))
105 end
106
107 test "getting all filters by an user" do
108 user = insert(:user)
109
110 query_one = %Pleroma.Filter{
111 user_id: user.id,
112 filter_id: 1,
113 phrase: "knights",
114 context: ["home"]
115 }
116
117 query_two = %Pleroma.Filter{
118 user_id: user.id,
119 filter_id: 2,
120 phrase: "who",
121 context: ["home"]
122 }
123
124 {:ok, filter_one} = Pleroma.Filter.create(query_one)
125 {:ok, filter_two} = Pleroma.Filter.create(query_two)
126 filters = Pleroma.Filter.get_filters(user)
127 assert filter_one in filters
128 assert filter_two in filters
129 end
130
131 test "updating a filter" do
132 user = insert(:user)
133
134 query_one = %Pleroma.Filter{
135 user_id: user.id,
136 filter_id: 1,
137 phrase: "knights",
138 context: ["home"]
139 }
140
141 query_two = %Pleroma.Filter{
142 user_id: user.id,
143 filter_id: 1,
144 phrase: "who",
145 context: ["home", "timeline"]
146 }
147
148 {:ok, filter_one} = Pleroma.Filter.create(query_one)
149 {:ok, filter_two} = Pleroma.Filter.update(query_two)
150 assert filter_one != filter_two
151 assert filter_two.phrase == query_two.phrase
152 assert filter_two.context == query_two.context
153 end
154 end