user = insert(:user)
{:ok, activity} = CommonAPI.post(user, %{"status" => "Hey"})
- context = activity.data["object"]["context"]
+ object = Pleroma.Object.normalize(activity)
+ context = object.data["context"]
conversation = Conversation.get_for_ap_id(context)
test "it creates or updates a conversation and participations for a given DM" do
har = insert(:user)
- jafnhar = insert(:user)
+ jafnhar = insert(:user, local: false)
tridi = insert(:user)
{:ok, activity} =
CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "direct"})
- context = activity.data["object"]["context"]
+ object = Pleroma.Object.normalize(activity)
+ context = object.data["context"]
conversation =
Conversation.get_for_ap_id(context)
"in_reply_to_status_id" => activity.id
})
- context = activity.data["object"]["context"]
+ object = Pleroma.Object.normalize(activity)
+ context = object.data["context"]
conversation_two =
Conversation.get_for_ap_id(context)
"in_reply_to_status_id" => activity.id
})
- context = activity.data["object"]["context"]
+ object = Pleroma.Object.normalize(activity)
+ context = object.data["context"]
conversation_three =
Conversation.get_for_ap_id(context)
- |> Repo.preload(:participations)
+ |> Repo.preload([:participations, :users])
assert conversation_three.id == conversation.id
assert Enum.find(conversation_three.participations, fn %{user_id: user_id} ->
tridi.id == user_id
end)
+
+ assert Enum.find(conversation_three.users, fn %{id: user_id} ->
+ har.id == user_id
+ end)
+
+ assert Enum.find(conversation_three.users, fn %{id: user_id} ->
+ jafnhar.id == user_id
+ end)
+
+ assert Enum.find(conversation_three.users, fn %{id: user_id} ->
+ tridi.id == user_id
+ end)
+ end
+
+ test "create_or_bump_for returns the conversation with participations" do
+ har = insert(:user)
+ jafnhar = insert(:user, local: false)
+
+ {:ok, activity} =
+ CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "direct"})
+
+ {:ok, conversation} = Conversation.create_or_bump_for(activity)
+
+ assert length(conversation.participations) == 2
+
+ {:ok, activity} =
+ CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "public"})
+
+ assert {:error, _} = Conversation.create_or_bump_for(activity)
end
end