# Pleroma: A lightweight social networking server # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.DatabaseTest do alias Pleroma.Repo alias Pleroma.User use Pleroma.DataCase import Pleroma.Factory setup_all do Mix.shell(Mix.Shell.Process) on_exit(fn -> Mix.shell(Mix.Shell.IO) end) :ok end describe "running update_users_following_followers_counts" do test "following and followers count are updated" do [user, user2] = insert_pair(:user) {:ok, %User{following: following, info: info} = user} = User.follow(user, user2) assert length(following) == 2 assert info.follower_count == 0 info_cng = Ecto.Changeset.change(info, %{follower_count: 3}) {:ok, user} = user |> Ecto.Changeset.change(%{following: following ++ following}) |> Ecto.Changeset.put_embed(:info, info_cng) |> Repo.update() assert length(user.following) == 4 assert user.info.follower_count == 3 assert :ok == Mix.Tasks.Pleroma.Database.run(["update_users_following_followers_counts"]) user = User.get_by_id(user.id) assert length(user.following) == 2 assert user.info.follower_count == 0 end end end