X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fnotification_test.exs;h=94fb0ab154ae81a10583041a549f247091632cc7;hb=6db792124ba5269a6d134e2778779261f44bd635;hp=a36ed5bb8471815a3c5a2ca639b2a38eaaacf79e;hpb=7daa102fa4248dd518deb85b6f74dffd59444724;p=akkoma diff --git a/test/notification_test.exs b/test/notification_test.exs index a36ed5bb8..94fb0ab15 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.NotificationTest do use Pleroma.DataCase alias Pleroma.Web.TwitterAPI.TwitterAPI @@ -42,6 +46,43 @@ defmodule Pleroma.NotificationTest do assert nil == Notification.create_notification(activity, author) end + + test "it doesn't create a notification for follow-unfollow-follow chains" do + user = insert(:user) + followed_user = insert(:user) + {:ok, _, _, activity} = TwitterAPI.follow(user, %{"user_id" => followed_user.id}) + Notification.create_notification(activity, followed_user) + TwitterAPI.unfollow(user, %{"user_id" => followed_user.id}) + {:ok, _, _, activity_dupe} = TwitterAPI.follow(user, %{"user_id" => followed_user.id}) + assert nil == Notification.create_notification(activity_dupe, followed_user) + end + + test "it doesn't create a notification for like-unlike-like chains" do + user = insert(:user) + liked_user = insert(:user) + {:ok, status} = TwitterAPI.create_status(liked_user, %{"status" => "Yui is best yuru"}) + {:ok, fav_status} = TwitterAPI.fav(user, status.id) + Notification.create_notification(fav_status, liked_user) + TwitterAPI.unfav(user, status.id) + {:ok, dupe} = TwitterAPI.fav(user, status.id) + assert nil == Notification.create_notification(dupe, liked_user) + end + + test "it doesn't create a notification for repeat-unrepeat-repeat chains" do + user = insert(:user) + retweeted_user = insert(:user) + + {:ok, status} = + TwitterAPI.create_status(retweeted_user, %{ + "status" => "Send dupe notifications to the shadow realm" + }) + + {:ok, retweeted_activity} = TwitterAPI.repeat(user, status.id) + Notification.create_notification(retweeted_activity, retweeted_user) + TwitterAPI.unrepeat(user, status.id) + {:ok, dupe} = TwitterAPI.repeat(user, status.id) + assert nil == Notification.create_notification(dupe, retweeted_user) + end end describe "get notification" do @@ -127,12 +168,12 @@ defmodule Pleroma.NotificationTest do user = insert(:user) other_user = insert(:user) - {:ok, activity} = + {:ok, _activity} = TwitterAPI.create_status(user, %{ "status" => "hey @#{other_user.nickname}!" }) - {:ok, activity} = + {:ok, _activity} = TwitterAPI.create_status(user, %{ "status" => "hey again @#{other_user.nickname}!" }) @@ -142,14 +183,14 @@ defmodule Pleroma.NotificationTest do assert n2.id > n1.id - {:ok, activity} = + {:ok, _activity} = TwitterAPI.create_status(user, %{ "status" => "hey yet again @#{other_user.nickname}!" }) Notification.set_read_up_to(other_user, n2.id) - [n3, n2, n1] = notifs = Notification.for_user(other_user) + [n3, n2, n1] = Notification.for_user(other_user) assert n1.seen == true assert n2.seen == true