diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/activity/ir/topics_test.exs | 15 | ||||
| -rw-r--r-- | test/pleroma/object_test.exs | 27 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/activity_pub_test.exs | 45 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs | 6 | ||||
| -rw-r--r-- | test/pleroma/web/common_api_test.exs | 2 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/views/status_view_test.exs | 4 | 
6 files changed, 69 insertions, 30 deletions
| diff --git a/test/pleroma/activity/ir/topics_test.exs b/test/pleroma/activity/ir/topics_test.exs index 6b848e04d..9c8e5d932 100644 --- a/test/pleroma/activity/ir/topics_test.exs +++ b/test/pleroma/activity/ir/topics_test.exs @@ -11,6 +11,8 @@ defmodule Pleroma.Activity.Ir.TopicsTest do    require Pleroma.Constants +  import Mock +    describe "poll answer" do      test "produce no topics" do        activity = %Activity{object: %Object{data: %{"type" => "Answer"}}} @@ -77,14 +79,13 @@ defmodule Pleroma.Activity.Ir.TopicsTest do        refute Enum.member?(topics, "public:local:media")      end -    test "converts tags to hash tags", %{activity: %{object: %{data: data} = object} = activity} do -      tagged_data = Map.put(data, "tag", ["foo", "bar"]) -      activity = %{activity | object: %{object | data: tagged_data}} - -      topics = Topics.get_activity_topics(activity) +    test "converts tags to hash tags", %{activity: activity} do +      with_mock(Object, [:passthrough], hashtags: fn _ -> ["foo", "bar"] end) do +        topics = Topics.get_activity_topics(activity) -      assert Enum.member?(topics, "hashtag:foo") -      assert Enum.member?(topics, "hashtag:bar") +        assert Enum.member?(topics, "hashtag:foo") +        assert Enum.member?(topics, "hashtag:bar") +      end      end      test "only converts strings to hash tags", %{ diff --git a/test/pleroma/object_test.exs b/test/pleroma/object_test.exs index 4a8d80fcc..ee0d00f2b 100644 --- a/test/pleroma/object_test.exs +++ b/test/pleroma/object_test.exs @@ -5,10 +5,13 @@  defmodule Pleroma.ObjectTest do    use Pleroma.DataCase    use Oban.Testing, repo: Pleroma.Repo +    import ExUnit.CaptureLog    import Pleroma.Factory    import Tesla.Mock +    alias Pleroma.Activity +  alias Pleroma.Hashtag    alias Pleroma.Object    alias Pleroma.Repo    alias Pleroma.Tests.ObanHelpers @@ -417,4 +420,28 @@ defmodule Pleroma.ObjectTest do        assert updated_object.data["like_count"] == 1      end    end + +  describe ":hashtags association" do +    test "Hashtag records are created with Object record and updated on its change" do +      user = insert(:user) + +      {:ok, %{object: object}} = +        CommonAPI.post(user, %{status: "some text #hashtag1 #hashtag2 ..."}) + +      assert [%Hashtag{name: "hashtag1"}, %Hashtag{name: "hashtag2"}] = +               Enum.sort_by(object.hashtags, & &1.name) + +      {:ok, object} = Object.update_data(object, %{"tag" => []}) + +      assert [] = object.hashtags + +      object = Object.get_by_id(object.id) |> Repo.preload(:hashtags) +      assert [] = object.hashtags + +      {:ok, object} = Object.update_data(object, %{"tag" => ["abc", "def"]}) + +      assert [%Hashtag{name: "abc"}, %Hashtag{name: "def"}] = +               Enum.sort_by(object.hashtags, & &1.name) +    end +  end  end diff --git a/test/pleroma/web/activity_pub/activity_pub_test.exs b/test/pleroma/web/activity_pub/activity_pub_test.exs index 24576b31a..f86d0a265 100644 --- a/test/pleroma/web/activity_pub/activity_pub_test.exs +++ b/test/pleroma/web/activity_pub/activity_pub_test.exs @@ -217,28 +217,37 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      {:ok, status_two} = CommonAPI.post(user, %{status: ". #essais"})      {:ok, status_three} = CommonAPI.post(user, %{status: ". #test #reject"}) -    fetch_one = ActivityPub.fetch_activities([], %{type: "Create", tag: "test"}) +    for new_timeline_enabled <- [true, false] do +      clear_config([:instance, :improved_hashtag_timeline], new_timeline_enabled) -    fetch_two = ActivityPub.fetch_activities([], %{type: "Create", tag: ["test", "essais"]}) +      fetch_one = ActivityPub.fetch_activities([], %{type: "Create", tag: "test"}) -    fetch_three = -      ActivityPub.fetch_activities([], %{ -        type: "Create", -        tag: ["test", "essais"], -        tag_reject: ["reject"] -      }) +      fetch_two = ActivityPub.fetch_activities([], %{type: "Create", tag: ["test", "essais"]}) -    fetch_four = -      ActivityPub.fetch_activities([], %{ -        type: "Create", -        tag: ["test"], -        tag_all: ["test", "reject"] -      }) +      fetch_three = +        ActivityPub.fetch_activities([], %{ +          type: "Create", +          tag: ["test", "essais"], +          tag_reject: ["reject"] +        }) -    assert fetch_one == [status_one, status_three] -    assert fetch_two == [status_one, status_two, status_three] -    assert fetch_three == [status_one, status_two] -    assert fetch_four == [status_three] +      fetch_four = +        ActivityPub.fetch_activities([], %{ +          type: "Create", +          tag: ["test"], +          tag_all: ["test", "reject"] +        }) + +      [fetch_one, fetch_two, fetch_three, fetch_four] = +        Enum.map([fetch_one, fetch_two, fetch_three, fetch_four], fn statuses -> +          Enum.map(statuses, fn s -> Repo.preload(s, object: :hashtags) end) +        end) + +      assert fetch_one == [status_one, status_three] +      assert fetch_two == [status_one, status_two, status_three] +      assert fetch_three == [status_one, status_two] +      assert fetch_four == [status_three] +    end    end    describe "insertion" do diff --git a/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs index 108f27ef7..50bf619a7 100644 --- a/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs +++ b/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs @@ -39,7 +39,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.NoteHandlingTest do        {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)        object = Object.normalize(data["object"], fetch: false) -      assert "test" in object.data["tag"] +      assert "test" in Object.tags(object) +      assert Object.hashtags(object) == ["test"]      end      test "it cleans up incoming notices which are not really DMs" do @@ -220,7 +221,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.NoteHandlingTest do        {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)        object = Object.normalize(data["object"], fetch: false) -      assert Enum.at(object.data["tag"], 2) == "moo" +      assert Enum.at(Object.tags(object), 2) == "moo" +      assert Object.hashtags(object) == ["moo"]      end      test "it works for incoming notices with contentMap" do diff --git a/test/pleroma/web/common_api_test.exs b/test/pleroma/web/common_api_test.exs index 2ece92806..209fa86f6 100644 --- a/test/pleroma/web/common_api_test.exs +++ b/test/pleroma/web/common_api_test.exs @@ -493,7 +493,7 @@ defmodule Pleroma.Web.CommonAPITest do      object = Object.normalize(activity, fetch: false) -    assert object.data["tag"] == ["2hu"] +    assert Object.tags(object) == ["2hu"]    end    test "it adds emoji in the object" do diff --git a/test/pleroma/web/mastodon_api/views/status_view_test.exs b/test/pleroma/web/mastodon_api/views/status_view_test.exs index 21a01658e..eb84cc173 100644 --- a/test/pleroma/web/mastodon_api/views/status_view_test.exs +++ b/test/pleroma/web/mastodon_api/views/status_view_test.exs @@ -262,8 +262,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do        mentions: [],        tags: [          %{ -          name: "#{object_data["tag"]}", -          url: "/tag/#{object_data["tag"]}" +          name: "#{hd(object_data["tag"])}", +          url: "/tag/#{hd(object_data["tag"])}"          }        ],        application: %{ | 
