summaryrefslogtreecommitdiff
path: root/test/tasks/database_test.exs
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2019-08-14 21:44:50 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2019-08-14 21:44:50 +0300
commit8778c16dac1789eeb6dd51524573163216200b5d (patch)
tree1f375b267c5c79b97eb2e12c2c343709705815ba /test/tasks/database_test.exs
parenta180c1360ecdbed76eccf3435bb2c831356746bc (diff)
parent4a5b0965a0d07d45bfc4687c80c752ec824457cc (diff)
downloadpleroma-8778c16dac1789eeb6dd51524573163216200b5d.tar.gz
pleroma-8778c16dac1789eeb6dd51524573163216200b5d.zip
Merge remote-tracking branch 'remotes/upstream/develop' into 1149-oban-job-queue
Diffstat (limited to 'test/tasks/database_test.exs')
-rw-r--r--test/tasks/database_test.exs36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/tasks/database_test.exs b/test/tasks/database_test.exs
index 579130b05..a8f25f500 100644
--- a/test/tasks/database_test.exs
+++ b/test/tasks/database_test.exs
@@ -3,8 +3,11 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Mix.Tasks.Pleroma.DatabaseTest do
+ alias Pleroma.Object
alias Pleroma.Repo
alias Pleroma.User
+ alias Pleroma.Web.CommonAPI
+
use Pleroma.DataCase
import Pleroma.Factory
@@ -46,4 +49,37 @@ defmodule Mix.Tasks.Pleroma.DatabaseTest do
assert user.info.follower_count == 0
end
end
+
+ describe "running fix_likes_collections" do
+ test "it turns OrderedCollection likes into empty arrays" do
+ [user, user2] = insert_pair(:user)
+
+ {:ok, %{id: id, object: object}} = CommonAPI.post(user, %{"status" => "test"})
+ {:ok, %{object: object2}} = CommonAPI.post(user, %{"status" => "test test"})
+
+ CommonAPI.favorite(id, user2)
+
+ likes = %{
+ "first" =>
+ "http://mastodon.example.org/objects/dbdbc507-52c8-490d-9b7c-1e1d52e5c132/likes?page=1",
+ "id" => "http://mastodon.example.org/objects/dbdbc507-52c8-490d-9b7c-1e1d52e5c132/likes",
+ "totalItems" => 3,
+ "type" => "OrderedCollection"
+ }
+
+ new_data = Map.put(object2.data, "likes", likes)
+
+ object2
+ |> Ecto.Changeset.change(%{data: new_data})
+ |> Repo.update()
+
+ assert length(Object.get_by_id(object.id).data["likes"]) == 1
+ assert is_map(Object.get_by_id(object2.id).data["likes"])
+
+ assert :ok == Mix.Tasks.Pleroma.Database.run(["fix_likes_collections"])
+
+ assert length(Object.get_by_id(object.id).data["likes"]) == 1
+ assert Enum.empty?(Object.get_by_id(object2.id).data["likes"])
+ end
+ end
end