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