diff options
| author | Roman Chvanikov <chvanikoff@gmail.com> | 2019-05-08 17:08:06 +0700 | 
|---|---|---|
| committer | Roman Chvanikov <chvanikoff@gmail.com> | 2019-05-08 17:08:06 +0700 | 
| commit | b6b5b16ba4d65ecd9812b02d79f844548266eb8b (patch) | |
| tree | 790623e31fed199f04168bcbddb4222a4bfb0a3a /test/conversation | |
| parent | 0f0cc2703b7ffb99c58e72782925ea4dd61db41d (diff) | |
| parent | 14deed7f7d0b88d5c8ac19bb3de467429c289746 (diff) | |
| download | pleroma-b6b5b16ba4d65ecd9812b02d79f844548266eb8b.tar.gz pleroma-b6b5b16ba4d65ecd9812b02d79f844548266eb8b.zip  | |
Merge develop
Diffstat (limited to 'test/conversation')
| -rw-r--r-- | test/conversation/participation_test.exs | 89 | 
1 files changed, 89 insertions, 0 deletions
diff --git a/test/conversation/participation_test.exs b/test/conversation/participation_test.exs new file mode 100644 index 000000000..568953b07 --- /dev/null +++ b/test/conversation/participation_test.exs @@ -0,0 +1,89 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Conversation.ParticipationTest do +  use Pleroma.DataCase +  import Pleroma.Factory +  alias Pleroma.Conversation.Participation +  alias Pleroma.Web.CommonAPI + +  test "it creates a participation for a conversation and a user" do +    user = insert(:user) +    conversation = insert(:conversation) + +    {:ok, %Participation{} = participation} = +      Participation.create_for_user_and_conversation(user, conversation) + +    assert participation.user_id == user.id +    assert participation.conversation_id == conversation.id + +    :timer.sleep(1000) +    # Creating again returns the same participation +    {:ok, %Participation{} = participation_two} = +      Participation.create_for_user_and_conversation(user, conversation) + +    assert participation.id == participation_two.id +    refute participation.updated_at == participation_two.updated_at +  end + +  test "recreating an existing participations sets it to unread" do +    participation = insert(:participation, %{read: true}) + +    {:ok, participation} = +      Participation.create_for_user_and_conversation( +        participation.user, +        participation.conversation +      ) + +    refute participation.read +  end + +  test "it marks a participation as read" do +    participation = insert(:participation, %{read: false}) +    {:ok, participation} = Participation.mark_as_read(participation) + +    assert participation.read +  end + +  test "it marks a participation as unread" do +    participation = insert(:participation, %{read: true}) +    {:ok, participation} = Participation.mark_as_unread(participation) + +    refute participation.read +  end + +  test "gets all the participations for a user, ordered by updated at descending" do +    user = insert(:user) +    {:ok, activity_one} = CommonAPI.post(user, %{"status" => "x", "visibility" => "direct"}) +    :timer.sleep(1000) +    {:ok, activity_two} = CommonAPI.post(user, %{"status" => "x", "visibility" => "direct"}) +    :timer.sleep(1000) + +    {:ok, activity_three} = +      CommonAPI.post(user, %{ +        "status" => "x", +        "visibility" => "direct", +        "in_reply_to_status_id" => activity_one.id +      }) + +    assert [participation_one, participation_two] = Participation.for_user(user) + +    object2 = Pleroma.Object.normalize(activity_two) +    object3 = Pleroma.Object.normalize(activity_three) + +    assert participation_one.conversation.ap_id == object3.data["context"] +    assert participation_two.conversation.ap_id == object2.data["context"] + +    # Pagination +    assert [participation_one] = Participation.for_user(user, %{"limit" => 1}) + +    assert participation_one.conversation.ap_id == object3.data["context"] + +    # With last_activity_id +    assert [participation_one] = +             Participation.for_user_with_last_activity_id(user, %{"limit" => 1}) + +    assert participation_one.last_activity_id == activity_three.id +  end +end  | 
