logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

notification_view_test.exs (3824B)


      1 # Pleroma: A lightweight social networking server
      2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
      3 # SPDX-License-Identifier: AGPL-3.0-only
      4 
      5 defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
      6   use Pleroma.DataCase
      7 
      8   alias Pleroma.Activity
      9   alias Pleroma.Notification
     10   alias Pleroma.Repo
     11   alias Pleroma.User
     12   alias Pleroma.Web.CommonAPI
     13   alias Pleroma.Web.CommonAPI.Utils
     14   alias Pleroma.Web.MastodonAPI.AccountView
     15   alias Pleroma.Web.MastodonAPI.NotificationView
     16   alias Pleroma.Web.MastodonAPI.StatusView
     17   import Pleroma.Factory
     18 
     19   test "Mention notification" do
     20     user = insert(:user)
     21     mentioned_user = insert(:user)
     22     {:ok, activity} = CommonAPI.post(user, %{"status" => "hey @#{mentioned_user.nickname}"})
     23     {:ok, [notification]} = Notification.create_notifications(activity)
     24     user = User.get_cached_by_id(user.id)
     25 
     26     expected = %{
     27       id: to_string(notification.id),
     28       pleroma: %{is_seen: false},
     29       type: "mention",
     30       account: AccountView.render("account.json", %{user: user, for: mentioned_user}),
     31       status: StatusView.render("status.json", %{activity: activity, for: mentioned_user}),
     32       created_at: Utils.to_masto_date(notification.inserted_at)
     33     }
     34 
     35     result =
     36       NotificationView.render("index.json", %{notifications: [notification], for: mentioned_user})
     37 
     38     assert [expected] == result
     39   end
     40 
     41   test "Favourite notification" do
     42     user = insert(:user)
     43     another_user = insert(:user)
     44     {:ok, create_activity} = CommonAPI.post(user, %{"status" => "hey"})
     45     {:ok, favorite_activity, _object} = CommonAPI.favorite(create_activity.id, another_user)
     46     {:ok, [notification]} = Notification.create_notifications(favorite_activity)
     47     create_activity = Activity.get_by_id(create_activity.id)
     48 
     49     expected = %{
     50       id: to_string(notification.id),
     51       pleroma: %{is_seen: false},
     52       type: "favourite",
     53       account: AccountView.render("account.json", %{user: another_user, for: user}),
     54       status: StatusView.render("status.json", %{activity: create_activity, for: user}),
     55       created_at: Utils.to_masto_date(notification.inserted_at)
     56     }
     57 
     58     result = NotificationView.render("index.json", %{notifications: [notification], for: user})
     59 
     60     assert [expected] == result
     61   end
     62 
     63   test "Reblog notification" do
     64     user = insert(:user)
     65     another_user = insert(:user)
     66     {:ok, create_activity} = CommonAPI.post(user, %{"status" => "hey"})
     67     {:ok, reblog_activity, _object} = CommonAPI.repeat(create_activity.id, another_user)
     68     {:ok, [notification]} = Notification.create_notifications(reblog_activity)
     69     reblog_activity = Activity.get_by_id(create_activity.id)
     70 
     71     expected = %{
     72       id: to_string(notification.id),
     73       pleroma: %{is_seen: false},
     74       type: "reblog",
     75       account: AccountView.render("account.json", %{user: another_user, for: user}),
     76       status: StatusView.render("status.json", %{activity: reblog_activity, for: user}),
     77       created_at: Utils.to_masto_date(notification.inserted_at)
     78     }
     79 
     80     result = NotificationView.render("index.json", %{notifications: [notification], for: user})
     81 
     82     assert [expected] == result
     83   end
     84 
     85   test "Follow notification" do
     86     follower = insert(:user)
     87     followed = insert(:user)
     88     {:ok, follower, followed, _activity} = CommonAPI.follow(follower, followed)
     89     notification = Notification |> Repo.one() |> Repo.preload(:activity)
     90 
     91     expected = %{
     92       id: to_string(notification.id),
     93       pleroma: %{is_seen: false},
     94       type: "follow",
     95       account: AccountView.render("account.json", %{user: follower, for: followed}),
     96       created_at: Utils.to_masto_date(notification.inserted_at)
     97     }
     98 
     99     result =
    100       NotificationView.render("index.json", %{notifications: [notification], for: followed})
    101 
    102     assert [expected] == result
    103   end
    104 end