aboutsummaryrefslogtreecommitdiff
path: root/test/list_test.exs
blob: 1909c0cd9e664771e7e425eab8542c5e7d8e8a2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.ListTest do
  alias Pleroma.Repo
  use Pleroma.DataCase

  import Pleroma.Factory

  test "creating a list" do
    user = insert(:user)
    {:ok, %Pleroma.List{} = list} = Pleroma.List.create("title", user)
    %Pleroma.List{title: title} = Pleroma.List.get(list.id, user)
    assert title == "title"
  end

  test "getting a list not belonging to the user" do
    user = insert(:user)
    other_user = insert(:user)
    {:ok, %Pleroma.List{} = list} = Pleroma.List.create("title", user)
    ret = Pleroma.List.get(list.id, other_user)
    assert is_nil(ret)
  end

  test "adding an user to a list" do
    user = insert(:user)
    other_user = insert(:user)
    {:ok, list} = Pleroma.List.create("title", user)
    {:ok, %{following: following}} = Pleroma.List.follow(list, other_user)
    assert [other_user.follower_address] == following
  end

  test "removing an user from a list" do
    user = insert(:user)
    other_user = insert(:user)
    {:ok, list} = Pleroma.List.create("title", user)
    {:ok, %{following: _following}} = Pleroma.List.follow(list, other_user)
    {:ok, %{following: following}} = Pleroma.List.unfollow(list, other_user)
    assert [] == following
  end

  test "renaming a list" do
    user = insert(:user)
    {:ok, list} = Pleroma.List.create("title", user)
    {:ok, %{title: title}} = Pleroma.List.rename(list, "new")
    assert "new" == title
  end

  test "deleting a list" do
    user = insert(:user)
    {:ok, list} = Pleroma.List.create("title", user)
    {:ok, list} = Pleroma.List.delete(list)
    assert is_nil(Repo.get(Pleroma.List, list.id))
  end

  test "getting users in a list" do
    user = insert(:user)
    other_user = insert(:user)
    third_user = insert(:user)
    {:ok, list} = Pleroma.List.create("title", user)
    {:ok, list} = Pleroma.List.follow(list, other_user)
    {:ok, list} = Pleroma.List.follow(list, third_user)
    {:ok, following} = Pleroma.List.get_following(list)
    assert other_user in following
    assert third_user in following
  end

  test "getting all lists by an user" do
    user = insert(:user)
    other_user = insert(:user)
    {:ok, list_one} = Pleroma.List.create("title", user)
    {:ok, list_two} = Pleroma.List.create("other title", user)
    {:ok, list_three} = Pleroma.List.create("third title", other_user)
    lists = Pleroma.List.for_user(user, %{})
    assert list_one in lists
    assert list_two in lists
    refute list_three in lists
  end

  test "getting all lists the user is a member of" do
    user = insert(:user)
    other_user = insert(:user)
    {:ok, list_one} = Pleroma.List.create("title", user)
    {:ok, list_two} = Pleroma.List.create("other title", user)
    {:ok, list_three} = Pleroma.List.create("third title", other_user)
    {:ok, list_one} = Pleroma.List.follow(list_one, other_user)
    {:ok, list_two} = Pleroma.List.follow(list_two, other_user)
    {:ok, list_three} = Pleroma.List.follow(list_three, user)

    lists = Pleroma.List.get_lists_from_activity(%Pleroma.Activity{actor: other_user.ap_id})
    assert list_one in lists
    assert list_two in lists
    refute list_three in lists
  end

  test "getting own lists a given user belongs to" do
    owner = insert(:user)
    not_owner = insert(:user)
    member_1 = insert(:user)
    member_2 = insert(:user)
    {:ok, owned_list} = Pleroma.List.create("owned", owner)
    {:ok, not_owned_list} = Pleroma.List.create("not owned", not_owner)
    {:ok, owned_list} = Pleroma.List.follow(owned_list, member_1)
    {:ok, owned_list} = Pleroma.List.follow(owned_list, member_2)
    {:ok, not_owned_list} = Pleroma.List.follow(not_owned_list, member_1)
    {:ok, not_owned_list} = Pleroma.List.follow(not_owned_list, member_2)

    lists_1 = Pleroma.List.get_lists_account_belongs(owner, member_1.id)
    assert owned_list in lists_1
    refute not_owned_list in lists_1
    lists_2 = Pleroma.List.get_lists_account_belongs(owner, member_2.id)
    assert owned_list in lists_2
    refute not_owned_list in lists_2
  end
end