[#502] Fixed User.active_local_user_query to return users with nil or missing `info...
authorIvan Tashkinov <ivantashkinov@gmail.com>
Tue, 22 Jan 2019 14:12:53 +0000 (17:12 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Tue, 22 Jan 2019 14:12:53 +0000 (17:12 +0300)
lib/pleroma/user.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 06084b117404003b7bccf75006f3584c38be1e93..18137106e1643b2cb6c1df4541900f85d59fbb67 100644 (file)
@@ -901,7 +901,7 @@ defmodule Pleroma.User do
   def active_local_user_query do
     from(
       u in local_user_query(),
-      where: fragment("?->'deactivated' @> 'false'", u.info)
+      where: fragment("not (?->'deactivated' @> 'true')", u.info)
     )
   end
 
index dd84052a37c9820608c8d39a948c7a56758d2d85..8443dc856ba420d592f4279e083e4b05fbb3bf62 100644 (file)
@@ -10,6 +10,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
   alias Pleroma.Web.{OStatus, CommonAPI}
   alias Pleroma.Web.ActivityPub.ActivityPub
   alias Pleroma.Web.MastodonAPI.FilterView
+  alias Ecto.Changeset
   import Pleroma.Factory
   import ExUnit.CaptureLog
   import Tesla.Mock
@@ -1483,6 +1484,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
 
     {:ok, _} = TwitterAPI.create_status(user, %{"status" => "cofe"})
 
+    # Stats should count users with missing or nil `info.deactivated` value
+    user = Repo.get(User, user.id)
+    info_change = Changeset.change(user.info, %{deactivated: nil})
+
+    {:ok, _user} =
+      user
+      |> Changeset.change()
+      |> Changeset.put_embed(:info, info_change)
+      |> User.update_and_set_cache()
+
     Pleroma.Stats.update_stats()
 
     conn = get(conn, "/api/v1/instance")