commit: 0d05ec385587e7a5efd0e3a36f5c783d78b4eea2
parent: 488c06b6f5d09111733c208bd1187b91297aa9ab
Author: kaniini <ariadne@dereferenced.org>
Date: Sun, 28 Jul 2019 20:29:27 +0000
Merge branch 'fix/user_update_and_set_cache' into 'develop'
fixed User.update_and_set_cache for stale user
See merge request pleroma/pleroma!1493
Diffstat:
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
@@ -471,7 +471,7 @@ defmodule Pleroma.User do
end
def update_and_set_cache(changeset) do
- with {:ok, user} <- Repo.update(changeset) do
+ with {:ok, user} <- Repo.update(changeset, stale_error_field: :id) do
set_cache(user)
else
e -> e
diff --git a/test/user_test.exs b/test/user_test.exs
@@ -1369,4 +1369,28 @@ defmodule Pleroma.UserTest do
assert User.is_internal_user?(user)
end
end
+
+ describe "update_and_set_cache/1" do
+ test "returns error when user is stale instead Ecto.StaleEntryError" do
+ user = insert(:user)
+
+ changeset = Ecto.Changeset.change(user, bio: "test")
+
+ Repo.delete(user)
+
+ assert {:error, %Ecto.Changeset{errors: [id: {"is stale", [stale: true]}], valid?: false}} =
+ User.update_and_set_cache(changeset)
+ end
+
+ test "performs update cache if user updated" do
+ user = insert(:user)
+ assert {:ok, nil} = Cachex.get(:user_cache, "ap_id:#{user.ap_id}")
+
+ changeset = Ecto.Changeset.change(user, bio: "test-bio")
+
+ assert {:ok, %User{bio: "test-bio"} = user} = User.update_and_set_cache(changeset)
+ assert {:ok, user} = Cachex.get(:user_cache, "ap_id:#{user.ap_id}")
+ assert %User{bio: "test-bio"} = User.get_cached_by_ap_id(user.ap_id)
+ end
+ end
end