total rebase
[anni] / test / pleroma / bookmark_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.BookmarkTest do
6   use Pleroma.DataCase, async: true
7   import Pleroma.Factory
8   alias Pleroma.Bookmark
9   alias Pleroma.BookmarkFolder
10   alias Pleroma.Web.CommonAPI
11
12   describe "create/3" do
13     test "with valid params" do
14       user = insert(:user)
15       {:ok, activity} = CommonAPI.post(user, %{status: "Some cool information"})
16       {:ok, bookmark} = Bookmark.create(user.id, activity.id)
17       assert bookmark.user_id == user.id
18       assert bookmark.activity_id == activity.id
19       assert bookmark.folder_id == nil
20     end
21
22     test "with invalid params" do
23       {:error, changeset} = Bookmark.create(nil, "")
24       refute changeset.valid?
25
26       assert changeset.errors == [
27                user_id: {"can't be blank", [validation: :required]},
28                activity_id: {"can't be blank", [validation: :required]}
29              ]
30     end
31
32     test "update existing bookmark folder" do
33       user = insert(:user)
34       {:ok, activity} = CommonAPI.post(user, %{status: "Some cool information"})
35
36       {:ok, bookmark} = Bookmark.create(user.id, activity.id)
37       assert bookmark.folder_id == nil
38
39       {:ok, bookmark_folder} = BookmarkFolder.create(user.id, "Read later")
40
41       {:ok, bookmark} = Bookmark.create(user.id, activity.id, bookmark_folder.id)
42       assert bookmark.folder_id == bookmark_folder.id
43     end
44   end
45
46   describe "destroy/2" do
47     test "with valid params" do
48       user = insert(:user)
49
50       {:ok, activity} = CommonAPI.post(user, %{status: "Some cool information"})
51       {:ok, _bookmark} = Bookmark.create(user.id, activity.id)
52
53       {:ok, _deleted_bookmark} = Bookmark.destroy(user.id, activity.id)
54     end
55   end
56
57   describe "get/2" do
58     test "gets a bookmark" do
59       user = insert(:user)
60
61       {:ok, activity} =
62         CommonAPI.post(user, %{
63           status:
64             "Scientists Discover The Secret Behind Tenshi Eating A Corndog Being So Cute – Science Daily"
65         })
66
67       {:ok, bookmark} = Bookmark.create(user.id, activity.id)
68       assert bookmark == Bookmark.get(user.id, activity.id)
69     end
70   end
71 end