Added Hashtag entity and objects-hashtags association with auto-sync with data.tag on Object update.
This commit is contained in:
parent
ee221277b0
commit
e369b1306b
6 changed files with 143 additions and 9 deletions
|
|
@ -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
|
||||
|
|
@ -406,4 +409,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
|
||||
|
|
|
|||
|
|
@ -217,6 +217,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
|
|||
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]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue