1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.FilterTest do
11 describe "creating filters" do
12 test "creating one filter" do
15 query = %Pleroma.Filter{
22 {:ok, %Pleroma.Filter{} = filter} = Pleroma.Filter.create(query)
23 result = Pleroma.Filter.get(filter.filter_id, user)
24 assert query.phrase == result.phrase
27 test "creating one filter without a pre-defined filter_id" do
30 query = %Pleroma.Filter{
36 {:ok, %Pleroma.Filter{} = filter} = Pleroma.Filter.create(query)
38 assert filter.filter_id == 1
41 test "creating additional filters uses previous highest filter_id + 1" do
44 query_one = %Pleroma.Filter{
51 {:ok, %Pleroma.Filter{} = filter_one} = Pleroma.Filter.create(query_one)
53 query_two = %Pleroma.Filter{
60 {:ok, %Pleroma.Filter{} = filter_two} = Pleroma.Filter.create(query_two)
61 assert filter_two.filter_id == filter_one.filter_id + 1
64 test "filter_id is unique per user" do
65 user_one = insert(:user)
66 user_two = insert(:user)
68 query_one = %Pleroma.Filter{
74 {:ok, %Pleroma.Filter{} = filter_one} = Pleroma.Filter.create(query_one)
76 query_two = %Pleroma.Filter{
82 {:ok, %Pleroma.Filter{} = filter_two} = Pleroma.Filter.create(query_two)
84 assert filter_one.filter_id == 1
85 assert filter_two.filter_id == 1
87 result_one = Pleroma.Filter.get(filter_one.filter_id, user_one)
88 assert result_one.phrase == filter_one.phrase
90 result_two = Pleroma.Filter.get(filter_two.filter_id, user_two)
91 assert result_two.phrase == filter_two.phrase
95 test "deleting a filter" do
98 query = %Pleroma.Filter{
105 {:ok, _filter} = Pleroma.Filter.create(query)
106 {:ok, filter} = Pleroma.Filter.delete(query)
107 assert is_nil(Repo.get(Pleroma.Filter, filter.filter_id))
110 test "getting all filters by an user" do
113 query_one = %Pleroma.Filter{
120 query_two = %Pleroma.Filter{
127 {:ok, filter_one} = Pleroma.Filter.create(query_one)
128 {:ok, filter_two} = Pleroma.Filter.create(query_two)
129 filters = Pleroma.Filter.get_filters(user)
130 assert filter_one in filters
131 assert filter_two in filters
134 test "updating a filter" do
137 query_one = %Pleroma.Filter{
146 context: ["home", "timeline"]
149 {:ok, filter_one} = Pleroma.Filter.create(query_one)
150 {:ok, filter_two} = Pleroma.Filter.update(filter_one, changes)
151 assert filter_one != filter_two
152 assert filter_two.phrase == changes.phrase
153 assert filter_two.context == changes.context