X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fweb%2Ftwitter_api%2Fviews%2Factivity_view_test.exs;h=5cef06f882e7017c3c473685a978d92fa96bcacd;hb=6cfba7db8de1cdb409243885724101500fa21e6d;hp=244ffd5c4b2c9db1f5d23266c09d9685eea43140;hpb=1f1caab138120cf3e08e9d9311570f2c646003d0;p=akkoma diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index 244ffd5c4..5cef06f88 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -6,13 +6,19 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do alias Pleroma.Web.TwitterAPI.ActivityView alias Pleroma.Web.TwitterAPI.UserView alias Pleroma.Web.TwitterAPI.TwitterAPI + alias Pleroma.Repo + alias Pleroma.Activity + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + import Pleroma.Factory + import Mock test "a create activity with a note" do user = insert(:user) other_user = insert(:user, %{nickname: "shp"}) - {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) + {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!", "visibility" => "direct"}) result = ActivityView.render("activity.json", activity: activity) @@ -30,6 +36,10 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do "favorited" => false, "id" => activity.id, "in_reply_to_status_id" => nil, + "in_reply_to_screen_name" => nil, + "in_reply_to_user_id" => nil, + "in_reply_to_profileurl" => nil, + "in_reply_to_ostatus_uri" => nil, "is_local" => true, "is_post_verb" => true, "possibly_sensitive" => false, @@ -41,12 +51,45 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do "tags" => [], "text" => "Hey @shp!", "uri" => activity.data["object"]["id"], - "user" => UserView.render("show.json", %{user: user}) + "user" => UserView.render("show.json", %{user: user}), + "visibility" => "direct", + "summary" => nil } assert result == expected end + test "a list of activities" do + user = insert(:user) + other_user = insert(:user, %{nickname: "shp"}) + {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) + + convo_id = TwitterAPI.context_to_conversation_id(activity.data["object"]["context"]) + + mocks = [ + { + TwitterAPI, + [], + [context_to_conversation_id: fn _ -> false end] + }, + { + User, + [:passthrough], + [get_cached_by_ap_id: fn _ -> nil end] + } + ] + + with_mocks mocks do + [result] = ActivityView.render("index.json", activities: [activity]) + + assert result["statusnet_conversation_id"] == convo_id + assert result["user"] + refute called(TwitterAPI.context_to_conversation_id(:_)) + refute called(User.get_cached_by_ap_id(user.ap_id)) + refute called(User.get_cached_by_ap_id(other_user.ap_id)) + end + end + test "an activity that is a reply" do user = insert(:user) other_user = insert(:user, %{nickname: "shp"}) @@ -86,4 +129,114 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do assert result == expected end + + test "a like activity for deleted post" do + user = insert(:user) + other_user = insert(:user, %{nickname: "shp"}) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) + {:ok, like, _object} = CommonAPI.favorite(activity.id, other_user) + CommonAPI.delete(activity.id, user) + + result = ActivityView.render("activity.json", activity: like) + + expected = %{ + "activity_type" => "like", + "created_at" => like.data["published"] |> Utils.date_to_asctime(), + "external_url" => like.data["id"], + "id" => like.id, + "in_reply_to_status_id" => nil, + "is_local" => true, + "is_post_verb" => false, + "statusnet_html" => "shp favorited a status.", + "text" => "shp favorited a status.", + "uri" => "tag:#{like.data["id"]}:objectType=Favourite", + "user" => UserView.render("show.json", user: other_user) + } + + assert result == expected + end + + test "an announce activity" do + user = insert(:user) + other_user = insert(:user, %{nickname: "shp"}) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) + {:ok, announce, _object} = CommonAPI.repeat(activity.id, other_user) + + convo_id = TwitterAPI.context_to_conversation_id(activity.data["object"]["context"]) + + activity = Repo.get(Activity, activity.id) + + result = ActivityView.render("activity.json", activity: announce) + + expected = %{ + "activity_type" => "repeat", + "created_at" => announce.data["published"] |> Utils.date_to_asctime(), + "external_url" => announce.data["id"], + "id" => announce.id, + "is_local" => true, + "is_post_verb" => false, + "statusnet_html" => "shp retweeted a status.", + "text" => "shp retweeted a status.", + "uri" => "tag:#{announce.data["id"]}:objectType=note", + "user" => UserView.render("show.json", user: other_user), + "retweeted_status" => ActivityView.render("activity.json", activity: activity), + "statusnet_conversation_id" => convo_id + } + + assert result == expected + end + + test "A follow activity" do + user = insert(:user) + other_user = insert(:user, %{nickname: "shp"}) + + {:ok, follower} = User.follow(user, other_user) + {:ok, follow} = ActivityPub.follow(follower, other_user) + + result = ActivityView.render("activity.json", activity: follow) + + expected = %{ + "activity_type" => "follow", + "attentions" => [], + "created_at" => follow.data["published"] |> Utils.date_to_asctime(), + "external_url" => follow.data["id"], + "id" => follow.id, + "in_reply_to_status_id" => nil, + "is_local" => true, + "is_post_verb" => false, + "statusnet_html" => "#{user.nickname} started following shp", + "text" => "#{user.nickname} started following shp", + "user" => UserView.render("show.json", user: user) + } + + assert result == expected + end + + test "a delete activity" do + user = insert(:user) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) + {:ok, delete} = CommonAPI.delete(activity.id, user) + + result = ActivityView.render("activity.json", activity: delete) + + expected = %{ + "activity_type" => "delete", + "attentions" => [], + "created_at" => delete.data["published"] |> Utils.date_to_asctime(), + "external_url" => delete.data["id"], + "id" => delete.id, + "in_reply_to_status_id" => nil, + "is_local" => true, + "is_post_verb" => false, + "statusnet_html" => "deleted notice {{tag", + "text" => "deleted notice {{tag", + "uri" => delete.data["object"], + "user" => UserView.render("show.json", user: user) + } + + assert result == expected + end end