total rebase
[anni] / test / pleroma / bookmark_folder_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.BookmarkFolderTest do
6   use Pleroma.DataCase, async: true
7   import Pleroma.Factory
8   alias Pleroma.BookmarkFolder
9
10   describe "create/3" do
11     test "with valid params" do
12       user = insert(:user)
13       {:ok, folder} = BookmarkFolder.create(user.id, "Read later", "🕓")
14       assert folder.user_id == user.id
15       assert folder.name == "Read later"
16       assert folder.emoji == "🕓"
17     end
18
19     test "with invalid params" do
20       {:error, changeset} = BookmarkFolder.create(nil, "", "not an emoji")
21       refute changeset.valid?
22
23       assert changeset.errors == [
24                emoji: {"Invalid emoji", []},
25                user_id: {"can't be blank", [validation: :required]},
26                name: {"can't be blank", [validation: :required]}
27              ]
28     end
29   end
30
31   test "update/3" do
32     user = insert(:user)
33     {:ok, folder} = BookmarkFolder.create(user.id, "Read ltaer")
34     {:ok, folder} = BookmarkFolder.update(folder.id, "Read later")
35     assert folder.name == "Read later"
36   end
37
38   test "for_user/1" do
39     user = insert(:user)
40     other_user = insert(:user)
41
42     {:ok, _} = BookmarkFolder.create(user.id, "Folder 1")
43     {:ok, _} = BookmarkFolder.create(user.id, "Folder 2")
44     {:ok, _} = BookmarkFolder.create(other_user.id, "Folder 3")
45
46     folders = BookmarkFolder.for_user(user.id)
47
48     assert length(folders) == 2
49   end
50
51   test "belongs_to_user?/2" do
52     user = insert(:user)
53     other_user = insert(:user)
54
55     {:ok, folder} = BookmarkFolder.create(user.id, "Folder")
56
57     assert true == BookmarkFolder.belongs_to_user?(folder.id, user.id)
58     assert false == BookmarkFolder.belongs_to_user?(folder.id, other_user.id)
59   end
60 end